Changeset 8e8ae79 in github


Ignore:
Timestamp:
Apr 7, 2012 12:28:52 PM (14 months ago)
Author:
alecpl <alec@…>
Branches:
master, HEAD, courier-fix, dev-browser-capabilities, pdo, release-0.8
Children:
c73efcc
Parents:
19fccd8
Message:
  • Fix format_date() when $convert=false (#1488147)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • program/include/main.inc

    rff2d88a r8e8ae79  
    736736  global $RCMAIL, $CONFIG; 
    737737 
    738   if (is_a($date, 'DateTime')) { 
    739     $ts = $date->format('U'); 
    740     $tzs = $date->getTimezone(); 
     738  if (is_object($date) && is_a($date, 'DateTime')) { 
     739    $timestamp = $date->format('U'); 
    741740  } 
    742741  else { 
    743     $tzs = 'GMT'; 
    744  
    745742    if (!empty($date)) 
    746       $ts = rcube_strtotime($date); 
    747  
    748     if (empty($ts)) 
     743      $timestamp = rcube_strtotime($date); 
     744 
     745    if (empty($timestamp)) 
    749746      return ''; 
    750747 
    751748    try { 
    752       $date = new DateTime("@".$ts); 
     749      $date = new DateTime("@".$timestamp); 
    753750    } 
    754751    catch (Exception $e) { 
     
    757754  } 
    758755 
    759   try { 
    760     // convert to the right timezone 
    761     $stz = date_default_timezone_get(); 
    762     $tz = new DateTimeZone($convert ? $RCMAIL->config->get('timezone') : $tzs); 
    763     $date->setTimezone($tz); 
    764     date_default_timezone_set($tz->getName()); 
    765  
    766     $timestamp = $date->format('U'); 
    767   } 
    768   catch (Exception $e) { 
    769     $timestamp = $ts; 
     756  if ($convert) { 
     757    try { 
     758      // convert to the right timezone 
     759      $stz = date_default_timezone_get(); 
     760      $tz = new DateTimeZone($RCMAIL->config->get('timezone')); 
     761      $date->setTimezone($tz); 
     762      date_default_timezone_set($tz->getName()); 
     763 
     764      $timestamp = $date->format('U'); 
     765    } 
     766    catch (Exception $e) { 
     767    } 
    770768  } 
    771769 
     
    790788  if (preg_match('/%[a-z]+/i', $format)) { 
    791789    $format = strftime($format, $timestamp); 
    792     date_default_timezone_set($stz); 
     790 
     791    if ($convert && $stz) { 
     792      date_default_timezone_set($stz); 
     793    } 
     794 
    793795    return $today ? (rcube_label('today') . ' ' . $format) : $format; 
    794796  } 
     
    797799  // an alternative would be to convert the date() format string to fit with strftime() 
    798800  $out = ''; 
    799   for($i=0; $i<strlen($format); $i++) { 
     801  for ($i=0; $i<strlen($format); $i++) { 
    800802    if ($format[$i]=='\\')  // skip escape chars 
    801803      continue; 
     
    806808    // weekday (short) 
    807809    else if ($format[$i]=='D') 
    808       $out .= rcube_label(strtolower($date->format('D'))); 
     810      $out .= rcube_label(strtolower(date('D', $timestamp))); 
    809811    // weekday long 
    810812    else if ($format[$i]=='l') 
    811       $out .= rcube_label(strtolower($date->format('l'))); 
     813      $out .= rcube_label(strtolower(date('l', $timestamp))); 
    812814    // month name (short) 
    813815    else if ($format[$i]=='M') 
    814       $out .= rcube_label(strtolower($date->format('M'))); 
     816      $out .= rcube_label(strtolower(date('M', $timestamp))); 
    815817    // month name (long) 
    816818    else if ($format[$i]=='F') 
    817       $out .= rcube_label('long'.strtolower($date->format('M'))); 
     819      $out .= rcube_label('long'.strtolower(date('M', $timestamp))); 
    818820    else if ($format[$i]=='x') 
    819821      $out .= strftime('%x %X', $timestamp); 
    820822    else 
    821       $out .= $date->format($format[$i]); 
     823      $out .= date($format[$i], $timestamp); 
    822824  } 
    823825 
     
    833835  } 
    834836 
    835   date_default_timezone_set($stz); 
     837  if ($convert && $stz) { 
     838    date_default_timezone_set($stz); 
     839  } 
     840 
    836841  return $out; 
    837842} 
Note: See TracChangeset for help on using the changeset viewer.