diff options
author | olav%bkor.dhs.org <> | 2006-11-14 08:32:28 +0100 |
---|---|---|
committer | olav%bkor.dhs.org <> | 2006-11-14 08:32:28 +0100 |
commit | 410641ccf4ed887b3988222678704a8c5569002d (patch) | |
tree | e698db3e6bb515c2a51359c13a11918a6b83210f /Bugzilla | |
parent | f1c83b410cd23c14e74a4a43f64632c050008dd7 (diff) | |
download | bugzilla-410641ccf4ed887b3988222678704a8c5569002d.tar.gz bugzilla-410641ccf4ed887b3988222678704a8c5569002d.tar.xz |
Bug 277370: Ability to specify an email address to which notification about all bugs should go
Patch by Guillaume Rousse <guillomovitch@zarb.org> r=bkor a=myk
Diffstat (limited to 'Bugzilla')
-rw-r--r-- | Bugzilla/BugMail.pm | 21 | ||||
-rw-r--r-- | Bugzilla/Config/MTA.pm | 8 | ||||
-rw-r--r-- | Bugzilla/Constants.pm | 5 | ||||
-rw-r--r-- | Bugzilla/User.pm | 3 |
4 files changed, 28 insertions, 9 deletions
diff --git a/Bugzilla/BugMail.pm b/Bugzilla/BugMail.pm index f5ad7c095..9a83b1cd3 100644 --- a/Bugzilla/BugMail.pm +++ b/Bugzilla/BugMail.pm @@ -50,11 +50,12 @@ use constant BIT_WATCHING => 2; # We need these strings for the X-Bugzilla-Reasons header # Note: this hash uses "," rather than "=>" to avoid auto-quoting of the LHS. use constant REL_NAMES => { - REL_ASSIGNEE, "AssignedTo", - REL_REPORTER, "Reporter", - REL_QA , "QAcontact", - REL_CC , "CC", - REL_VOTER , "Voter" + REL_ASSIGNEE , "AssignedTo", + REL_REPORTER , "Reporter", + REL_QA , "QAcontact", + REL_CC , "CC", + REL_VOTER , "Voter", + REL_GLOBAL_WATCHER, "GlobalWatcher" }; sub FormatTriple { @@ -392,7 +393,15 @@ sub Send { push (@{$watching{$watch->[0]}}, $watch->[1]); } } - + + # Global watcher + my @watchers = split(/[,\s]+/, Bugzilla->params->{'globalwatchers'}); + foreach (@watchers) { + my $watcher_id = login_to_id($_); + next unless $watcher_id; + $recipients{$watcher_id}->{+REL_GLOBAL_WATCHER} = BIT_DIRECT; + } + # We now have a complete set of all the users, and their relationships to # the bug in question. However, we are not necessarily going to mail them # all - there are preferences, permissions checks and all sorts to do yet. diff --git a/Bugzilla/Config/MTA.pm b/Bugzilla/Config/MTA.pm index a9bc4619c..27d03462a 100644 --- a/Bugzilla/Config/MTA.pm +++ b/Bugzilla/Config/MTA.pm @@ -72,7 +72,13 @@ sub get_param_list { type => 't', default => 7, checker => \&check_numeric - } ); + }, + + { + name => 'globalwatchers', + type => 't', + default => '', + }, ); return @param_list; } diff --git a/Bugzilla/Constants.pm b/Bugzilla/Constants.pm index 9c2cf77b4..ec1467136 100644 --- a/Bugzilla/Constants.pm +++ b/Bugzilla/Constants.pm @@ -85,7 +85,7 @@ use File::Basename; THROW_ERROR RELATIONSHIPS - REL_ASSIGNEE REL_QA REL_REPORTER REL_CC REL_VOTER + REL_ASSIGNEE REL_QA REL_REPORTER REL_CC REL_VOTER REL_GLOBAL_WATCHER REL_ANY POS_EVENTS @@ -244,9 +244,10 @@ use constant REL_QA => 1; use constant REL_REPORTER => 2; use constant REL_CC => 3; use constant REL_VOTER => 4; +use constant REL_GLOBAL_WATCHER => 5; use constant RELATIONSHIPS => REL_ASSIGNEE, REL_QA, REL_REPORTER, REL_CC, - REL_VOTER; + REL_VOTER, REL_GLOBAL_WATCHER; # Used for global events like EVT_FLAG_REQUESTED use constant REL_ANY => 100; diff --git a/Bugzilla/User.pm b/Bugzilla/User.pm index ff61034dd..3c18f1908 100644 --- a/Bugzilla/User.pm +++ b/Bugzilla/User.pm @@ -1460,6 +1460,9 @@ sub wants_mail { # No mail if there are no events return 0 if !scalar(@$events); + + # Skip DB query if relationship is explicit + return 1 if $relationship == REL_GLOBAL_WATCHER; my $dbh = Bugzilla->dbh; |