cvs: smarty / NEWS /docs/en/designers/language-modifiers language-modifier-date-format.xml /libs/internals core.write_file.php /libs/plugins
modifier.date_format.php

From: Date: Tue, 27 Feb 2007 22:22:09 +0000
Subject: cvs: smarty / NEWS /docs/en/designers/language-modifiers language-modifier-date-format.xml /libs/internals core.write_file.php /libs/plugins
modifier.date_format.php
Groups: php.smarty.cvs 
Request: Send a blank email to php-smarty-cvs+get-2212@lists.php.net to get a copy of this message
danilo Tue Feb 27 22:22:09 2007 UTC Modified files: /smarty NEWS /smarty/docs/en/designers/language-modifiers language-modifier-date-format.xml /smarty/libs/internals core.write_file.php /smarty/libs/plugins modifier.date_format.php Log: Updated smarty_core_write_file() and smarty_modifier_date_format() to speed up Windows detection. Emulated more parameters for Windows in smarty_modifier_date_format() and fixed some old ones. Updated the docs to tell what parameters are emulated on Windows. Updated NEWS file. http://cvs.php.net/viewvc.cgi/smarty/NEWS?r1=1.550&r2=1.551&diff_format=u Index: smarty/NEWS diff -u smarty/NEWS:1.550 smarty/NEWS:1.551 --- smarty/NEWS:1.550 Tue Feb 27 18:35:00 2007 +++ smarty/NEWS Tue Feb 27 22:22:09 2007 @@ -3,8 +3,10 @@ than $length (Sylvinus, messju) - fix handling of %I with mysql timestamps in the date_format modifier (danilo, boots) -- update smarty_core_write_file() to better recognize Windows (boots) -- emulate %R in the date_format modifier on Windows (danilo, boots) +- update smarty_core_write_file() and smarty_modifier_date_format() to better + recognize Windows (boots, danilo) +- emulate %h, %n, %r, %R, %t in the date_format modifier on Windows + (danilo, boots) Version 2.6.16 (Dec 1st, 2006) ------------------------------- http://cvs.php.net/viewvc.cgi/smarty/docs/en/designers/language-modifiers/language-modifier-date-format.xml?r1=1.14&r2=1.15&diff_format=u Index: smarty/docs/en/designers/language-modifiers/language-modifier-date-format.xml diff -u smarty/docs/en/designers/language-modifiers/language-modifier-date-format.xml:1.14 smarty/docs/en/designers/language-modifiers/language-modifier-date-format.xml:1.15 --- smarty/docs/en/designers/language-modifiers/language-modifier-date-format.xml:1.14 Tue Sep 26 19:28:45 2006 +++ smarty/docs/en/designers/language-modifiers/language-modifier-date-format.xml Tue Feb 27 22:22:09 2007 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.14 $ --> +<!-- $Revision: 1.15 $ --> <sect1 id="language.modifier.date.format"> <title>date_format</title> <para> @@ -79,7 +79,9 @@ You may have more or less conversion specifiers available depending on your system's <ulink url="&url.php-manual;strftime"><varname>strftime()</varname></ulink> function where PHP was compiled. Check your - system's manpage for a full list of valid specifiers. + system's manpage for a full list of valid specifiers. However, a few of + the specifiers are emulated on Windows. These are: %D, %e, %h, %l, %n, + %r, %R, %t, %T. </para> </note> </para> http://cvs.php.net/viewvc.cgi/smarty/libs/internals/core.write_file.php?r1=1.4&r2=1.5&diff_format=u Index: smarty/libs/internals/core.write_file.php diff -u smarty/libs/internals/core.write_file.php:1.4 smarty/libs/internals/core.write_file.php:1.5 --- smarty/libs/internals/core.write_file.php:1.4 Wed Jan 10 16:28:38 2007 +++ smarty/libs/internals/core.write_file.php Tue Feb 27 22:22:09 2007 @@ -15,10 +15,6 @@ */ function smarty_core_write_file($params, &$smarty) { - static $OS; - if (is_null($OS)) { - $OS = substr(PHP_OS,0,3); - } $_dirname = dirname($params['filename']); if ($params['create_dirs']) { @@ -41,7 +37,7 @@ fwrite($fd, $params['contents']); fclose($fd); - if ($OS == 'WIN' || !@rename($_tmp_file, $params['filename'])) { + if (DIRECTORY_SEPARATOR == '\\' || !@rename($_tmp_file, $params['filename'])) { // On platforms and filesystems that cannot overwrite with rename() // delete the file before renaming it -- because windows always suffers // this, it is short-circuited to avoid the initial rename() attempt http://cvs.php.net/viewvc.cgi/smarty/libs/plugins/modifier.date_format.php?r1=1.18&r2=1.19&diff_format=u Index: smarty/libs/plugins/modifier.date_format.php diff -u smarty/libs/plugins/modifier.date_format.php:1.18 smarty/libs/plugins/modifier.date_format.php:1.19 --- smarty/libs/plugins/modifier.date_format.php:1.18 Wed Jan 10 18:55:58 2007 +++ smarty/libs/plugins/modifier.date_format.php Tue Feb 27 22:22:09 2007 @@ -8,7 +8,7 @@ /** * Include the {@link shared.make_timestamp.php} plugin */ -require_once $smarty->_get_plugin_filepath('shared','make_timestamp'); +require_once $smarty->_get_plugin_filepath('shared', 'make_timestamp'); /** * Smarty date_format modifier plugin * @@ -28,22 +28,29 @@ * @return string|void * @uses smarty_make_timestamp() */ -function smarty_modifier_date_format($string, $format="%b %e, %Y", $default_date=null) +function smarty_modifier_date_format($string, $format = '%b %e, %Y', $default_date = '') { - if (substr(PHP_OS,0,3) == 'WIN') { - $hours = strftime('%I', smarty_make_timestamp($string)); - $short_hours = ( $hours < 10 ) ? substr( $hours, -1) : $hours; - $_win_from = array ('%e', '%T', '%D', '%l', '%R'); - $_win_to = array ('%#d', '%H:%M:%S', '%m/%d/%y', $short_hours, '%H:%M'); - $format = str_replace($_win_from, $_win_to, $format); - } - if($string != '') { - return strftime($format, smarty_make_timestamp($string)); - } elseif (isset($default_date) && $default_date != '') { - return strftime($format, smarty_make_timestamp($default_date)); + if ($string != '') { + $timestamp = smarty_make_timestamp($string); + } elseif ($default_date != '') { + $timestamp = smarty_make_timestamp($default_date); } else { return; } + if (DIRECTORY_SEPARATOR == '\\') { + $_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); + } + return strftime($format, $timestamp); } /* vim: set expandtab: */

« previous php.smarty.cvs (#2212) next »