diff options
Diffstat (limited to 'Bugzilla')
-rw-r--r-- | Bugzilla/BugMail.pm | 11 | ||||
-rw-r--r-- | Bugzilla/Flag.pm | 22 |
2 files changed, 19 insertions, 14 deletions
diff --git a/Bugzilla/BugMail.pm b/Bugzilla/BugMail.pm index 9d63b9c79..03eb1925d 100644 --- a/Bugzilla/BugMail.pm +++ b/Bugzilla/BugMail.pm @@ -224,6 +224,11 @@ sub Send { my @sent; my @excluded; + # The email client will display the Date: header in the desired timezone, + # so we can always use UTC here. + my $date = $params->{dep_only} ? $end : $bug->delta_ts; + $date = format_time($date, '%a, %d %b %Y %T %z', 'UTC'); + foreach my $user_id (keys %recipients) { my %rels_which_want; my $sent_mail = 0; @@ -268,7 +273,7 @@ sub Send { { to => $user, bug => $bug, comments => $comments, - delta_ts => $params->{dep_only} ? $end : undef, + date => $date, changer => $changer, watchers => exists $watching{$user_id} ? $watching{$user_id} : undef, @@ -304,7 +309,7 @@ sub sendMail { my $user = $params->{to}; my $bug = $params->{bug}; my @send_comments = @{ $params->{comments} }; - my $delta_ts = $params->{delta_ts}; + my $date = $params->{date}; my $changer = $params->{changer}; my $watchingRef = $params->{watchers}; my @diffs = @{ $params->{diffs} }; @@ -348,7 +353,7 @@ sub sendMail { push @watchingrel, map { user_id_to_login($_) } @$watchingRef; my $vars = { - delta_ts => $delta_ts, + date => $date, to_user => $user, bug => $bug, reasons => \@reasons, diff --git a/Bugzilla/Flag.pm b/Bugzilla/Flag.pm index 8457a559c..e8d30bd20 100644 --- a/Bugzilla/Flag.pm +++ b/Bugzilla/Flag.pm @@ -480,19 +480,19 @@ sub update_flags { # This is a new flag. my $flag = $class->create($new_flag, $timestamp); $new_flag->{id} = $flag->id; - $class->notify($new_flag, undef, $self); + $class->notify($new_flag, undef, $self, $timestamp); } else { my $changes = $new_flag->update($timestamp); if (scalar(keys %$changes)) { - $class->notify($new_flag, $old_flags{$new_flag->id}, $self); + $class->notify($new_flag, $old_flags{$new_flag->id}, $self, $timestamp); } delete $old_flags{$new_flag->id}; } } # These flags have been deleted. foreach my $old_flag (values %old_flags) { - $class->notify(undef, $old_flag, $self); + $class->notify(undef, $old_flag, $self, $timestamp); $old_flag->remove_from_db(); } @@ -893,7 +893,7 @@ sub extract_flags_from_cgi { =over -=item C<notify($flag, $bug, $attachment)> +=item C<notify($flag, $old_flag, $object, $timestamp)> Sends an email notification about a flag being created, fulfilled or deleted. @@ -903,7 +903,7 @@ or deleted. =cut sub notify { - my ($class, $flag, $old_flag, $obj) = @_; + my ($class, $flag, $old_flag, $obj, $timestamp) = @_; my ($bug, $attachment); if (blessed($obj) && $obj->isa('Bugzilla::Attachment')) { @@ -939,6 +939,11 @@ sub notify { # Is there someone to notify? return unless ($addressee || $cc_list); + # The email client will display the Date: header in the desired timezone, + # so we can always use UTC here. + $timestamp ||= Bugzilla->dbh->selectrow_array('SELECT LOCALTIMESTAMP(0)'); + $timestamp = format_time($timestamp, '%a, %d %b %Y %T %z', 'UTC'); + # If the target bug is restricted to one or more groups, then we need # to make sure we don't send email about it to unauthorized users # on the request type's CC: list, so we have to trawl the list for users @@ -964,10 +969,8 @@ sub notify { # If there are users in the CC list who don't have an account, # use the default language for email notifications. my $default_lang; - my $default_timezone; if (grep { !$_ } values %recipients) { $default_lang = Bugzilla::User->new()->settings->{'lang'}->{'value'}; - $default_timezone = Bugzilla::User->new()->settings->{'timezone'}->{'value'}; } foreach my $to (keys %recipients) { @@ -975,13 +978,10 @@ sub notify { # threaded similar to normal bug change emails. my $thread_user_id = $recipients{$to} ? $recipients{$to}->id : 0; - my $timezone = $recipients{$to} ? - $recipients{$to}->settings->{'timezone'}->{'value'} : $default_timezone; - my $vars = { 'flag' => $flag, 'old_flag' => $old_flag, 'to' => $to, - 'timezone' => $timezone, + 'date' => $timestamp, 'bug' => $bug, 'attachment' => $attachment, 'threadingmarker' => build_thread_marker($bug->id, $thread_user_id) }; |