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 = format_time($bug->delta_ts, '%a, %d %b %Y %T %z', 'UTC');
+
foreach my $user_id (keys %recipients) {
my %rels_which_want;
my $sent_mail = 0;
bug => $bug,
comments => $comments,
is_new => !$start,
+ date => $date,
changer => $changer,
watchers => exists $watching{$user_id} ?
$watching{$user_id} : undef,
my $bug = $params->{bug};
my @send_comments = @{ $params->{comments} };
my $isnew = $params->{is_new};
+ my $date = $params->{date};
my $changer = $params->{changer};
my $watchingRef = $params->{watchers};
my @diffparts = @{ $params->{diff_parts} };
my $vars = {
isnew => $isnew,
+ date => $date,
to_user => $user,
bug => $bug,
changedfields => \@changed_fields,
# 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();
}
=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.
=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')) {
# 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
# 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) {
# 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) };