summaryrefslogtreecommitdiffstats
path: root/processmail
diff options
context:
space:
mode:
authorterry%mozilla.org <>2000-01-23 10:03:14 +0100
committerterry%mozilla.org <>2000-01-23 10:03:14 +0100
commit04824af9663502bc5cc16583463c7d6819610fec (patch)
tree2e69a506a47e24d65b9784826abed24c17c74cb5 /processmail
parentc2491654291209345784c141700bad79603fe07b (diff)
downloadbugzilla-04824af9663502bc5cc16583463c7d6819610fec.tar.gz
bugzilla-04824af9663502bc5cc16583463c7d6819610fec.tar.xz
New email code wasn't notifying people of changes in state of
dependent bugs.
Diffstat (limited to 'processmail')
-rwxr-xr-xprocessmail78
1 files changed, 61 insertions, 17 deletions
diff --git a/processmail b/processmail
index 432ded3e1..7441232ef 100755
--- a/processmail
+++ b/processmail
@@ -400,6 +400,54 @@ sub NewProcessOneBug {
$difftext = trim($difftext);
+ my $deptext = "";
+
+ my $resid =
+
+ SendSQL("SELECT bugs_activity.bug_id, fielddefs.name, " .
+ " oldvalue, newvalue " .
+ "FROM bugs_activity, dependencies, fielddefs ".
+ "WHERE bugs_activity.bug_id = dependencies.dependson " .
+ " AND dependencies.blocked = $id " .
+ " AND fielddefs.fieldid = bugs_activity.fieldid" .
+ " AND (fielddefs.name = 'bug_status' " .
+ " OR fielddefs.name = 'resolution') " .
+ " AND bug_when > '$start' " .
+ " AND bug_when <= '$end' " .
+ "ORDER BY bug_when, bug_id");
+
+ my $thisdiff = "";
+ my $lastbug = "";
+ my $interestingchange = 0;
+ while (MoreSQLData()) {
+ my ($bug, $what, $old, $new) = (FetchSQLData());
+ if ($bug ne $lastbug) {
+ if ($interestingchange) {
+ $deptext .= $thisdiff;
+ }
+ $lastbug = $bug;
+ $thisdiff =
+ "\nThis bug depends on bug $bug, which changed state:\n\n";
+ $thisdiff .= FormatTriple("What ", "Old Value", "New Value");
+ $thisdiff .= ('-' x 76) . "\n";
+ $interestingchange = 0;
+ }
+ $thisdiff .= FormatTriple($fielddescription{$what}, $old, $new);
+ if ($what eq 'bug_status' && IsOpenedState($old) ne IsOpenedState($new)) {
+ $interestingchange = 1;
+ }
+ }
+ if ($interestingchange) {
+ $deptext .= $thisdiff;
+ }
+
+ $deptext = trim($deptext);
+
+ if ($deptext) {
+ $difftext = trim($difftext . "\n\n" . $deptext);
+ }
+
+
my $newcomments = GetLongDescription($id, $start, $end);
my $count = 0;
@@ -451,6 +499,7 @@ sub NewProcessOneBug {
# }
# }
+
my $head = "";
foreach my $f (@headerlist) {
@@ -484,6 +533,9 @@ sub NewProcessOneBug {
# }
}
}
+
+
+
if ($difftext eq "" && $newcomments eq "") {
# Whoops, no differences!
next;
@@ -503,21 +555,13 @@ sub NewProcessOneBug {
}
$substs{"summary"} = $values{'short_desc'};
- # my $template = Param("changedmail");
- my $template = "From: bugzilla-daemon
-To: %to%
-Cc: %cc%
-Subject: [Bug %bugid%] %neworchanged% - %summary%
+ my $template = Param("newchangedmail");
-%urlbase%show_bug.cgi?id=%bugid%
-
-%diffs%";
-
- my $msg = PerformSubsts(Param("changedmail"), \%substs);
+ my $msg = PerformSubsts($template, \%substs);
open(SENDMAIL, "|/usr/lib/sendmail -t") ||
die "Can't open sendmail";
- print SENDMAIL trim($msg);
+ print SENDMAIL trim($msg) . "\n";
close SENDMAIL;
push(@sentlist, $person);
}
@@ -598,16 +642,16 @@ sub ProcessOneBug {
$logstr = "$logstr; mail sent to $tolist, $cclist";
}
- if (@sentlist) {
- print "<B>Email sent to:</B> " . join(", ", @sentlist) . "\n";
- if ($didexclude) {
- print "<B>Excluding:</B> $nametoexclude (<a href=changepassword.cgi>change your preferences</a> if you wish not to be excluded)\n";
- }
- }
}
unlink($diffs);
Log($logstr);
}
+ if (@sentlist) {
+ print "<B>Email sent to:</B> " . join(", ", @sentlist) . "\n";
+ if ($didexclude) {
+ print "<B>Excluding:</B> $nametoexclude (<a href=changepassword.cgi>change your preferences</a> if you wish not to be excluded)\n";
+ }
+ }
rename($new, $old) || die "Can't rename $new to $old";
chmod 0666, $old;
if ($regenerate) {