--- announcements.module.orig 2008-10-06 00:24:25.000000000 -0700 +++ announcements.module 2008-10-06 00:36:02.000000000 -0700 @@ -382,7 +384,7 @@ $args = array(-1); } else { - $args[] = date("U"); + $args[] = gmdate("U"); } $query .= ' ORDER BY '. variable_get('announcements_page_order', 'n.sticky DESC, n.changed DESC'); @@ -846,15 +850,26 @@ return '
'. check_markup($announcement->abstract, $announcement->format) .'
'; } +function _announcements_get_timezone() { + global $user; + if (variable_get('configurable_timezones', 1) && $user->uid && strlen($user->timezone)) { + // user has his/her own timezone, use that + return $user->timezone; + } + return variable_get('date_default_timezone', 0); +} + function _announcements_drupaldate2unixtime($drupal_date) { // Compute the time in UTC (GMT). - return gmmktime(0, 0, 0, (int)$drupal_date["month"], (int)$drupal_date["day"], (int)$drupal_date["year"]); + $tz_seconds = _announcements_get_timezone(); + return gmmktime(0, 0, 0, (int)$drupal_date["month"], (int)$drupal_date["day"], (int)$drupal_date["year"]) - $tz_seconds; } function _announcements_unixtime2drupaldate($unixtime) { - return array('day' => date('j', $unixtime), - 'month' => date('n', $unixtime), - 'year' => date('Y', $unixtime)); + $unixtime -= _announcements_get_timezone; + return array('day' => gmdate('j', $unixtime), + 'month' => gmdate('n', $unixtime), + 'year' => gmdate('Y', $unixtime)); } /**