]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 874944: Do not display the Excluded list when sending bugmails
authorFrédéric Buclin <LpSolit@gmail.com>
Wed, 5 Jun 2013 12:39:19 +0000 (14:39 +0200)
committerFrédéric Buclin <LpSolit@gmail.com>
Wed, 5 Jun 2013 12:39:19 +0000 (14:39 +0200)
r=dkl a=LpSolit

Bugzilla/BugMail.pm
contrib/sendbugmail.pl
contrib/sendunsentbugmail.pl
template/en/default/bug/process/bugmail.html.tmpl

index 12914ca734d0ba3ea34ab1bf7ffc34e14e1ea433..68962fc66279d0a4b39b7459bdd788f6eda2ff60 100644 (file)
@@ -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 {
index c015810b08735d7ff57d17368cb548d28bc8a963..da0eafd30f0e028be0b08599d5869b817624db8a 100755 (executable)
@@ -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
index 94ad25de463164eab952dabccd579031baf21daf..536d12146c4991c4f094e488f7076bafd3d646ca 100755 (executable)
@@ -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.";
 }
index b1c38da96442ad65c90bc89c44966d69ce50f996..0d77e6f668e2c327f2c90f3e957620c0a8b0f864 100644 (file)
   #%]
 
 <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>