]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 556429: Stop sending bugmail from inside the template
authorMax Kanat-Alexander <mkanat@bugzilla.org>
Mon, 5 Apr 2010 23:26:09 +0000 (16:26 -0700)
committerMax Kanat-Alexander <mkanat@bugzilla.org>
Mon, 5 Apr 2010 23:26:09 +0000 (16:26 -0700)
r=LpSolit, a=LpSolit

Bugzilla/BugMail.pm
Bugzilla/Template.pm
attachment.cgi
extensions/Voting/Extension.pm
extensions/Voting/template/en/default/hook/admin/products/updated-changes.html.tmpl
post_bug.cgi
process_bug.cgi
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

index a4fbfa3d809338457861e8db58c8b6c9b352d21d..ff88dfaa3749cc5630b0644d96bc0de57abcc6bf 100644 (file)
@@ -107,7 +107,6 @@ sub relationships {
 # 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 6390889849722ad98472c2560edf4f21e94d453f..88bfc1f2d462399fa57e90e12a675c99d6ebdbb5 100644 (file)
@@ -739,13 +739,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 5a1cc518e1b79749db0f3a6042c2fb8e887384f5..5d455ad366f76e6f47de78ff07607d06be2b2644 100644 (file)
@@ -29,6 +29,7 @@ use strict;
 use base qw(Bugzilla::Extension);
 
 use Bugzilla::Bug;
+use Bugzilla::BugMail;
 use Bugzilla::Constants;
 use Bugzilla::Error;
 use Bugzilla::Field;
@@ -614,10 +615,12 @@ sub _update_votes {
     $dbh->bz_commit_transaction();
 
     $vars->{'type'} = "votes";
-    $vars->{'mailrecipients'} = { 'changer' => $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' => $user->login });
+        
         $template->process("bug/process/results.html.tmpl", $vars)
           || ThrowTemplateError($template->error());
         # Set header_done to 1 only after the first bug.
@@ -723,6 +726,12 @@ sub _modify_bug_votes {
     foreach my $msg (@msgs) {
         MessageToMTA($msg);
     }
+    # And send out emails about changed bugs
+    foreach my $bug_id (@updated_bugs) {
+        my $sent_bugmail = Bugzilla::BugMail::Send(
+            $bug_id, { changer => Bugzilla->user->login });
+        $changes->{'confirmed_bugs_sent_bugmail'}->{$bug_id} = $sent_bugmail;
+    }
 }
 
 # If a bug is moved to a product which allows less votes per bug
index 876c51187974c9bec007eb1f032e06ee6458eaa8..139fc641bde922a07cdb1461c2ea22d39691ea2c 100644 (file)
@@ -89,8 +89,8 @@
           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 5a1da173f9e4c7eaf4d07c18cf8fe52fb2d3e86f..88156829881ba8647eba548c222a06727d4d6a7e 100755 (executable)
@@ -231,9 +231,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;
 
@@ -241,22 +238,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 39526b3ffb9241b072a30ea9619a50794139801f..6afb9cc91b6db7dec14acd81fbfc79126eb14772 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 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 7c1af42aff7d553fd5b824a9555e9cd85ed0cb4d..c62a7a597213acd46e2ef173040fa59b79810d67 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>