summaryrefslogtreecommitdiffstats
path: root/Bugzilla
diff options
context:
space:
mode:
authorolav%bkor.dhs.org <>2006-11-14 08:32:28 +0100
committerolav%bkor.dhs.org <>2006-11-14 08:32:28 +0100
commit410641ccf4ed887b3988222678704a8c5569002d (patch)
treee698db3e6bb515c2a51359c13a11918a6b83210f /Bugzilla
parentf1c83b410cd23c14e74a4a43f64632c050008dd7 (diff)
downloadbugzilla-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.pm21
-rw-r--r--Bugzilla/Config/MTA.pm8
-rw-r--r--Bugzilla/Constants.pm5
-rw-r--r--Bugzilla/User.pm3
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;