summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrédéric Buclin <LpSolit@gmail.com>2011-04-23 19:19:08 +0200
committerFrédéric Buclin <LpSolit@gmail.com>2011-04-23 19:19:08 +0200
commit99d1623cca1ce087317080a2f95d6afb5b4834ee (patch)
tree89f9114e8f6754edbd8a6ffd749d7a235a2e59be
parent2c01ae87b090bed0e655ed8e36d41405b28079d1 (diff)
downloadbugzilla-99d1623cca1ce087317080a2f95d6afb5b4834ee.tar.gz
bugzilla-99d1623cca1ce087317080a2f95d6afb5b4834ee.tar.xz
Bug 652165: Flagmails have a wrong Date: value
r=wicked a=LpSolit
-rw-r--r--Bugzilla/BugMail.pm11
-rw-r--r--Bugzilla/Flag.pm22
-rw-r--r--template/en/default/email/bugmail-header.txt.tmpl2
-rw-r--r--template/en/default/request/email.txt.tmpl2
4 files changed, 21 insertions, 16 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) };
diff --git a/template/en/default/email/bugmail-header.txt.tmpl b/template/en/default/email/bugmail-header.txt.tmpl
index c2b4ea4f5..94559a942 100644
--- a/template/en/default/email/bugmail-header.txt.tmpl
+++ b/template/en/default/email/bugmail-header.txt.tmpl
@@ -27,7 +27,7 @@
From: [% Param('mailfrom') %]
To: [% to_user.email %]
Subject: [[% terms.Bug %] [%+ bug.id %]] [% 'New: ' IF isnew %][%+ bug.short_desc %]
-Date: [% delta_ts || bug.delta_ts FILTER time("%a, %d %b %Y %T %z", to_user.timezone) %]
+Date: [% date %]
X-Bugzilla-Reason: [% reasonsheader %]
X-Bugzilla-Type: [% isnew ? 'new' : 'changed' %]
X-Bugzilla-Watch-Reason: [% reasonswatchheader %]
diff --git a/template/en/default/request/email.txt.tmpl b/template/en/default/request/email.txt.tmpl
index 03c5e57c0..182ac09e0 100644
--- a/template/en/default/request/email.txt.tmpl
+++ b/template/en/default/request/email.txt.tmpl
@@ -51,7 +51,7 @@ To: [% to %]
Subject: [% flagtype_name %] [%+ subject_status %]: [[% terms.Bug %] [%+ bug.bug_id %]] [% bug.short_desc %]
[%- IF attachment %] :
[Attachment [% attachment.id %]] [% attachment.description %][% END %]
-Date: [% bug.delta_ts FILTER time("%a, %d %b %Y %T %z", timezone) %]
+Date: [% date %]
X-Bugzilla-Type: request
[%+ threadingmarker %]