summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kanat-Alexander <mkanat@bugzilla.org>2010-04-06 01:26:09 +0200
committerMax Kanat-Alexander <mkanat@bugzilla.org>2010-04-06 01:26:09 +0200
commitd74d76b0730621b09571775902899d7030ca3150 (patch)
treedfeb8f80dc10cd0e25e0c7ae89f8dd48677db9b6
parent3b351275ab6f8090620234dd2b3ee8a9ef72e599 (diff)
downloadbugzilla-d74d76b0730621b09571775902899d7030ca3150.tar.gz
bugzilla-d74d76b0730621b09571775902899d7030ca3150.tar.xz
Bug 556429: Stop sending bugmail from inside the template
r=LpSolit, a=LpSolit
-rw-r--r--Bugzilla/BugMail.pm1
-rw-r--r--Bugzilla/Template.pm7
-rwxr-xr-xattachment.cgi13
-rw-r--r--extensions/Voting/Extension.pm11
-rw-r--r--extensions/Voting/template/en/default/hook/admin/products/updated-changes.html.tmpl2
-rwxr-xr-xpost_bug.cgi26
-rwxr-xr-xprocess_bug.cgi7
-rw-r--r--template/en/default/bug/create/created.html.tmpl5
-rw-r--r--template/en/default/bug/process/bugmail.html.tmpl21
-rw-r--r--template/en/default/bug/process/results.html.tmpl2
-rw-r--r--template/en/default/pages/release-notes.html.tmpl3
11 files changed, 44 insertions, 54 deletions
diff --git a/Bugzilla/BugMail.pm b/Bugzilla/BugMail.pm
index a4fbfa3d8..ff88dfaa3 100644
--- a/Bugzilla/BugMail.pm
+++ b/Bugzilla/BugMail.pm
@@ -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) = (@_);
diff --git a/Bugzilla/Template.pm b/Bugzilla/Template.pm
index 639088984..88bfc1f2d 100644
--- a/Bugzilla/Template.pm
+++ b/Bugzilla/Template.pm
@@ -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(); },
diff --git a/attachment.cgi b/attachment.cgi
index f85fb3a19..0b389501b 100755
--- a/attachment.cgi
+++ b/attachment.cgi
@@ -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());
}
diff --git a/extensions/Voting/Extension.pm b/extensions/Voting/Extension.pm
index 5a1cc518e..5d455ad36 100644
--- a/extensions/Voting/Extension.pm
+++ b/extensions/Voting/Extension.pm
@@ -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
diff --git a/extensions/Voting/template/en/default/hook/admin/products/updated-changes.html.tmpl b/extensions/Voting/template/en/default/hook/admin/products/updated-changes.html.tmpl
index 876c51187..139fc641b 100644
--- a/extensions/Voting/template/en/default/hook/admin/products/updated-changes.html.tmpl
+++ b/extensions/Voting/template/en/default/hook/admin/products/updated-changes.html.tmpl
@@ -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 %]
diff --git a/post_bug.cgi b/post_bug.cgi
index 5a1da173f..881568298 100755
--- a/post_bug.cgi
+++ b/post_bug.cgi
@@ -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());
diff --git a/process_bug.cgi b/process_bug.cgi
index 39526b3ff..6afb9cc91 100755
--- a/process_bug.cgi
+++ b/process_bug.cgi
@@ -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());
}
diff --git a/template/en/default/bug/create/created.html.tmpl b/template/en/default/bug/create/created.html.tmpl
index 3dfb3534a..d9eaccbbf 100644
--- a/template/en/default/bug/create/created.html.tmpl
+++ b/template/en/default/bug/create/created.html.tmpl
@@ -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 %]
diff --git a/template/en/default/bug/process/bugmail.html.tmpl b/template/en/default/bug/process/bugmail.html.tmpl
index 71299225b..b0132a2fe 100644
--- a/template/en/default/bug/process/bugmail.html.tmpl
+++ b/template/en/default/bug/process/bugmail.html.tmpl
@@ -20,34 +20,21 @@
#%]
[%# 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>
diff --git a/template/en/default/bug/process/results.html.tmpl b/template/en/default/bug/process/results.html.tmpl
index 7c1af42af..c62a7a597 100644
--- a/template/en/default/bug/process/results.html.tmpl
+++ b/template/en/default/bug/process/results.html.tmpl
@@ -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 %]
diff --git a/template/en/default/pages/release-notes.html.tmpl b/template/en/default/pages/release-notes.html.tmpl
index b22a47160..6a9d75cd7 100644
--- a/template/en/default/pages/release-notes.html.tmpl
+++ b/template/en/default/pages/release-notes.html.tmpl
@@ -523,6 +523,9 @@
<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>