/** * Formats a datetime object into a specified format and handles translations. * Used by * * * {@see `eo_get_the_start()`} * * {@see `eo_get_the_end()`} * * {@see `eo_get_schedule_start()`} * * {@see `eo_get_schedule_last()`} * * The constant DATETIMEOBJ can be passed to them to get datetime objects * Applies {@see `eventorganiser_format_datetime`} filter * * @since 1.2.0 * @link http://php.net/manual/en/function.date.php PHP Date * * @param dateTime $datetime The datetime to format * @param string|constant $format How to format the date, see http://php.net/manual/en/function.date.php or DATETIMEOBJ constant to return the datetime object. * @return string|dateTime The formatted date */ function eo_format_datetime($datetime, $format = 'd-m-Y') { global $wp_locale; if (DATETIMEOBJ == $format) { return $datetime; } if (!empty($wp_locale->month) && !empty($wp_locale->weekday)) { //Translate $datemonth = $wp_locale->get_month($datetime->format('m')); $datemonth_abbrev = $wp_locale->get_month_abbrev($datemonth); $dateweekday = $wp_locale->get_weekday($datetime->format('w')); $dateweekday_abbrev = $wp_locale->get_weekday_abbrev($dateweekday); $datemeridiem = trim($wp_locale->get_meridiem($datetime->format('a'))); $datemeridiem_capital = $wp_locale->get_meridiem($datetime->format('A')); $datemeridiem = empty($datemeridiem) ? $datetime->format('a') : $datemeridiem; $dateformatstring = ' ' . $format; $dateformatstring = preg_replace("/([^\\\\])D/", "\\1" . backslashit($dateweekday_abbrev), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])F/", "\\1" . backslashit($datemonth), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])l/", "\\1" . backslashit($dateweekday), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])M/", "\\1" . backslashit($datemonth_abbrev), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])a/", "\\1" . backslashit($datemeridiem), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])A/", "\\1" . backslashit($datemeridiem_capital), $dateformatstring); $dateformatstring = substr($dateformatstring, 1, strlen($dateformatstring) - 1); } $formatted_datetime = $datetime->format($dateformatstring); return apply_filters('eventorganiser_format_datetime', $formatted_datetime, $format, $datetime); }
function amr_date_i18n($dateformatstring, $dateobj = null) { global $wp_locale; // store original value for language with untypical grammars // see http://core.trac.wordpress.org/ticket/9396 $req_format = $dateformatstring; //$datefunc = 'date'; if (!empty($wp_locale->month) && !empty($wp_locale->weekday)) { $datemonth = $wp_locale->get_month($dateobj->format('m')); $datemonth_abbrev = $wp_locale->get_month_abbrev($datemonth); $w = $dateobj->format('w'); if ($w == '-1') { $w = get_oldweekdays($dateobj); } /* php seems to break around 1760 and google passed a zero year date */ $dateweekday = $wp_locale->get_weekday($w); $dateweekday_abbrev = $wp_locale->get_weekday_abbrev($dateweekday); $datemeridiem = $wp_locale->get_meridiem($dateobj->format('a')); $datemeridiem_capital = $wp_locale->get_meridiem($dateobj->format('A')); $dateformatstring = ' ' . $dateformatstring; $dateformatstring = preg_replace("/([^\\\\])D/", "\\1" . backslashit($dateweekday_abbrev), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])F/", "\\1" . backslashit($datemonth), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])l/", "\\1" . backslashit($dateweekday), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])M/", "\\1" . backslashit($datemonth_abbrev), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])a/", "\\1" . backslashit($datemeridiem), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])A/", "\\1" . backslashit($datemeridiem_capital), $dateformatstring); $dateformatstring = substr($dateformatstring, 1, strlen($dateformatstring) - 1); } $j = $dateobj->format($dateformatstring); // allow plugins to redo this entirely for languages with untypical grammars $j = apply_filters('amr_date_i18n', $j, $req_format, $dateobj); return $j; }
function date_i18n($dateformatstring, $unixtimestamp) { global $month, $weekday; $i = $unixtimestamp; if ((!empty($month)) && (!empty($weekday))) { $datemonth = $month[date('m', $i)]; $dateweekday = $weekday[date('w', $i)]; $dateformatstring = ' '.$dateformatstring; $dateformatstring = preg_replace("/([^\\\])D/", "\\1".backslashit(substr($dateweekday, 0, 3)), $dateformatstring); $dateformatstring = preg_replace("/([^\\\])F/", "\\1".backslashit($datemonth), $dateformatstring); $dateformatstring = preg_replace("/([^\\\])l/", "\\1".backslashit($dateweekday), $dateformatstring); $dateformatstring = preg_replace("/([^\\\])M/", "\\1".backslashit(substr($datemonth, 0, 3)), $dateformatstring); $dateformatstring = substr($dateformatstring, 1, strlen($dateformatstring)-1); } $j = @date($dateformatstring, $i); return $j; }
function date_i18n($dateformatstring, $unixtimestamp) { $i = $unixtimestamp; $month = get_month_names('long'); $month_abbrev = get_month_names('short'); $weekday = get_day_names('long'); $weekday_abbrev = get_day_names('short'); if (!empty($month) && !empty($weekday)) { $datemonth = $month[intVal(date('m', $i))]; $datemonth_abbrev = $month_abbrev[intVal(date('m', $i))]; $dateweekday = $weekday[intVal(date('w', $i))]; $dateweekday_abbrev = $weekday_abbrev[intVal(date('m', $i))]; $dateformatstring = ' ' . $dateformatstring; $dateformatstring = preg_replace("/([^\\\\])D/", "\\1" . backslashit($dateweekday_abbrev), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])F/", "\\1" . backslashit($datemonth), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])l/", "\\1" . backslashit($dateweekday), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])M/", "\\1" . backslashit($datemonth_abbrev), $dateformatstring); $dateformatstring = substr($dateformatstring, 1, strlen($dateformatstring) - 1); } $j = @date($dateformatstring, $i); return $j; }
function action_latex() { global $page, $pagestore, $ParseEngine, $DisplayEngine, $HTTP_IF_MODIFIED_SINCE; global $version; $pg = $pagestore->page($page); if ($version != '') { $pg->version = $version; } $pg->read(); // if(!empty($HTTP_IF_MODIFIED_SINCE)) // { if_modified($pg->time); } // gen_headers($pg->time); // $pg->text is the raw stuff from the database // print $pg->text; // $DisplayEngine indicates what functions will be used to translate wiki // markup elements into actual HTML. See parse/html.php $DisplayEngine = array('bold_start' => 'latex_bold_start', 'bold_end' => 'latex_bold_end', 'italic_start' => 'latex_italic_start', 'italic_end' => 'latex_italic_end', 'tt_start' => 'latex_tt_start', 'tt_end' => 'latex_tt_end', 'head_start' => 'latex_head_start', 'head_end' => 'latex_head_end', 'newline' => 'latex_newline', 'ref' => 'latex_ref', 'url' => 'latex_url', 'interwiki' => 'latex_interwiki', 'raw' => 'latex_raw', 'code' => 'latex_code', 'hr' => 'latex_hr', 'nowiki' => 'latex_nowiki', 'bullet_list_start' => 'latex_ul_start', 'bullet_list_end' => 'latex_ul_end', 'bullet_item_start' => 'latex_li_start', 'bullet_item_end' => 'latex_li_end', 'indent_list_start' => 'latex_dl_start', 'indent_list_end' => 'latex_dl_end', 'indent_item_start' => 'latex_dd_start', 'indent_item_end' => 'latex_dd_end', 'numbered_list_start' => 'latex_ol_start', 'numbered_list_end' => 'latex_ol_end', 'numbered_item_start' => 'latex_li_start', 'numbered_item_end' => 'latex_li_end', 'diff_old_start' => 'latex_diff_old_start', 'diff_old_end' => 'latex_diff_end', 'diff_new_start' => 'latex_diff_new_start', 'diff_new_end' => 'latex_diff_end', 'diff_change' => 'latex_diff_change', 'diff_add' => 'latex_diff_add', 'diff_delete' => 'latex_diff_delete'); $rawtext = $pg->text; $parseText = parseText($rawtext, $ParseEngine, "OBJECTNAMEHERE"); $newtext = backslashit($parseText); template_view($page, $newtext); }
/** * Formats a datetime object into a specified format and handles translations. * Used by * * * {@see `eo_get_the_start()`} * * {@see `eo_get_the_end()`} * * {@see `eo_get_schedule_start()`} * * {@see `eo_get_schedule_last()`} * * The constant DATETIMEOBJ can be passed to them to get datetime objects * Applies {@see `eventorganiser_format_datetime`} filter * * @since 1.2.0 * @link https://php.net/manual/en/function.date.php PHP Date * * @param dateTime $datetime The datetime to format * @param string|constant $format How to format the date, see https://php.net/manual/en/function.date.php or DATETIMEOBJ constant to return the datetime object. * @return string|dateTime The formatted date */ function eo_format_datetime($datetime, $format = 'd-m-Y') { global $wp_locale; if (DATETIMEOBJ == $format) { return $datetime; } if (!empty($wp_locale->month) && !empty($wp_locale->weekday)) { //Translate $datemonth = $wp_locale->get_month($datetime->format('m')); $datemonth_abbrev = $wp_locale->get_month_abbrev($datemonth); $dateweekday = $wp_locale->get_weekday($datetime->format('w')); $dateweekday_abbrev = $wp_locale->get_weekday_abbrev($dateweekday); $datemeridiem = trim($wp_locale->get_meridiem($datetime->format('a'))); $datemeridiem_capital = $wp_locale->get_meridiem($datetime->format('A')); $datemeridiem = empty($datemeridiem) ? $datetime->format('a') : $datemeridiem; $dateformatstring = ' ' . $format; $dateformatstring = preg_replace("/([^\\\\])D/", "\\1" . backslashit($dateweekday_abbrev), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])F/", "\\1" . backslashit($datemonth), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])l/", "\\1" . backslashit($dateweekday), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])M/", "\\1" . backslashit($datemonth_abbrev), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])a/", "\\1" . backslashit($datemeridiem), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])A/", "\\1" . backslashit($datemeridiem_capital), $dateformatstring); $dateformatstring = substr($dateformatstring, 1, strlen($dateformatstring) - 1); } $formatted_datetime = $datetime->format($dateformatstring); /** * Filters the formatted date (DateTime object). * * Formats should be specified using [php date format standards](https://php.net/manual/en/function.date.php). * * @link https://php.net/manual/en/function.date.php PHP date formatting standard * @param string $formatted_datetime The formatted date. * @param string $format The format in which the date should be returned. * @param string $datetime The provided DateTime object */ $formatted_datetime = apply_filters('eventorganiser_format_datetime', $formatted_datetime, $format, $datetime); return $formatted_datetime; }
function date_i18n($dateformatstring, $unixtimestamp) { global $wp_locale; $i = $unixtimestamp; if (!empty($wp_locale->month) && !empty($wp_locale->weekday)) { $datemonth = $wp_locale->get_month(date('m', $i)); $datemonth_abbrev = $wp_locale->get_month_abbrev($datemonth); $dateweekday = $wp_locale->get_weekday(date('w', $i)); $dateweekday_abbrev = $wp_locale->get_weekday_abbrev($dateweekday); $datemeridiem = $wp_locale->get_meridiem(date('a', $i)); $datemeridiem_capital = $wp_locale->get_meridiem(date('A', $i)); $dateformatstring = ' ' . $dateformatstring; $dateformatstring = preg_replace("/([^\\\\])D/", "\\1" . backslashit($dateweekday_abbrev), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])F/", "\\1" . backslashit($datemonth), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])l/", "\\1" . backslashit($dateweekday), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])M/", "\\1" . backslashit($datemonth_abbrev), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])a/", "\\1" . backslashit($datemeridiem), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])A/", "\\1" . backslashit($datemeridiem_capital), $dateformatstring); $dateformatstring = substr($dateformatstring, 1, strlen($dateformatstring) - 1); } $j = @date($dateformatstring, $i); return $j; }
/** * Retrieve the date in localized format, based on timestamp. * * If the locale specifies the locale month and weekday, then the locale will * take over the format for the date. If it isn't, then the date format string * will be used instead. * * @since 0.71 * * @param string $dateformatstring Format to display the date * @param int $unixtimestamp Unix timestamp * @return string The date, translated if locale specifies it. */ function date_i18n($dateformatstring, $unixtimestamp = false, $gmt = false) { global $wp_locale; $i = $unixtimestamp; // Sanity check for PHP 5.1.0- if (false === $i || intval($i) < 0) { if (!$gmt) { $i = current_time('timestamp'); } else { $i = time(); } // we should not let date() interfere with our // specially computed timestamp $gmt = true; } $datefunc = $gmt ? 'gmdate' : 'date'; if (!empty($wp_locale->month) && !empty($wp_locale->weekday)) { $datemonth = $wp_locale->get_month($datefunc('m', $i)); $datemonth_abbrev = $wp_locale->get_month_abbrev($datemonth); $dateweekday = $wp_locale->get_weekday($datefunc('w', $i)); $dateweekday_abbrev = $wp_locale->get_weekday_abbrev($dateweekday); $datemeridiem = $wp_locale->get_meridiem($datefunc('a', $i)); $datemeridiem_capital = $wp_locale->get_meridiem($datefunc('A', $i)); $dateformatstring = ' ' . $dateformatstring; $dateformatstring = preg_replace("/([^\\\\])D/", "\\1" . backslashit($dateweekday_abbrev), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])F/", "\\1" . backslashit($datemonth), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])l/", "\\1" . backslashit($dateweekday), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])M/", "\\1" . backslashit($datemonth_abbrev), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])a/", "\\1" . backslashit($datemeridiem), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])A/", "\\1" . backslashit($datemeridiem_capital), $dateformatstring); $dateformatstring = substr($dateformatstring, 1, strlen($dateformatstring) - 1); } $j = @$datefunc($dateformatstring, $i); return $j; }
/** * Retrieve the date in localized format, based on timestamp. * * If the locale specifies the locale month and weekday, then the locale will * take over the format for the date. If it isn't, then the date format string * will be used instead. * * @since 0.71 * * @global WP_Locale $wp_locale * * @param string $dateformatstring Format to display the date. * @param bool|int $unixtimestamp Optional. Unix timestamp. Default false. * @param bool $gmt Optional. Whether to use GMT timezone. Default false. * * @return string The date, translated if locale specifies it. */ function date_i18n($dateformatstring, $unixtimestamp = false, $gmt = false) { global $wp_locale; $i = $unixtimestamp; if (false === $i) { if (!$gmt) { $i = current_time('timestamp'); } else { $i = time(); } // we should not let date() interfere with our // specially computed timestamp $gmt = true; } /* * Store original value for language with untypical grammars. * See https://core.trac.wordpress.org/ticket/9396 */ $req_format = $dateformatstring; $datefunc = $gmt ? 'gmdate' : 'date'; if (!empty($wp_locale->month) && !empty($wp_locale->weekday)) { $datemonth = $wp_locale->get_month($datefunc('m', $i)); $datemonth_abbrev = $wp_locale->get_month_abbrev($datemonth); $dateweekday = $wp_locale->get_weekday($datefunc('w', $i)); $dateweekday_abbrev = $wp_locale->get_weekday_abbrev($dateweekday); $datemeridiem = $wp_locale->get_meridiem($datefunc('a', $i)); $datemeridiem_capital = $wp_locale->get_meridiem($datefunc('A', $i)); $dateformatstring = ' ' . $dateformatstring; $dateformatstring = preg_replace("/([^\\\\])D/", "\\1" . backslashit($dateweekday_abbrev), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])F/", "\\1" . backslashit($datemonth), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])l/", "\\1" . backslashit($dateweekday), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])M/", "\\1" . backslashit($datemonth_abbrev), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])a/", "\\1" . backslashit($datemeridiem), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])A/", "\\1" . backslashit($datemeridiem_capital), $dateformatstring); $dateformatstring = substr($dateformatstring, 1, strlen($dateformatstring) - 1); } $timezone_formats = array('P', 'I', 'O', 'T', 'Z', 'e'); $timezone_formats_re = implode('|', $timezone_formats); if (preg_match("/{$timezone_formats_re}/", $dateformatstring)) { $timezone_string = get_option('timezone_string'); if ($timezone_string) { $timezone_object = timezone_open($timezone_string); $date_object = date_create(null, $timezone_object); foreach ($timezone_formats as $timezone_format) { if (false !== strpos($dateformatstring, $timezone_format)) { $formatted = date_format($date_object, $timezone_format); $dateformatstring = ' ' . $dateformatstring; $dateformatstring = preg_replace("/([^\\\\]){$timezone_format}/", "\\1" . backslashit($formatted), $dateformatstring); $dateformatstring = substr($dateformatstring, 1, strlen($dateformatstring) - 1); } } } } $j = @$datefunc($dateformatstring, $i); /** * Filter the date formatted based on the locale. * * @since 2.8.0 * * @param string $j Formatted date string. * @param string $req_format Format to display the date. * @param int $i Unix timestamp. * @param bool $gmt Whether to convert to GMT for time. Default false. */ $j = apply_filters('date_i18n', $j, $req_format, $i, $gmt); return $j; }
function date_i18n($dateformatstring, $unixtimestamp, $charset = "") { if (!empty($GLOBALS['month']) && !empty($GLOBALS['weekday'])) { $datemonth = $GLOBALS['month'][date('m', $unixtimestamp)]; $dateweekday = $GLOBALS['weekday'][date('w', $unixtimestamp)]; $dateformatstring = ' ' . $dateformatstring; $dateformatstring = preg_replace("/([^\\\\])D/", "\\1" . backslashit(mb_substring($dateweekday, 0, $GLOBALS['s_weekday_length'], $charset)), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])F/", "\\1" . backslashit($datemonth), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])l/", "\\1" . backslashit($dateweekday), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])M/", "\\1" . backslashit(mb_substring($datemonth, 0, $GLOBALS['s_month_length'], $charset)), $dateformatstring); $dateformatstring = substr($dateformatstring, 1, strlen($dateformatstring) - 1); } $j = @date($dateformatstring, $unixtimestamp); return $j; }
/** * Retrieve the date in localized format, based on timestamp. * * If the locale specifies the locale month and weekday, then the locale will * take over the format for the date. If it isn't, then the date format string * will be used instead. * * @since 0.71 * * @param string $dateformatstring Format to display the date. * @param int $unixtimestamp Optional. Unix timestamp. * @param bool $gmt Optional, default is false. Whether to convert to GMT for time. * @return string The date, translated if locale specifies it. */ function date_i18n($dateformatstring, $unixtimestamp = false, $gmt = false) { global $wp_locale; $i = $unixtimestamp; // Sanity check for PHP 5.1.0- if (false === $i || intval($i) < 0) { if (!$gmt) { $i = current_time('timestamp'); } else { $i = time(); } // we should not let date() interfere with our // specially computed timestamp $gmt = true; } // store original value for language with untypical grammars // see http://core.trac.wordpress.org/ticket/9396 $req_format = $dateformatstring; $datefunc = $gmt ? 'gmdate' : 'date'; if (!empty($wp_locale->month) && !empty($wp_locale->weekday)) { $datemonth = $wp_locale->get_month($datefunc('m', $i)); $datemonth_abbrev = $wp_locale->get_month_abbrev($datemonth); $dateweekday = $wp_locale->get_weekday($datefunc('w', $i)); $dateweekday_abbrev = $wp_locale->get_weekday_abbrev($dateweekday); $datemeridiem = $wp_locale->get_meridiem($datefunc('a', $i)); $datemeridiem_capital = $wp_locale->get_meridiem($datefunc('A', $i)); $dateformatstring = ' ' . $dateformatstring; $dateformatstring = preg_replace("/([^\\\\])D/", "\\1" . backslashit($dateweekday_abbrev), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])F/", "\\1" . backslashit($datemonth), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])l/", "\\1" . backslashit($dateweekday), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])M/", "\\1" . backslashit($datemonth_abbrev), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])a/", "\\1" . backslashit($datemeridiem), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])A/", "\\1" . backslashit($datemeridiem_capital), $dateformatstring); $dateformatstring = substr($dateformatstring, 1, strlen($dateformatstring) - 1); } $j = @$datefunc($dateformatstring, $i); // allow plugins to redo this entirely for languages with untypical grammars $j = apply_filters('date_i18n', $j, $req_format, $i, $gmt); return $j; }
function post_notification_date_i18n_tz($dateformatstring, $unixtimestamp) { // In case the Time Zone plugin is installed, date() is working correctly. // Let it do its work. // if (class_exists('TimeZone')) { return date_i18n($dateformatstring, $unixtimestamp); } // Else, we cannot rely on date() and must revert to gmdate(). We assume // that no daylight saving takes part. Else, install the plugin from // http://kimmo.suominen.com/sw/timezone/ using (or not) the patches from // http://www.philippusdo.de/technische-informationen/ . // global $wp_locale; $i = $unixtimestamp + get_option('gmt_offset') * 3600; if (!empty($wp_locale->month) && !empty($wp_locale->weekday)) { $datemonth = $wp_locale->get_month(gmdate('m', $i)); $datemonth_abbrev = $wp_locale->get_month_abbrev($datemonth); $dateweekday = $wp_locale->get_weekday(gmdate('w', $i)); $dateweekday_abbrev = $wp_locale->get_weekday_abbrev($dateweekday); $datemeridiem = $wp_locale->get_meridiem(gmdate('a', $i)); $datemeridiem_capital = $wp_locale->get_meridiem(gmdate('A', $i)); $dateformatstring = ' ' . $dateformatstring; $dateformatstring = preg_replace("/([^\\\\])D/", "\\1" . backslashit($dateweekday_abbrev), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])F/", "\\1" . backslashit($datemonth), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])l/", "\\1" . backslashit($dateweekday), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])M/", "\\1" . backslashit($datemonth_abbrev), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])a/", "\\1" . backslashit($datemeridiem), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])A/", "\\1" . backslashit($datemeridiem_capital), $dateformatstring); $dateformatstring = substr($dateformatstring, 1); } $j = @gmdate($dateformatstring, $i); return $j; }
/** * Retrieve the date in localized format, based on timestamp. * * If the locale specifies the locale month and weekday, then the locale will * take over the format for the date. If it isn't, then the date format string * will be used instead. * * @since 0.71 * * @param string $dateformatstring Format to display the date. * @param int $unixtimestamp Optional. Unix timestamp. * @param bool $gmt Optional, default is false. Whether to convert to GMT for time. * @return string The date, translated if locale specifies it. */ function date_i18n( $dateformatstring, $unixtimestamp = false, $gmt = false ) { global $wp_locale; $i = $unixtimestamp; if ( false === $i ) { if ( ! $gmt ) $i = current_time( 'timestamp' ); else $i = time(); // we should not let date() interfere with our // specially computed timestamp $gmt = true; } // store original value for language with untypical grammars // see http://core.trac.wordpress.org/ticket/9396 $req_format = $dateformatstring; $datefunc = $gmt? 'gmdate' : 'date'; if ( ( !empty( $wp_locale->month ) ) && ( !empty( $wp_locale->weekday ) ) ) { $datemonth = $wp_locale->get_month( $datefunc( 'm', $i ) ); $datemonth_abbrev = $wp_locale->get_month_abbrev( $datemonth ); $dateweekday = $wp_locale->get_weekday( $datefunc( 'w', $i ) ); $dateweekday_abbrev = $wp_locale->get_weekday_abbrev( $dateweekday ); $datemeridiem = $wp_locale->get_meridiem( $datefunc( 'a', $i ) ); $datemeridiem_capital = $wp_locale->get_meridiem( $datefunc( 'A', $i ) ); $dateformatstring = ' '.$dateformatstring; $dateformatstring = preg_replace( "/([^\\\])D/", "\\1" . backslashit( $dateweekday_abbrev ), $dateformatstring ); $dateformatstring = preg_replace( "/([^\\\])F/", "\\1" . backslashit( $datemonth ), $dateformatstring ); $dateformatstring = preg_replace( "/([^\\\])l/", "\\1" . backslashit( $dateweekday ), $dateformatstring ); $dateformatstring = preg_replace( "/([^\\\])M/", "\\1" . backslashit( $datemonth_abbrev ), $dateformatstring ); $dateformatstring = preg_replace( "/([^\\\])a/", "\\1" . backslashit( $datemeridiem ), $dateformatstring ); $dateformatstring = preg_replace( "/([^\\\])A/", "\\1" . backslashit( $datemeridiem_capital ), $dateformatstring ); $dateformatstring = substr( $dateformatstring, 1, strlen( $dateformatstring ) -1 ); } $timezone_formats = array( 'P', 'I', 'O', 'T', 'Z', 'e' ); $timezone_formats_re = implode( '|', $timezone_formats ); if ( preg_match( "/$timezone_formats_re/", $dateformatstring ) ) { $timezone_string = get_option( 'timezone_string' ); if ( $timezone_string ) { $timezone_object = timezone_open( $timezone_string ); $date_object = date_create( null, $timezone_object ); foreach( $timezone_formats as $timezone_format ) { if ( false !== strpos( $dateformatstring, $timezone_format ) ) { $formatted = date_format( $date_object, $timezone_format ); $dateformatstring = ' '.$dateformatstring; $dateformatstring = preg_replace( "/([^\\\])$timezone_format/", "\\1" . backslashit( $formatted ), $dateformatstring ); $dateformatstring = substr( $dateformatstring, 1, strlen( $dateformatstring ) -1 ); } } } } $j = @$datefunc( $dateformatstring, $i ); // allow plugins to redo this entirely for languages with untypical grammars $j = apply_filters('date_i18n', $j, $req_format, $i, $gmt); return $j; }
function test_double_backslashes_leading_numbers() { $this->assertEquals("\\\\95", backslashit("95")); }
$dateformatstring = preg_replace("/([^\\\\])l/", "\\1" . backslashit($dateweekday), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])M/", "\\1" . backslashit($datemonth_abbrev), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])a/", "\\1" . backslashit($datemeridiem), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])A/", "\\1" . backslashit($datemeridiem_capital), $dateformatstring); $dateformatstring = substr($dateformatstring, 1, strlen($dateformatstring) - 1); } $timezone_formats = array('P', 'I', 'O', 'T', 'Z', 'e'); $timezone_formats_re = implode('|', $timezone_formats); if (preg_match("/{$timezone_formats_re}/", $dateformatstring)) { $timezone_object = $ns->get_wp_timezone(); $date_object = date_create(null, $timezone_object); foreach ($timezone_formats as $timezone_format) { if (false !== strpos($dateformatstring, $timezone_format)) { $formatted = date_format($date_object, $timezone_format); $dateformatstring = ' ' . $dateformatstring; $dateformatstring = preg_replace("/([^\\\\]){$timezone_format}/", "\\1" . backslashit($formatted), $dateformatstring); $dateformatstring = substr($dateformatstring, 1, strlen($dateformatstring) - 1); } } } return $datetime->format($dateformatstring); }); birch_defn($ns, 'get_day_minutes', function ($datetime) use($ns) { $time = $datetime->format('H') * 60 + $datetime->format('i'); return $time; }); birch_defn($ns, 'has_shortcode', function ($shortcode = NULL) use($ns) { $post_to_check = get_post(get_the_ID()); // false because we have to search through the post content first $found = false; // if no short code was provided, return false
/** https://core.trac.wordpress.org/ticket/25768 * * Modified from the original patch to use the currently set * timezone from PHP, like PHP's date(), and to make the code * more readable. * * @param $j * @param $req_format * @param bool $i * @param bool $gmt * @return bool|string */ function fix_date_i18n($j, $req_format, $i = false, $gmt = false) { /* @var $wp_locale WP_Locale */ global $wp_locale; $timestamp = $i; // get current timestamp if $i is false if (false === $timestamp) { if ($gmt) { $timestamp = time(); } else { $timestamp = current_time('timestamp'); } } // get components of the date (timestamp) as array $date_components = getdate($timestamp); // numeric representation of a month, with leading zeros $date_month = $wp_locale->get_month($date_components['mon']); $date_month_abbrev = $wp_locale->get_month_abbrev($date_month); // numeric representation of the day of the week $date_weekday = $wp_locale->get_weekday($date_components['wday']); $date_weekday_abbrev = $wp_locale->get_weekday_abbrev($date_weekday); // get if hour is Ante meridiem or Post meridiem $meridiem = $date_components['hours'] >= 12 ? 'pm' : 'am'; // lowercase Ante meridiem and Post meridiem hours $date_meridiem = $wp_locale->get_meridiem($meridiem); // uppercase Ante meridiem and Post meridiem $date_meridiem_capital = $wp_locale->get_meridiem(strtoupper($meridiem)); // escape literals $date_weekday_abbrev = backslashit($date_weekday_abbrev); $date_month = backslashit($date_month); $date_weekday = backslashit($date_weekday); $date_month_abbrev = backslashit($date_month_abbrev); $date_meridiem = backslashit($date_meridiem); $date_meridiem_capital = backslashit($date_meridiem_capital); // the translated format string $translated_date_format_string = ''; // the 2 arrays map a format literal to its translation (e. g. 'F' to the escaped month translation) $translate_formats = array('D', 'F', 'l', 'M', 'a', 'A', 'c', 'r'); $translations = array($date_weekday_abbrev, $date_month, $date_weekday, $date_month_abbrev, $date_meridiem, $date_meridiem_capital, 'Y-m-d\\TH:i:sP', sprintf('%s, d %s Y H:i:s O', $date_weekday_abbrev, $date_month_abbrev)); // find each format literal that needs translation and replace it by its translation // respects the escaping // iterate $req_format from ending to beginning for ($i = strlen($req_format) - 1; $i > -1; $i--) { // test if current char is format literal that needs translation $translate_formats_index = array_search($req_format[$i], $translate_formats); if ($translate_formats_index !== false) { // counts the slashes (the escape char) in front of the current char $slashes_counter = 0; // count all slashes left-hand side of the current char for ($j = $i - 1; $j > -1; $j--) { if ($req_format[$j] == '\\') { $slashes_counter++; } else { break; } } // number of slashes is even if ($slashes_counter % 2 == 0) { // current char is not escaped, therefore it is a format literal $translated_date_format_string = $translations[$translate_formats_index] . $translated_date_format_string; } else { // current char is escaped, therefore it is not a format literal, just add it unchanged $translated_date_format_string = $req_format[$i] . $translated_date_format_string; } } else { // current char is no a format literal, just add it unchanged $translated_date_format_string = $req_format[$i] . $translated_date_format_string; } } $req_format = $translated_date_format_string; if ($gmt) { // get GMT date string $date_formatted = gmdate($req_format, $timestamp); } else { // get Wordpress time zone // $timezone_string = get_option('timezone_string'); // Haha, just kidding. Let's get the currently set timezone, as God and Rasmus intended $timezone_string = date_default_timezone_get(); if ($timezone_string) { // create time zone object $timezone_object = timezone_open($timezone_string); // create date object from time zone object $local_date_object = date_create(null, $timezone_object); // set time and date of $local_date_object to $timestamp $date_components = isset($date_components) ? $date_components : getdate($timestamp); date_date_set($local_date_object, $date_components['year'], $date_components['mon'], $date_components['mday']); date_time_set($local_date_object, $date_components['hours'], $date_components['minutes'], $date_components['seconds']); // format date according to the Wordpress time zone $date_formatted = date_format($local_date_object, $req_format); } else { // fall back if no Wordpress time zone set $date_formatted = date($req_format, $i); } } return $date_formatted; }
function gmdate_i18n($dateformatstring, $unixtimestamp) { global $month, $weekday, $month_abbrev, $weekday_abbrev; $i = $unixtimestamp; if (!empty($month) && !empty($weekday)) { $datemonth = $month[date('m', $i)]; $datemonth_abbrev = $month_abbrev[$datemonth]; $dateweekday = $weekday[date('w', $i)]; $dateweekday_abbrev = $weekday_abbrev[$dateweekday]; $dateformatstring = ' ' . $dateformatstring; $dateformatstring = preg_replace("/([^\\\\])D/", "\${1}" . backslashit($dateweekday_abbrev), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])F/", "\${1}" . backslashit($datemonth), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])l/", "\${1}" . backslashit($dateweekday), $dateformatstring); $dateformatstring = preg_replace("/([^\\\\])M/", "\${1}" . backslashit($datemonth_abbrev), $dateformatstring); $dateformatstring = substr($dateformatstring, 1, strlen($dateformatstring) - 1); } $j = @gmdate($dateformatstring, $i); return $j; }