]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 556429: Send bugmail notifications in the Perl code instead of from
authorMax Kanat-Alexander <mkanat@bugzilla.org>
Wed, 7 Apr 2010 03:28:35 +0000 (20:28 -0700)
committerMax Kanat-Alexander <mkanat@bugzilla.org>
Wed, 7 Apr 2010 03:28:35 +0000 (20:28 -0700)
the template
r=LpSolit, a=LpSolit

12 files changed:
Bugzilla/BugMail.pm
Bugzilla/Product.pm
Bugzilla/Template.pm
attachment.cgi
post_bug.cgi
process_bug.cgi
template/en/default/admin/products/updated.html.tmpl
template/en/default/bug/create/created.html.tmpl
template/en/default/bug/process/bugmail.html.tmpl
template/en/default/bug/process/results.html.tmpl
template/en/default/pages/release-notes.html.tmpl
votes.cgi

index 20336b1d993ac2c477d85c7123b64d0dfe874ed4..1489b51706c3a1207e2b8d8dc68779982eba9994 100644 (file)
@@ -109,7 +109,6 @@ sub three_columns {
 # roles when the email is sent.
 # All the names are email addresses, not userids
 # values are scalars, except for cc, which is a list
-# This hash usually comes from the "mailrecipients" var in a template call.
 sub Send {
     my ($id, $forced) = (@_);
 
index 359a574417101180794301cb1ac4cbc90612ee9d..3839af0af060610c250bc5acd493bcc246b0df8c 100644 (file)
@@ -375,6 +375,14 @@ sub update {
         MessageToMTA($msg);
     }
 
+    # And send out emails about changed bugs
+    require Bugzilla::BugMail;
+    foreach my $bug_id (@{ $changes->{'confirmed_bugs'} || [] }) {
+        my $sent_bugmail = Bugzilla::BugMail::Send(
+            $bug_id, { changer => Bugzilla->user->login });
+        $changes->{'confirmed_bugs_sent_bugmail'}->{$bug_id} = $sent_bugmail;
+    }
+
     return $changes;
 }
 
index 10a4963c22f22cbda3914dd34c77289e3aacc8c9..0ae6db7351bb475fde0c79a0e27b83759e24700f 100644 (file)
@@ -728,13 +728,6 @@ sub create {
             # started the session.
             'sudoer' => sub { return Bugzilla->sudoer; },
 
-            # SendBugMail - sends mail about a bug, using Bugzilla::BugMail.pm
-            'SendBugMail' => sub {
-                my ($id, $mailrecipients) = (@_);
-                require Bugzilla::BugMail;
-                Bugzilla::BugMail::Send($id, $mailrecipients);
-            },
-
             # Allow templates to access the "corect" URLBase value
             'urlbase' => sub { return Bugzilla::Util::correct_urlbase(); },
 
index f85fb3a19edb7962cd4659809e559c1587da38c6..0b389501ba9120ac8ea8758d74c1301db17ab93b 100755 (executable)
@@ -39,6 +39,7 @@ use strict;
 use lib qw(. lib);
 
 use Bugzilla;
+use Bugzilla::BugMail;
 use Bugzilla::Constants;
 use Bugzilla::Error;
 use Bugzilla::Flag; 
@@ -532,8 +533,6 @@ sub insert {
   $dbh->bz_commit_transaction;
 
   # Define the variables and functions that will be passed to the UI template.
-  $vars->{'mailrecipients'} =  { 'changer' => $user->login,
-                                 'owner'   => $owner };
   $vars->{'attachment'} = $attachment;
   # We cannot reuse the $bug object as delta_ts has eventually been updated
   # since the object was created.
@@ -541,6 +540,9 @@ sub insert {
   $vars->{'header_done'} = 1;
   $vars->{'contenttypemethod'} = $cgi->param('contenttypemethod');
 
+  my $recipients =  { 'changer' => $user->login, 'owner' => $owner };
+  $vars->{'sent_bugmail'} = Bugzilla::BugMail::Send($bugid, $recipients);
+
   print $cgi->header();
   # Generate and return the UI (HTML page) from the appropriate template.
   $template->process("attachment/created.html.tmpl", $vars)
@@ -662,10 +664,11 @@ sub update {
     $dbh->bz_commit_transaction();
 
     # Define the variables and functions that will be passed to the UI template.
-    $vars->{'mailrecipients'} = { 'changer' => $user->login };
     $vars->{'attachment'} = $attachment;
     $vars->{'bugs'} = [$bug];
     $vars->{'header_done'} = 1;
+    $vars->{'sent_bugmail'} = 
+        Bugzilla::BugMail::Send($bug->id, { 'changer' => $user->login });
 
     print $cgi->header();
 
@@ -714,7 +717,6 @@ sub delete_attachment {
         $vars->{'attachment'} = $attachment;
         $vars->{'date'} = $date;
         $vars->{'reason'} = clean_text($cgi->param('reason') || '');
-        $vars->{'mailrecipients'} = { 'changer' => $user->login };
 
         $template->process("attachment/delete_reason.txt.tmpl", $vars, \$msg)
           || ThrowTemplateError($template->error());
@@ -738,6 +740,9 @@ sub delete_attachment {
         $vars->{'bugs'} = [$bug];
         $vars->{'header_done'} = 1;
 
+        $vars->{'sent_bugmail'} =
+            Bugzilla::BugMail::Send($bug->id, { 'changer' => $user->login });
+
         $template->process("attachment/updated.html.tmpl", $vars)
           || ThrowTemplateError($template->error());
     }
index e8f9acc017361b01e336afac6dc605feb0fa0fb3..f0771195b821c3f782ad882f643943b7723dbafd 100755 (executable)
@@ -238,9 +238,6 @@ my ($flags, $new_flags) = Bugzilla::Flag->extract_flags_from_cgi($bug, undef, $v
 $bug->set_flags($flags, $new_flags);
 $bug->update($timestamp);
 
-# Email everyone the details of the new bug 
-$vars->{'mailrecipients'} = {'changer' => $user->login};
-
 $vars->{'id'} = $id;
 $vars->{'bug'} = $bug;
 
@@ -248,22 +245,25 @@ Bugzilla::Hook::process('post_bug_after_creation', { vars => $vars });
 
 ThrowCodeError("bug_error", { bug => $bug }) if $bug->error;
 
-$vars->{'sentmail'} = [];
-
-push (@{$vars->{'sentmail'}}, { type => 'created',
-                                id => $id,
-                              });
-
-foreach my $i (@{$bug->dependson || []}, @{$bug->blocked || []}) {
-    push (@{$vars->{'sentmail'}}, { type => 'dep', id => $i, });
-}
-
 if ($token) {
     trick_taint($token);
     $dbh->do('UPDATE tokens SET eventdata = ? WHERE token = ?', undef, 
              ("createbug:$id", $token));
 }
 
+my $recipients = { changer => $user->login };
+my $bug_sent = Bugzilla::BugMail::Send($id, $recipients);
+$bug_sent->{type} = 'created';
+$bug_sent->{id}   = $id;
+my @all_mail_results = ($bug_sent);
+foreach my $dep (@{$bug->dependson || []}, @{$bug->blocked || []}) {
+    my $dep_sent = Bugzilla::BugMail::Send($dep, $recipients);
+    $dep_sent->{type} = 'dep';
+    $dep_sent->{id}   = $dep;
+    push(@all_mail_results, $dep_sent);
+}
+$vars->{sentmail} = \@all_mail_results;
+
 print $cgi->header();
 $template->process("bug/create/created.html.tmpl", $vars)
     || ThrowTemplateError($template->error());
index f1f8aa0e5ff07ffb5cae8f72723c510a671aa41c..32f8e4a066bca0faa79218d89e86c269899c9bf2 100755 (executable)
@@ -78,10 +78,9 @@ my $vars = {};
 sub send_results {
     my ($bug_id, $vars) = @_;
     my $template = Bugzilla->template;
-    if (Bugzilla->usage_mode == USAGE_MODE_EMAIL) {
-         Bugzilla::BugMail::Send($bug_id, $vars->{'mailrecipients'});
-    }
-    else {
+    $vars->{'sent_bugmail'} = 
+        Bugzilla::BugMail::Send($bug_id, $vars->{'mailrecipients'});
+    if (Bugzilla->usage_mode != USAGE_MODE_EMAIL) {
         $template->process("bug/process/results.html.tmpl", $vars)
             || ThrowTemplateError($template->error());
     }
index 6e484ff3418639966fc5642a97b16634f210ab4a..c6e87100bbaaa51f7b2d5f3cc46d1d3b09646e65 100644 (file)
           overwritten, which happens otherwise %]
       [% INCLUDE bug/process/results.html.tmpl
         type = 'votes'
-        mailrecipients = { 'changer' => user.login }
         header_done = 1
+        sent_bugmail = changes.confirmed_bugs_sent_bugmail.$id
         id = id
       %]
     [% END %]
index 3dfb3534a7e62d8c1bb084de68bbf25897c872ad..d9eaccbbf61095ba568b797338b42230b1ac00f4 100644 (file)
@@ -24,8 +24,6 @@
   #     type: string; type of change for this bug, either 'created' if this bug
   #         was created or 'dep' if it was added as a dependent/blocker
   #     id: integer; the ID of the bug
-  # mailrecipients: hash; contains the BugMail recipients, for details on
-  #     this contents, see template bug/process/bugmail.html.tmpl
   # bug: object; Bugzilla::Bug object of the bug that was created (used in
   #     template bug/edit.html.tmpl
   #%]
@@ -44,8 +42,7 @@
   [% PROCESS bug/process/results.html.tmpl
      type = item.type
      id = item.id
-     mail = item.mail
-     mailrecipients = mailrecipients
+     sent_bugmail = item
    %]
 [% END %]
 
index 71299225b176042be82e9cc95e64bf6cee6fbe3c..b0132a2fe2b1f9db6cdf0d8b1fa8d06b52440d2e 100644 (file)
   #%]
 
 [%# INTERFACE:
-  # mailing_bugid: string. ID of the bug this mail is concerning.
-  # mailrecipients: hash. People involved in this change. Hash has up to five
-  #                elements:
-  #                changer: string. The login name of the user who made the
-  #                change.
-  #
-  #                For bug changes where people need to be notified:
-  #                 owner: string. The login name of the bug assignee.
-  #                 reporter: string. The login name of the bug reporter.
-  #                 qacontact: string. The login name of the bug's QA contact.
-  #                  Optional.
-  #                 cc: list of strings. The login names of those on the CC
-  #                  list.
+  # mailing_bugid: The bug ID that email is being sent for.
+  # sent_bugmail: The results of Bugzilla::BugMail::Send().
   #%]
 
 [% PROCESS global/variables.none.tmpl %]
 
-[% mail = SendBugMail(mailing_bugid, mailrecipients) %]
-
 <dl>
 [% PROCESS emails
    description = "Email sent to"
-   names = mail.sent
+   names = sent_bugmail.sent
 %]
 
 [% PROCESS emails
    description = "Excluding"
-   names = mail.excluded
+   names = sent_bugmail.excluded
 %]
 </dl>
 
index d2adca8b8d668d137bd8230b583cc87e4f4410f2..ee218d421da827b971c7cd432711f5f74b9e9b00 100644 (file)
@@ -24,8 +24,6 @@
   # type: string; the type of change/check that was made: "bug" when a bug
   #   is changed, "dupe" when a duplication notation is added to a bug,
   #   and "dep" when a bug is checked for changes to its dependencies.
-  #
-  # mailrecipients: hash; BugMail recipient params. Optional.
   #%]
 
 [% PROCESS global/variables.none.tmpl %]
index b22a47160015c8a874378e819372f2e47f11caed..6a9d75cd7ed323fc0bd6b79de1eb7d970ccdd96e 100644 (file)
 <h2 id="v36_code_changes">Code Changes Which May Affect Customizations</h2>
 
 <ul>
+  <li>There is no longer a SendBugMail method in the templates, and bugmail
+    is no longer sent by processing a template. Instead, it is sent
+    by using <kbd>Bugzilla::BugMail::Send</kbd>.</li>
   <li>Comments are now represented as a
     <a href="[% docs_urlbase FILTER html %]api/Bugzilla/Comment.html">Bugzilla::Comment</a>
     object instead of just being hashes.</li>
index 1c72431c45e7a8b3b8a0a853292a88ab60c1c2a6..b77a7a4f38410fa7d7016169f275a04d3bc76358 100755 (executable)
--- a/votes.cgi
+++ b/votes.cgi
@@ -32,6 +32,7 @@ use Bugzilla::Constants;
 use Bugzilla::Util;
 use Bugzilla::Error;
 use Bugzilla::Bug;
+use Bugzilla::BugMail;
 use Bugzilla::User;
 use Bugzilla::Product;
 
@@ -348,11 +349,13 @@ sub record_votes {
     $dbh->bz_commit_transaction();
 
     $vars->{'type'} = "votes";
-    $vars->{'mailrecipients'} = { 'changer' => Bugzilla->user->login };
     $vars->{'title_tag'} = 'change_votes';
 
     foreach my $bug_id (@updated_bugs) {
         $vars->{'id'} = $bug_id;
+        $vars->{'sent_bugmail'} = Bugzilla::BugMail::Send($bug_id,
+            { 'changer' => Bugzilla->user->login });
+
         $template->process("bug/process/results.html.tmpl", $vars)
           || ThrowTemplateError($template->error());
         # Set header_done to 1 only after the first bug.