From 77153b255da293819975ab51ff40c84e5c1ff3cf Mon Sep 17 00:00:00 2001 From: alecpl <alec@alec.pl> Date: Fri, 04 Nov 2011 07:01:54 -0400 Subject: [PATCH] - Fix handling of dates (birthday/anniversary) in contact data - don't convert them to users timezone (#1488147) --- program/include/main.inc | 38 ++++++++++++++++++++++---------------- 1 files changed, 22 insertions(+), 16 deletions(-) diff --git a/program/include/main.inc b/program/include/main.inc index 3980794..7e31c01 100644 --- a/program/include/main.inc +++ b/program/include/main.inc @@ -1018,15 +1018,15 @@ * Convert the given date to a human readable form * This uses the date formatting properties from config * - * @param mixed Date representation (string or timestamp) + * @param mixed Date representation (string or timestamp) * @param string Date format to use + * @param bool Enables date convertion according to user timezone + * * @return string Formatted date string */ -function format_date($date, $format=NULL) +function format_date($date, $format=NULL, $convert=true) { global $RCMAIL, $CONFIG; - - $ts = NULL; if (!empty($date)) $ts = rcube_strtotime($date); @@ -1034,23 +1034,29 @@ if (empty($ts)) return ''; - // get user's timezone offset - $tz = $RCMAIL->config->get_timezone(); + if ($convert) { + // get user's timezone offset + $tz = $RCMAIL->config->get_timezone(); - // convert time to user's timezone - $timestamp = $ts - date('Z', $ts) + ($tz * 3600); + // 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 - $now += ($tz * 3600); // user's time - $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']); + // get current timestamp in user's timezone + $now = time(); // local time + $now -= (int)date('Z'); // make GMT time + $now += ($tz * 3600); // user's time + } + else { + $now = time(); + $timestamp = $ts; + } // define date format depending on current time if (!$format) { + $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']); + if ($CONFIG['prettydate'] && $timestamp > $today_limit && $timestamp < $now) { $format = $RCMAIL->config->get('date_today', $RCMAIL->config->get('time_format', 'H:i')); $today = true; -- Gitblit v1.9.1