Re: Bug in smarty_modifier_date_format

Danilo Buerger <[email protected]> Wed, 10 Jan 2007 17:30:36 +0100
Newsgroups gmane.comp.php.smarty.devel
Message-ID <[email protected]>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

"The TIMESTAMP data type has varying properties, depending on the MySQL
version and the SQL mode the server is running in. These properties are
described later in this section." --
http://dev.mysql.com/doc/refman/5.0/en/datetime.html

For example (on 5.0.16):
| Field   | Type         | Null | Key | Default             | Extra
     |
| date    | timestamp    | YES  |     | 0000-00-00 00:00:00 |
     |

But either way if its a datetime or a timestamp applying
smarty_make_timestamp to it still solves the problem.

boots schrieb:
> Hi.
> 
> That looks like a MySQL datetime rather than a timestamp. Otherwise, looks
> good. I've committed the %R fix to CVS.
> 
> Thanks!
> 
> boots
> 
> --- Danilo Buerger <[email protected]> wrote:
> 
> Small errata: it should be smarty_make_timestamp() instead of
> smarty_make_time_stamp() of course.
> 
> Danilo Buerger schrieb:
>>>> Hello list,
>>>>
>>>> when using Smarty in a Windows environment (substr(PHP_OS,0,3) == 'WIN')
>>>> and trying to format a MySQL timestamp (0000-00-00 00:00:00) an error
>>>> occurs because the string is passed to strftime() without applying
>>>> smarty_make_time_stamp() to the string first. Another bug occurs when
>>>> using the %R format (which is unknown to Windows, see
>>>>
>> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_strftime.2c_.wcsftime.asp)).
>>>> So here is the diff that should fix these problems:
>>>>
>>>> Index: smarty-2.6.16/plugins/modifier.date_format.php
>>>> ===================================================================
>>>> --- smarty-2.6.16/plugins/modifier.date_format.php      (revision 84)
>>>> +++ smarty-2.6.16/plugins/modifier.date_format.php      (working copy)
>>>> @@ -31,10 +31,10 @@
>>>>  function smarty_modifier_date_format($string, $format="%b %e, %Y",
>>>> $default_date=null)
>>>>  {
>>>>      if (substr(PHP_OS,0,3) == 'WIN') {
>>>> -        $hours = strftime('%I', $string);
>>>> +        $hours = strftime('%I', smarty_make_time_stamp($string));
>>>>          $short_hours = ( $hours < 10 ) ? substr( $hours, -1) : $hours;
>>>> -        $_win_from = array ('%e',  '%T',       '%D',        '%l');
>>>> -        $_win_to   = array ('%#d', '%H:%M:%S', '%m/%d/%y',
>>>> $short_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 != '') {
>>>>
>>>> Greets,
>>>>
>>>> Danilo Bürger

> ____________________________________________________________________________________
> Do you Yahoo!?
> Everyone is raving about the all-new Yahoo! Mail beta.
> http://new.mail.yahoo.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Darwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFFpRSsrwsg9y2CBIURAqARAJ9l6lBwqv9dlG2y+jqlDQR0DVSsjQCfazcq
yCdXpTOD81ASUmgqvU0af6c=
=xWMN
-----END PGP SIGNATURE-----

-- 
Smarty Development Mailing List (http://smarty.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php