Eric Stadtherr wrote:
>
> Date: Tue, 21 Oct 2008 00:13:54 0600
>
> Notice that the time zone offset specifier is missing the "+/-" 
> prefix. Thunderbird seems to drop the zone offset in this case and 
> assume it's a local date. RoundCube, on the other hand, passes it into 
> PHP's handy "strtotime" function which interprets 0600 as the year. 
> This leads at the very least to display problems (in the message list 
> and the message display), and worst case to invalid dates in the 
> database if caching is enabled.
>
> I'd like to make RoundCube a little more tolerant, so I was wondering 
> what everyone else thought about possible solutions. The options I'm 
> considering are:
>
>    1. Parse the date using a fixed format string (e.g. "D, d M Y H:i:s
>       O") and one of PHP's other date functions. This would prevent
>       misinterpretation but might be even less tolerant.
>    2. Analyze the string before passing to strtotime() to identify and
>       work around known issues (of which there would be exactly one at
>       this point). This is a single special case kind of solution, but
>       strtotime might be reliable enough that this is the only case
>       we'll hit.
>

So, now we have (function format_date()):

while (($ts = @strtotime($date))===false)

I think it will be enough to change that to:

while (($ts = @strtotime($date))===false || $ts < 0)

Time zone offset will be lost. 0 here is for 1970-01-01, to be more 
strict such value could be greater ;) As you see there's one work around 
yet in function format_date():

if (is_numeric($date))
    $ts = $date;

so, we can add another one for your issue.


ps. isn't it a bug in strtotime?

-- 
Aleksander 'A.L.E.C' Machniak http://alec.pl gg:2275252
LAN Management System Developer http://lms.org.pl
Roundcube Webmail Project Developer http://roundcube.net
_______________________________________________
List info: http://lists.roundcube.net/dev/

Reply via email to