
Comparing changes: https://github.com/smarty-php/smarty/compare/v4.3.1...v4.4.1 It is noticeable that Smarty 4.3.1 does not officially support PHP 8.3. Is only supported with 4.4.0. Remark: During tests with Smarty 4.5.1, it was noticed that the following warning occurs: Deprecated: Using the unregistered function "function_exists" in a template is deprecated and will be removed in a future version. Use Smarty::registerPlugin to explicitly register a custom modifier. As of Smarty 5.X.X, templates must be revised again. The Smarty release 5.0.2 is already officially available. However, integration into FlatPress is not entirely trivial.
87 lines
2.7 KiB
PHP
87 lines
2.7 KiB
PHP
<?php
|
|
/**
|
|
* Smarty plugin
|
|
*
|
|
* @package Smarty
|
|
* @subpackage PluginsModifier
|
|
*/
|
|
/**
|
|
* Smarty date_format modifier plugin
|
|
* Type: modifier
|
|
* Name: date_format
|
|
* Purpose: format datestamps via strftime
|
|
* Input:
|
|
* - string: input date string
|
|
* - format: strftime format for output
|
|
* - default_date: default date if $string is empty
|
|
*
|
|
* @link https://www.smarty.net/manual/en/language.modifier.date.format.php date_format (Smarty online manual)
|
|
* @author Monte Ohrt <monte at ohrt dot com>
|
|
*
|
|
* @param string $string input date string
|
|
* @param string $format strftime format for output
|
|
* @param string $default_date default date if $string is empty
|
|
* @param string $formatter either 'strftime' or 'auto'
|
|
*
|
|
* @return string |void
|
|
* @uses smarty_make_timestamp()
|
|
*/
|
|
function smarty_modifier_date_format($string, $format = null, $default_date = '', $formatter = 'auto')
|
|
{
|
|
if ($format === null) {
|
|
$format = Smarty::$_DATE_FORMAT;
|
|
}
|
|
/**
|
|
* require_once the {@link shared.make_timestamp.php} plugin
|
|
*/
|
|
static $is_loaded = false;
|
|
if (!$is_loaded) {
|
|
if (!is_callable('smarty_make_timestamp')) {
|
|
include_once SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php';
|
|
}
|
|
$is_loaded = true;
|
|
}
|
|
if (!empty($string) && $string !== '0000-00-00' && $string !== '0000-00-00 00:00:00') {
|
|
$timestamp = smarty_make_timestamp($string);
|
|
} elseif (!empty($default_date)) {
|
|
$timestamp = smarty_make_timestamp($default_date);
|
|
} else {
|
|
return;
|
|
}
|
|
if ($formatter === 'strftime' || ($formatter === 'auto' && strpos($format, '%') !== false)) {
|
|
if (Smarty::$_IS_WINDOWS) {
|
|
$_win_from = array(
|
|
'%D',
|
|
'%h',
|
|
'%n',
|
|
'%r',
|
|
'%R',
|
|
'%t',
|
|
'%T'
|
|
);
|
|
$_win_to = array(
|
|
'%m/%d/%y',
|
|
'%b',
|
|
"\n",
|
|
'%I:%M:%S %p',
|
|
'%H:%M',
|
|
"\t",
|
|
'%H:%M:%S'
|
|
);
|
|
if (strpos($format, '%e') !== false) {
|
|
$_win_from[] = '%e';
|
|
$_win_to[] = sprintf('%\' 2d', date('j', $timestamp));
|
|
}
|
|
if (strpos($format, '%l') !== false) {
|
|
$_win_from[] = '%l';
|
|
$_win_to[] = sprintf('%\' 2d', date('h', $timestamp));
|
|
}
|
|
$format = str_replace($_win_from, $_win_to, $format);
|
|
}
|
|
// @ to suppress deprecation errors when running in PHP8.1 or higher.
|
|
return @strftime($format, $timestamp);
|
|
} else {
|
|
return date($format, $timestamp);
|
|
}
|
|
}
|