# 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) = (@_);
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;
}
# 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(); },
use lib qw(. lib);
use Bugzilla;
+use Bugzilla::BugMail;
use Bugzilla::Constants;
use Bugzilla::Error;
use Bugzilla::Flag;
$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.
$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)
$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();
$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());
$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());
}
$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;
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());
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());
}
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 %]
# 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
#%]
[% PROCESS bug/process/results.html.tmpl
type = item.type
id = item.id
- mail = item.mail
- mailrecipients = mailrecipients
+ sent_bugmail = item
%]
[% END %]
#%]
[%# 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>
# 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 %]
<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>
use Bugzilla::Util;
use Bugzilla::Error;
use Bugzilla::Bug;
+use Bugzilla::BugMail;
use Bugzilla::User;
use Bugzilla::Product;
$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.