summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDylan William Hardison <dylan@hardison.net>2017-09-13 15:03:50 +0200
committerGitHub <noreply@github.com>2017-09-13 15:03:50 +0200
commit5c003fcc3ee164e92295f8518ca90eec0196a30c (patch)
treed92254cd59e3f97f4b3fcf42e09715c0ccd286b4
parent90757225b25c4eab4b4f4b9296c63746c710721d (diff)
downloadbugzilla-5c003fcc3ee164e92295f8518ca90eec0196a30c.tar.gz
bugzilla-5c003fcc3ee164e92295f8518ca90eec0196a30c.tar.xz
Bug 1398889 - Add param 'silent_users' that never trigger sending bugmail
* Add param silent_users * Add method is_silent_user to User class, which returns true if the login name matches an entry in silent_users. * Change user_wants_mail() to return false if the changer is a silent user. * Change is_global_watcher() in User class code to use any instead of grep * Change regex used to parse param 'globalwatchers' to use consistent regex in BugMail.pm and User.pm
-rw-r--r--Bugzilla/BugMail.pm2
-rw-r--r--Bugzilla/Config/MTA.pm5
-rw-r--r--Bugzilla/User.pm20
-rw-r--r--template/en/default/admin/params/mta.html.tmpl4
4 files changed, 26 insertions, 5 deletions
diff --git a/Bugzilla/BugMail.pm b/Bugzilla/BugMail.pm
index e40e9c97a..defe7c84f 100644
--- a/Bugzilla/BugMail.pm
+++ b/Bugzilla/BugMail.pm
@@ -214,7 +214,7 @@ sub Send {
}
# Global watcher
- my @watchers = split(/[,\s]+/, Bugzilla->params->{'globalwatchers'});
+ my @watchers = split(/\s*,\s*/ms, Bugzilla->params->{'globalwatchers'});
foreach (@watchers) {
my $watcher_id = login_to_id($_);
next unless $watcher_id;
diff --git a/Bugzilla/Config/MTA.pm b/Bugzilla/Config/MTA.pm
index a12b425e2..c23c324d9 100644
--- a/Bugzilla/Config/MTA.pm
+++ b/Bugzilla/Config/MTA.pm
@@ -106,6 +106,11 @@ sub get_param_list {
type => 't',
default => '',
},
+ {
+ name => 'silent_users',
+ type => 't',
+ default => '',
+ },
);
return @param_list;
}
diff --git a/Bugzilla/User.pm b/Bugzilla/User.pm
index fafd3551d..84fc1fb21 100644
--- a/Bugzilla/User.pm
+++ b/Bugzilla/User.pm
@@ -2246,6 +2246,9 @@ sub wants_bug_mail {
my $self = shift;
my ($bug, $relationship, $fieldDiffs, $comments, $dep_mail, $changer) = @_;
+ # is_silent_user is true if the username is mentioned in the param `silent_users`
+ return 0 if $changer && $changer->is_silent_user;
+
# Make a list of the events which have happened during this bug change,
# from the point of view of this user.
my %events;
@@ -2407,13 +2410,24 @@ sub is_insider {
sub is_global_watcher {
my $self = shift;
- if (!defined $self->{'is_global_watcher'}) {
- my @watchers = split(/[,;]+/, Bugzilla->params->{'globalwatchers'});
- $self->{'is_global_watcher'} = scalar(grep { $_ eq $self->login } @watchers) ? 1 : 0;
+ if (!exists $self->{'is_global_watcher'}) {
+ my @watchers = split(/\s*,\s*/, Bugzilla->params->{'globalwatchers'});
+ $self->{'is_global_watcher'} = (any { $_ eq $self->login } @watchers) ? 1 : 0;
}
return $self->{'is_global_watcher'};
}
+sub is_silent_user {
+ my $self = shift;
+
+ if (!exists $self->{'is_silent_user'}) {
+ my @users = split(/\s*,\s*/, Bugzilla->params->{'silent_users'});
+ $self->{'is_silent_user'} = (any { $self->login eq $_ } @users) ? 1 : 0;
+ }
+
+ return $self->{'is_silent_user'};
+}
+
sub is_timetracker {
my $self = shift;
diff --git a/template/en/default/admin/params/mta.html.tmpl b/template/en/default/admin/params/mta.html.tmpl
index 05c44853e..88d8ef981 100644
--- a/template/en/default/admin/params/mta.html.tmpl
+++ b/template/en/default/admin/params/mta.html.tmpl
@@ -73,6 +73,8 @@
"Set to 0 to disable whining.",
globalwatchers => "A comma-separated list of users who should receive a " _
- "copy of every notification mail the system sends." }
+ "copy of every notification mail the system sends.",
+
+ silent_users => "A comma-separated list of users who never trigger sending email." }
%]