function date_range_years

cis7 date_api.module date_range_years($string, $date = NULL)
cle7 date_api.module date_range_years($string, $date = NULL)
elmsmedia7 date_api.module date_range_years($string, $date = NULL)
icor7 date_api.module date_range_years($string, $date = NULL)
meedjum_blog7 date_api.module date_range_years($string, $date = NULL)
mooc7 date_api.module date_range_years($string, $date = NULL)

Splits a string like -3:+3 or 2001:2010 into an array of min and max years.

Center the range around the current year, if any, but expand it far enough so it will pick up the year value in the field in case the value in the field is outside the initial range.

Parameters

string $string: A min and max year string like '-3:+1'.

object $date: (optional) A date object. Defaults to NULL.

Return value

array A numerically indexed array, containing a minimum and maximum year.

4 calls to date_range_years()
date_parts_element in sites/all/modules/ulmus/date/date_api/date_api_elements.inc
Creates form elements for one or more date parts.
date_popup_process_date_part in sites/all/modules/ulmus/date/date_popup/date_popup.module
Process the date portion of the element.
date_views_argument_handler_simple::date_forbid in sites/all/modules/ulmus/date/date_views/includes/date_views_argument_handler_simple.inc
Add a callback to determine if we have moved outside the valid date range for this argument.
date_views_plugin_pager::date_forbid in sites/all/modules/ulmus/date/date_views/includes/date_views_plugin_pager.inc
Add a callback to determine if we have moved outside the valid date range for this argument.

File

sites/all/modules/ulmus/date/date_api/date_api.module, line 2447
This module will make the date API available to other modules. Designed to provide a light but flexible assortment of functions and constants, with more functionality in additional files that are not loaded unless other modules specifically include them.

Code

function date_range_years($string, $date = NULL) {
  $this_year = date_format(date_now(), 'Y');
  list($min_year, $max_year) = explode(':', $string);

  // Valid patterns would be -5:+5, 0:+1, 2008:2010.
  $plus_pattern = '@[\+|\-][0-9]{1,4}@';
  $year_pattern = '@^[0-9]{4}@';
  if (!preg_match($year_pattern, $min_year, $matches)) {
    if (preg_match($plus_pattern, $min_year, $matches)) {
      $min_year = $this_year + $matches[0];
    }
    else {
      $min_year = $this_year;
    }
  }
  if (!preg_match($year_pattern, $max_year, $matches)) {
    if (preg_match($plus_pattern, $max_year, $matches)) {
      $max_year = $this_year + $matches[0];
    }
    else {
      $max_year = $this_year;
    }
  }
  // We expect the $min year to be less than the $max year.
  // Some custom values for -99:+99 might not obey that.
  if ($min_year > $max_year) {
    $temp = $max_year;
    $max_year = $min_year;
    $min_year = $temp;
  }
  // If there is a current value, stretch the range to include it.
  $value_year = is_object($date) ? $date->format('Y') : '';
  if (!empty($value_year)) {
    $min_year = min($value_year, $min_year);
    $max_year = max($value_year, $max_year);
  }
  return array($min_year, $max_year);
}
Error | ELMSLN API

Error

×

Error message

  • Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/elmsln_community/api.elmsln.org/includes/common.inc:2791) in drupal_send_headers() (line 1499 of /var/www/html/elmsln_community/api.elmsln.org/includes/bootstrap.inc).
  • Error: Call to undefined function apc_delete() in DrupalAPCCache->clear() (line 289 of /var/www/html/elmsln_community/api.elmsln.org/sites/all/modules/apc/drupal_apc_cache.inc).
The website encountered an unexpected error. Please try again later.