diff options
-rw-r--r-- | Bugzilla/BugMail.pm | 25 | ||||
-rwxr-xr-x | contrib/sendbugmail.pl | 31 | ||||
-rwxr-xr-x | contrib/sendunsentbugmail.pl | 29 | ||||
-rw-r--r-- | template/en/default/bug/process/bugmail.html.tmpl | 24 |
4 files changed, 34 insertions, 75 deletions
diff --git a/Bugzilla/BugMail.pm b/Bugzilla/BugMail.pm index 12914ca73..68962fc66 100644 --- a/Bugzilla/BugMail.pm +++ b/Bugzilla/BugMail.pm @@ -106,6 +106,9 @@ sub Send { # Skip empty comments. @$comments = grep { $_->type || $_->body =~ /\S/ } @$comments; + # If no changes have been made, there is no need to process further. + return {'sent' => []} unless scalar(@diffs) || scalar(@$comments); + ########################################################################### # Start of email filtering code ########################################################################### @@ -197,7 +200,6 @@ sub Send { # 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. my @sent; - my @excluded; # The email client will display the Date: header in the desired timezone, # so we can always use UTC here. @@ -206,18 +208,13 @@ sub Send { foreach my $user_id (keys %recipients) { my %rels_which_want; - my $sent_mail = 0; - $user_cache{$user_id} ||= new Bugzilla::User($user_id); - my $user = $user_cache{$user_id}; + my $user = $user_cache{$user_id} ||= new Bugzilla::User($user_id); # Deleted users must be excluded. next unless $user; # If email notifications are disabled for this account, or the bug # is ignored, there is no need to do additional checks. - if ($user->email_disabled || $user->is_bug_ignored($id)) { - push(@excluded, $user->login); - next; - } + next if ($user->email_disabled || $user->is_bug_ignored($id)); if ($user->can_see_bug($id)) { # Go through each role the user has and see if they want mail in @@ -250,7 +247,7 @@ sub Send { # Email the user if the dep check passed. if ($dep_ok) { - $sent_mail = sendMail( + my $sent_mail = sendMail( { to => $user, bug => $bug, comments => $comments, @@ -261,15 +258,9 @@ sub Send { diffs => \@diffs, rels_which_want => \%rels_which_want, }); + push(@sent, $user->login) if $sent_mail; } } - - if ($sent_mail) { - push(@sent, $user->login); - } - else { - push(@excluded, $user->login); - } } # When sending bugmail about a blocker being reopened or resolved, @@ -281,7 +272,7 @@ sub Send { $bug->{lastdiffed} = $end; } - return {'sent' => \@sent, 'excluded' => \@excluded}; + return {'sent' => \@sent}; } sub sendMail { diff --git a/contrib/sendbugmail.pl b/contrib/sendbugmail.pl index c015810b0..da0eafd30 100755 --- a/contrib/sendbugmail.pl +++ b/contrib/sendbugmail.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl -w +#!/usr/bin/perl -wT # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. @@ -6,6 +6,8 @@ # This Source Code Form is "Incompatible With Secondary Licenses", as # defined by the Mozilla Public License, v. 2.0. +use 5.10.1; +use strict; use lib qw(. lib); use Bugzilla; @@ -16,7 +18,7 @@ use Bugzilla::User; my $dbh = Bugzilla->dbh; sub usage { - print STDERR "Usage: $0 bug_id user_email\n"; + say STDERR "Usage: $0 bug_id user_email"; exit; } @@ -30,7 +32,7 @@ my $changer = $ARGV[1]; # Validate the bug number. if (!($bugnum =~ /^(\d+)$/)) { - print STDERR "Bug number \"$bugnum\" not numeric.\n"; + say STDERR "Bug number \"$bugnum\" not numeric."; usage(); } @@ -40,19 +42,19 @@ my ($id) = $dbh->selectrow_array("SELECT bug_id FROM bugs WHERE bug_id = ?", undef, $bugnum); if (!$id) { - print STDERR "Bug number $bugnum does not exist.\n"; + say STDERR "Bug number $bugnum does not exist."; usage(); } # Validate the changer address. my $match = Bugzilla->params->{'emailregexp'}; if ($changer !~ /$match/) { - print STDERR "Changer \"$changer\" doesn't match email regular expression.\n"; + say STDERR "Changer \"$changer\" doesn't match email regular expression."; usage(); } my $changer_user = new Bugzilla::User({ name => $changer }); unless ($changer_user) { - print STDERR "\"$changer\" is not a valid user.\n"; + say STDERR "\"$changer\" is not a valid user."; usage(); } @@ -61,26 +63,15 @@ my $outputref = Bugzilla::BugMail::Send($bugnum, {'changer' => $changer_user }); # Report the results. my $sent = scalar(@{$outputref->{sent}}); -my $excluded = scalar(@{$outputref->{excluded}}); if ($sent) { - print "email sent to $sent recipients:\n"; + say "email sent to $sent recipients:"; } else { - print "No email sent.\n"; + say "No email sent."; } foreach my $sent (@{$outputref->{sent}}) { - print " $sent\n"; -} - -if ($excluded) { - print "$excluded recipients excluded:\n"; -} else { - print "No recipients excluded.\n"; -} - -foreach my $excluded (@{$outputref->{excluded}}) { - print " $excluded\n"; + say " $sent"; } # This document is copyright (C) 2004 Perforce Software, Inc. All rights diff --git a/contrib/sendunsentbugmail.pl b/contrib/sendunsentbugmail.pl index 94ad25de4..536d12146 100755 --- a/contrib/sendunsentbugmail.pl +++ b/contrib/sendunsentbugmail.pl @@ -6,8 +6,8 @@ # This Source Code Form is "Incompatible With Secondary Licenses", as # defined by the Mozilla Public License, v. 2.0. +use 5.10.1; use strict; - use lib qw(. lib); use Bugzilla; @@ -25,28 +25,21 @@ my $list = $dbh->selectcol_arrayref( ' ORDER BY bug_id'); if (scalar(@$list) > 0) { - print "OK, now attempting to send unsent mail\n"; - print scalar(@$list) . " bugs found with possibly unsent mail.\n\n"; + say "OK, now attempting to send unsent mail"; + say scalar(@$list) . " bugs found with possibly unsent mail.\n"; foreach my $bugid (@$list) { my $start_time = time; - print "Sending mail for bug $bugid...\n"; + say "Sending mail for bug $bugid..."; my $outputref = Bugzilla::BugMail::Send($bugid); if ($ARGV[0] && $ARGV[0] eq "--report") { - print "Mail sent to:\n"; - foreach (sort @{$outputref->{sent}}) { - print $_ . "\n"; - } - - print "Excluded:\n"; - foreach (sort @{$outputref->{excluded}}) { - print $_ . "\n"; - } + say "Mail sent to:"; + say $_ foreach (sort @{$outputref->{sent}}); } else { - my ($sent, $excluded) = (scalar(@{$outputref->{sent}}),scalar(@{$outputref->{excluded}})); - print "$sent mails sent, $excluded people excluded.\n"; - print "Took " . (time - $start_time) . " seconds.\n\n"; - } + my $sent = scalar @{$outputref->{sent}}; + say "$sent mails sent."; + say "Took " . (time - $start_time) . " seconds.\n"; + } } - print "Unsent mail has been sent.\n"; + say "Unsent mail has been sent."; } diff --git a/template/en/default/bug/process/bugmail.html.tmpl b/template/en/default/bug/process/bugmail.html.tmpl index b1c38da96..0d77e6f66 100644 --- a/template/en/default/bug/process/bugmail.html.tmpl +++ b/template/en/default/bug/process/bugmail.html.tmpl @@ -12,27 +12,11 @@ #%] <dl> -[% PROCESS emails - description = "Email sent to" - names = sent_bugmail.sent -%] - -[% PROCESS emails - description = "Excluding" - names = sent_bugmail.excluded -%] -</dl> - -[%############################################################################%] -[%# Block for a set of email addresses #%] -[%############################################################################%] - -[% BLOCK emails %] - <dt>[% description FILTER html %]:</dt> + <dt>Email sent to:</dt> <dd> [% IF user.can_see_bug(mailing_bugid) %] - [% IF names.size > 0 %] - [%+ FOREACH name = names %] + [% IF sent_bugmail.sent.size %] + [% FOREACH name = sent_bugmail.sent %] <code>[% name FILTER html %]</code>[% ", " UNLESS loop.last() %] [% END %] [% ELSE %] @@ -42,4 +26,4 @@ (list of e-mails not available) [% END %] </dd> -[% END %] +</dl> |