summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Bugzilla/Constants.pm5
-rw-r--r--Bugzilla/User.pm4
-rwxr-xr-xchecksetup.pl20
-rw-r--r--template/en/default/account/prefs/email.html.tmpl2
4 files changed, 28 insertions, 3 deletions
diff --git a/Bugzilla/Constants.pm b/Bugzilla/Constants.pm
index 7411ca0b0..09717486e 100644
--- a/Bugzilla/Constants.pm
+++ b/Bugzilla/Constants.pm
@@ -78,7 +78,7 @@ use base qw(Exporter);
POS_EVENTS
EVT_OTHER EVT_ADDED_REMOVED EVT_COMMENT EVT_ATTACHMENT EVT_ATTACHMENT_DATA
- EVT_PROJ_MANAGEMENT EVT_OPENED_CLOSED EVT_KEYWORD EVT_CC
+ EVT_PROJ_MANAGEMENT EVT_OPENED_CLOSED EVT_KEYWORD EVT_CC EVT_DEPEND_BLOCK
NEG_EVENTS
EVT_UNCONFIRMED EVT_CHANGED_BY_ME
@@ -214,11 +214,12 @@ use constant EVT_PROJ_MANAGEMENT => 5;
use constant EVT_OPENED_CLOSED => 6;
use constant EVT_KEYWORD => 7;
use constant EVT_CC => 8;
+use constant EVT_DEPEND_BLOCK => 9;
use constant POS_EVENTS => EVT_OTHER, EVT_ADDED_REMOVED, EVT_COMMENT,
EVT_ATTACHMENT, EVT_ATTACHMENT_DATA,
EVT_PROJ_MANAGEMENT, EVT_OPENED_CLOSED, EVT_KEYWORD,
- EVT_CC;
+ EVT_CC, EVT_DEPEND_BLOCK;
use constant EVT_UNCONFIRMED => 50;
use constant EVT_CHANGED_BY_ME => 51;
diff --git a/Bugzilla/User.pm b/Bugzilla/User.pm
index 6beb16a8b..701c1c2b2 100644
--- a/Bugzilla/User.pm
+++ b/Bugzilla/User.pm
@@ -1085,7 +1085,9 @@ our %names_to_events = (
'Target Milestone' => EVT_PROJ_MANAGEMENT,
'Attachment description' => EVT_ATTACHMENT_DATA,
'Attachment mime type' => EVT_ATTACHMENT_DATA,
- 'Attachment is patch' => EVT_ATTACHMENT_DATA);
+ 'Attachment is patch' => EVT_ATTACHMENT_DATA,
+ 'BugsThisDependsOn' => EVT_DEPEND_BLOCK,
+ 'OtherBugsDependingOnThis' => EVT_DEPEND_BLOCK);
# Returns true if the user wants mail for a given bug change.
# Note: the "+" signs before the constants suppress bareword quoting.
diff --git a/checksetup.pl b/checksetup.pl
index c728c4636..84c94f108 100755
--- a/checksetup.pl
+++ b/checksetup.pl
@@ -3890,6 +3890,26 @@ if ($dbh->bz_column_info("profiles", "emailflags")) {
$dbh->bz_drop_column("profiles", "emailflags");
}
+# Check for any "new" email settings that wouldn't have been ported over
+# during the block above. Since these settings would have otherwise
+# fallen under EVT_OTHER, we'll just clone those settings. That way if
+# folks have already disabled all of that mail, there won't be any change.
+{
+ my %events = ("Dependency Tree Changes" => EVT_DEPEND_BLOCK);
+
+ foreach my $desc (keys %events) {
+ my $event = $events{$desc};
+ $sth = $dbh->prepare("SELECT count(*) FROM email_setting WHERE event = $event");
+ $sth->execute();
+ if (!($sth->fetchrow_arrayref()->[0])) {
+ # No settings in the table yet, so we assume that this is the
+ # first time it's being set.
+ print "Initializing \"$desc\" email_setting ...\n" unless $silent;
+ CloneEmailEvent(EVT_OTHER, $event);
+ }
+ }
+}
+
sub CloneEmailEvent {
my ($source, $target) = @_;
diff --git a/template/en/default/account/prefs/email.html.tmpl b/template/en/default/account/prefs/email.html.tmpl
index 2c75a085c..857999200 100644
--- a/template/en/default/account/prefs/email.html.tmpl
+++ b/template/en/default/account/prefs/email.html.tmpl
@@ -124,6 +124,8 @@ document.write('<input type="button" value="Disable All Mail" onclick="SetCheckb
description = "The keywords field changes" },
{ id = constants.EVT_CC,
description = "The CC field changes" },
+ { id = constants.EVT_DEPEND_BLOCK,
+ description = "The dependency tree changes" },
{ id = constants.EVT_OTHER,
description = "Any field not mentioned above changes" },
] %]