Bug 556429: Send bugmail notifications in the Perl code instead of from
the template r=LpSolit, a=LpSolit git-svn-id: svn://10.0.0.236/branches/BUGZILLA-3_6-BRANCH@260162 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -1 +1 @@
|
||||
7074
|
||||
7075
|
||||
@@ -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) = (@_);
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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(); },
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -168,8 +168,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 %]
|
||||
|
||||
@@ -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 %]
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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 %]
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user