function calendar_systems_format_date in Calendar Systems 7.2
Same name and namespace in other branches
- 8 calendar_systems.module \calendar_systems_format_date()
- 5 calendar_systems.module \calendar_systems_format_date()
- 6.3 calendar_systems.module \calendar_systems_format_date()
- 6 calendar_systems.module \calendar_systems_format_date()
- 6.2 calendar_systems.module \calendar_systems_format_date()
- 7.3 calendar_systems.module \calendar_systems_format_date()
- 7 calendar_systems.module \calendar_systems_format_date()
Simulating core format_date in case the patch wasn't applied Formats a date, using a date type or a custom date format string.
Parameters
$timestamp: A UNIX timestamp to format.
$type: (optional) The format to use, one of:
- 'short', 'medium', or 'long' (the corresponding built-in date formats).
- The name of a date type defined by a module in hook_date_format_types(), if it's been assigned a format.
- The machine name of an administrator-defined date format.
- 'custom', to use $format.
Defaults to 'medium'.
$format: (optional) If $type is 'custom', a PHP date format string suitable for input to date(). Use a backslash to escape ordinary text, so it does not get interpreted as date format characters.
$timezone: (optional) Time zone identifier, as described at http://php.net/manual/timezones.php Defaults to the time zone used to display the page.
$langcode: (optional) Language code to translate to. Defaults to the language used to display the page.
Return value
A translated date string in the requested format.
5 calls to calendar_systems_format_date()
- calendar_systems_add_js_date_picker in ./
calendar_systems.module - Add javascript date picker for a field or set of fields
- calendar_systems_attach_js_date_picker in ./
calendar_systems.module - calendar_systems_date_popup_process_alter in ./
calendar_systems.module - Supporing date module's date_popup element hook_date_popup_process_alter
- calendar_systems_date_text_process_alter in ./
calendar_systems.module - Supporing date module's date_text element hook_date_text_process_alter
- calendar_systems_preprocess_content_field in ./
calendar_systems.module - For basic integration with views
File
- ./
calendar_systems.module, line 147 - Contains Calendar Systems hook implementations and helpers.
Code
function calendar_systems_format_date($timestamp, $type = 'medium', $format = '', $timezone = NULL, $langcode = NULL) {
if (_calendar_systems_is_patch_applied()) {
return format_date($timestamp, $type, $format, $timezone, $langcode);
}
// Use the advanced drupal_static() pattern, since this is called very often.
static $drupal_static_fast;
if (!isset($drupal_static_fast)) {
$drupal_static_fast['timezones'] =& drupal_static(__FUNCTION__);
}
$timezones =& $drupal_static_fast['timezones'];
if (!isset($timezone)) {
$timezone = date_default_timezone_get();
}
// Store DateTimeZone objects in an array rather than repeatedly
// constructing identical objects over the life of a request.
if (!isset($timezones[$timezone])) {
$timezones[$timezone] = timezone_open($timezone);
}
// Use the default langcode if none is set.
global $language;
if (empty($langcode)) {
$langcode = isset($language->language) ? $language->language : 'en';
}
switch ($type) {
case 'short':
$format = variable_get('date_format_short', 'm/d/Y - H:i');
break;
case 'long':
$format = variable_get('date_format_long', 'l, F j, Y - H:i');
break;
case 'custom':
// No change to format.
break;
case 'medium':
default:
// Retrieve the format of the custom $type passed.
if ($type != 'medium') {
$format = variable_get('date_format_' . $type, '');
}
// Fall back to 'medium'.
if ($format === '') {
$format = variable_get('date_format_medium', 'D, m/d/Y - H:i');
}
break;
}
// Create a DateTime object from the timestamp.
$date_time = date_create('@' . $timestamp);
// Set the time zone for the DateTime object.
date_timezone_set($date_time, $timezones[$timezone]);
// Encode markers that should be translated. 'A' becomes '\xEF\AA\xFF'.
// xEF and xFF are invalid UTF-8 sequences, and we assume they are not in the
// input string.
// Paired backslashes are isolated to prevent errors in read-ahead evaluation.
// The read-ahead expression ensures that A matches, but not \A.
$original_format = $format;
$format = preg_replace(array(
'/\\\\\\\\/',
'/(?<!\\\\)([AaeDlMTF])/',
), array(
"",
"",
), $format);
// Call date_format().
$formatted_date = date_format($date_time, $format);
// Pass the langcode to _format_date_callback().
_format_date_callback(NULL, $langcode);
// Translate the marked sequences.
$formatted_date = preg_replace_callback('/\\xEF([AaeDlMTF]?)(.*?)\\xFF/', '_format_date_callback', $formatted_date);
// Allow modules to alter the result.
$context = array(
'date_time' => $date_time,
'timestamp' => $timestamp,
'type' => $type,
'format' => $original_format,
'timezone' => $timezone,
'langcode' => $langcode,
);
drupal_alter('format_date', $formatted_date, $context);
return filter_xss_admin($formatted_date);
}