diff options
author | Dave Lawrence <dlawrence@mozilla.com> | 2014-03-05 00:12:58 +0100 |
---|---|---|
committer | Dave Lawrence <dlawrence@mozilla.com> | 2014-03-05 00:12:58 +0100 |
commit | 5d54de990280d2b3536b0737dc262329d243d543 (patch) | |
tree | 5ede7aa00bc1ed391be61f71c9e5a5c019a855e4 /extensions/MyDashboard/lib/Queries.pm | |
parent | faf2fc5dbead69f0de0df51af85561f1203dee45 (diff) | |
download | bugzilla-5d54de990280d2b3536b0737dc262329d243d543.tar.gz bugzilla-5d54de990280d2b3536b0737dc262329d243d543.tar.xz |
Bug 979092 - changing timezone breaks MyDashboard
Diffstat (limited to 'extensions/MyDashboard/lib/Queries.pm')
-rw-r--r-- | extensions/MyDashboard/lib/Queries.pm | 36 |
1 files changed, 22 insertions, 14 deletions
diff --git a/extensions/MyDashboard/lib/Queries.pm b/extensions/MyDashboard/lib/Queries.pm index 435aa7ef4..566b5b340 100644 --- a/extensions/MyDashboard/lib/Queries.pm +++ b/extensions/MyDashboard/lib/Queries.pm @@ -131,10 +131,10 @@ sub QUERY_DEFS { } sub query_bugs { - my $qdef = shift; - my $dbh = Bugzilla->dbh; - my $user = Bugzilla->user; - my $date_now = DateTime->now(time_zone => $user->timezone); + my $qdef = shift; + my $dbh = Bugzilla->dbh; + my $user = Bugzilla->user; + my $datetime_now = DateTime->now(time_zone => $user->timezone); ## HACK to remove POST delete $ENV{REQUEST_METHOD}; @@ -152,9 +152,16 @@ sub query_bugs { foreach my $column (SELECT_COLUMNS) { $bug->{$column} = shift @$row; if ($column eq 'changeddate') { - $bug->{$column} = format_time($bug->{$column}); - my $date_then = datetime_from($bug->{$column}); - $bug->{'changeddate_fancy'} = time_ago($date_then, $date_now); + my $datetime = datetime_from($bug->{$column}); + $datetime->set_time_zone($user->timezone); + $bug->{$column} = $datetime->strftime('%Y-%m-%d %T %Z'); + $bug->{'changeddate_fancy'} = time_ago($datetime, $datetime_now); + + # Provide a version for use by Bug.history and also for looking up last comment. + # We have to set to server's timezone and also subtract one second. + $datetime->set_time_zone(Bugzilla->local_timezone); + $datetime->subtract(seconds => 1); + $bug->{changeddate_api} = $datetime->strftime('%Y-%m-%d %T'); } } push(@bugs, $bug); @@ -165,9 +172,9 @@ sub query_bugs { sub query_flags { my ($type) = @_; - my $user = Bugzilla->user; - my $dbh = Bugzilla->dbh; - my $date_now = DateTime->now(time_zone => $user->timezone); + my $user = Bugzilla->user; + my $dbh = Bugzilla->dbh; + my $datetime_now = DateTime->now(time_zone => $user->timezone); ($type ne 'requestee' || $type ne 'requester') || ThrowCodeError('param_required', { param => 'type' }); @@ -238,10 +245,11 @@ sub query_flags { # Format the updated date specific to the user's timezone # and add the fancy human readable version - $flag->{'updated'} = format_time($flag->{'updated'}); - my $date_then = datetime_from($flag->{'updated'}); - $flag->{'updated_epoch'} = $date_then->epoch; - $flag->{'updated_fancy'} = time_ago($date_then, $date_now); + my $datetime = datetime_from($flag->{'updated'}); + $datetime->set_time_zone($user->timezone); + $flag->{'updated'} = $datetime->strftime('%Y-%m-%d %T %Z'); + $flag->{'updated_epoch'} = $datetime->epoch; + $flag->{'updated_fancy'} = time_ago($datetime, $datetime_now); push(@filtered_flags, $flag); } |