From: Frédéric Buclin Date: Wed, 27 Apr 2011 21:47:50 +0000 (+0200) Subject: Bug 643910: Email notifications from a blocked bug have the timestamp from its last... X-Git-Tag: bugzilla-4.0.1~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=919558493249c7bcc04b2f422040163dcd55254b;p=thirdparty%2Fbugzilla.git Bug 643910: Email notifications from a blocked bug have the timestamp from its last change instead of the timestamp of the blocker r=dkl a=LpSolit --- diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm index ceb773aec7..273883cf65 100644 --- a/Bugzilla/Bug.pm +++ b/Bugzilla/Bug.pm @@ -1160,14 +1160,20 @@ sub send_changes { # If there were changes in dependencies, we need to notify those # dependencies. - my %notify_deps; if ($changes->{'bug_status'}) { my ($old_status, $new_status) = @{ $changes->{'bug_status'} }; # If this bug has changed from opened to closed or vice-versa, # then all of the bugs we block need to be notified. if (is_open_state($old_status) ne is_open_state($new_status)) { - $notify_deps{$_} = 1 foreach (@{ $self->blocked }); + my $params = { forced => { changer => $user }, + type => 'dep', + dep_only => 1 }; + + foreach my $id (@{ $self->blocked }) { + $params->{id} = $id; + _send_bugmail($params, $vars); + } } } @@ -1183,8 +1189,7 @@ sub send_changes { # an error later. delete $changed_deps{''}; - my %all_dep_changes = (%notify_deps, %changed_deps); - foreach my $id (sort { $a <=> $b } (keys %all_dep_changes)) { + foreach my $id (sort { $a <=> $b } (keys %changed_deps)) { _send_bugmail({ forced => { changer => $user }, type => "dep", id => $id }, $vars); } @@ -1194,7 +1199,7 @@ sub _send_bugmail { my ($params, $vars) = @_; my $results = - Bugzilla::BugMail::Send($params->{'id'}, $params->{'forced'}); + Bugzilla::BugMail::Send($params->{'id'}, $params->{'forced'}, $params); if (Bugzilla->usage_mode == USAGE_MODE_BROWSER) { my $template = Bugzilla->template; diff --git a/Bugzilla/BugMail.pm b/Bugzilla/BugMail.pm index e585fb7afa..2f3478dc8b 100644 --- a/Bugzilla/BugMail.pm +++ b/Bugzilla/BugMail.pm @@ -109,7 +109,8 @@ sub relationships { # All the names are email addresses, not userids # values are scalars, except for cc, which is a list sub Send { - my ($id, $forced) = (@_); + my ($id, $forced, $params) = (@_); + $params ||= {}; my $dbh = Bugzilla->dbh; my $bug = new Bugzilla::Bug($id); @@ -379,7 +380,8 @@ sub Send { # 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'); + 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;