diff options
author | alecpl <alec@alec.pl> | 2011-11-04 11:01:54 +0000 |
---|---|---|
committer | alecpl <alec@alec.pl> | 2011-11-04 11:01:54 +0000 |
commit | 77153b255da293819975ab51ff40c84e5c1ff3cf (patch) | |
tree | 6c563205bd0595dfba6d420335296b63c2a85d2f /program | |
parent | 179b39d22a68db1f31947aca4d31eb1e53d193a7 (diff) |
- Fix handling of dates (birthday/anniversary) in contact data - don't convert them to users timezone (#1488147)
Diffstat (limited to 'program')
-rw-r--r-- | program/include/main.inc | 38 | ||||
-rw-r--r-- | program/steps/addressbook/func.inc | 4 |
2 files changed, 24 insertions, 18 deletions
diff --git a/program/include/main.inc b/program/include/main.inc index 3980794eb..7e31c012f 100644 --- a/program/include/main.inc +++ b/program/include/main.inc @@ -1018,15 +1018,15 @@ function rcube_strtotime($date) * 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 @@ function format_date($date, $format=NULL) if (empty($ts)) return ''; - // get user's timezone offset - $tz = $RCMAIL->config->get_timezone(); - - // convert time to user's timezone - $timestamp = $ts - date('Z', $ts) + ($tz * 3600); + if ($convert) { + // get user's timezone offset + $tz = $RCMAIL->config->get_timezone(); - // 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); + // convert time to user's timezone + $timestamp = $ts - date('Z', $ts) + ($tz * 3600); - $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; diff --git a/program/steps/addressbook/func.inc b/program/steps/addressbook/func.inc index 79a0babb8..52819c0df 100644 --- a/program/steps/addressbook/func.inc +++ b/program/steps/addressbook/func.inc @@ -624,7 +624,7 @@ function rcmail_contact_form($form, $record, $attrib = null) $RCMAIL->output->set_env('month_names', $month_names); } $colprop['class'] .= ($colprop['class'] ? ' ' : '') . 'datepicker'; - $val = format_date($val, $RCMAIL->config->get('date_format', 'Y-m-d')); + $val = format_date($val, $RCMAIL->config->get('date_format', 'Y-m-d'), false); } $val = rcmail_get_edit_field($col, $val, $colprop, $colprop['type']); @@ -733,7 +733,7 @@ function rcmail_contact_photo($attrib) function rcmail_format_date_col($val) { global $RCMAIL; - return format_date($val, $RCMAIL->config->get('date_format', 'Y-m-d')); + return format_date($val, $RCMAIL->config->get('date_format', 'Y-m-d'), false); } |