diff options
Diffstat (limited to 'program/include/main.inc')
-rw-r--r-- | program/include/main.inc | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/program/include/main.inc b/program/include/main.inc index dd86a7821..568b3349d 100644 --- a/program/include/main.inc +++ b/program/include/main.inc @@ -1040,7 +1040,7 @@ function rcube_strtotime($date) * @return string Formatted date string */ function format_date($date, $format=NULL) - { +{ global $CONFIG; $ts = NULL; @@ -1050,7 +1050,7 @@ function format_date($date, $format=NULL) if (empty($ts)) return ''; - + // get user's timezone if ($CONFIG['timezone'] === 'auto') $tz = isset($_SESSION['timezone']) ? $_SESSION['timezone'] : date('Z')/3600; @@ -1062,7 +1062,7 @@ function format_date($date, $format=NULL) // convert time to user's timezone $timestamp = $ts - date('Z', $ts) + ($tz * 3600); - + // get current timestamp in user's timezone $now = time(); // local time $now -= (int)date('Z'); // make GMT time @@ -1070,30 +1070,33 @@ function format_date($date, $format=NULL) $now_date = getdate($now); $today_limit = mktime(0, 0, 0, $now_date['mon'], $now_date['mday'], $now_date['year']); - $week_limit = mktime(0, 0, 0, $now_date['mon'], $now_date['mday']-6, $now_date['year']); + $week_limit = mktime(0, 0, 0, $now_date['mon'], $now_date['mday']-6, $now_date['year']); // define date format depending on current time if (!$format) { - if ($CONFIG['prettydate'] && $timestamp > $today_limit && $timestamp < $now) - return sprintf('%s %s', rcube_label('today'), date($CONFIG['date_today'] ? $CONFIG['date_today'] : 'H:i', $timestamp)); + if ($CONFIG['prettydate'] && $timestamp > $today_limit && $timestamp < $now) { + $format = $CONFIG['date_today'] ? $CONFIG['date_today'] : 'H:i'; + $today = true; + } else if ($CONFIG['prettydate'] && $timestamp > $week_limit && $timestamp < $now) $format = $CONFIG['date_short'] ? $CONFIG['date_short'] : 'D H:i'; else $format = $CONFIG['date_long'] ? $CONFIG['date_long'] : 'd.m.Y H:i'; - } + } // strftime() format - if (preg_match('/%[a-z]+/i', $format)) - return strftime($format, $timestamp); + if (preg_match('/%[a-z]+/i', $format)) { + $format = strftime($format, $timestamp); + return $today ? (rcube_label('today') . ' ' . $format) : $format; + } // parse format string manually in order to provide localized weekday and month names // an alternative would be to convert the date() format string to fit with strftime() $out = ''; - for($i=0; $i<strlen($format); $i++) - { + for($i=0; $i<strlen($format); $i++) { if ($format{$i}=='\\') // skip escape chars continue; - + // write char "as-is" if ($format{$i}==' ' || $format{$i-1}=='\\') $out .= $format{$i}; @@ -1113,11 +1116,11 @@ function format_date($date, $format=NULL) $out .= strftime('%x %X', $timestamp); else $out .= date($format{$i}, $timestamp); - } - - return $out; } + return $today ? (rcube_label('today') . ' ' . $out) : $out; +} + /** * Compose a valid representation of name and e-mail address |