From 5c003fcc3ee164e92295f8518ca90eec0196a30c Mon Sep 17 00:00:00 2001 From: Dylan William Hardison Date: Wed, 13 Sep 2017 09:03:50 -0400 Subject: 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 --- Bugzilla/BugMail.pm | 2 +- Bugzilla/Config/MTA.pm | 5 +++++ Bugzilla/User.pm | 20 +++++++++++++++++--- template/en/default/admin/params/mta.html.tmpl | 4 +++- 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." } %] -- cgit v1.2.3-24-g4f1b