Bug 91009 - Send flag notification into send_result

git-svn-id: svn://svn.office.custis.ru/3rdparty/bugzilla.org/trunk@1715 6955db30-a419-402b-8a0d-67ecbb4d7f56
master
akrasilnikov 2013-07-12 07:23:30 +00:00
parent 1921717121
commit eb59160443
4 changed files with 66 additions and 13 deletions

View File

@ -303,6 +303,17 @@ sub init_page {
# Subroutines and Methods
#####################################################################
our @send_mail_result;
sub add_mail_result {
my ($class, $type, $lang, $params) = @_;
push(@send_mail_result, { 'type' => $type, 'lang' => $lang, 'params' => $params });
}
sub get_mail_result {
return @send_mail_result;
}
sub template {
my $class = shift;
$class->request_cache->{language} = "";

View File

@ -79,7 +79,15 @@ sub send_results
{
return $vars;
}
$vars->{sent_bugmail} = Send($vars->{bug_id}, $vars->{mailrecipients}, $vars->{commentsilent});
if ($vars->{type} eq 'flag')
{
$vars->{sent_bugmail} = SendFlag($vars->{notify_data});
$vars->{notify_data} = ''; # erase data, without - JSON encode error
}
else
{
$vars->{sent_bugmail} = Send($vars->{bug_id}, $vars->{mailrecipients}, $vars->{commentsilent});
}
return $vars;
}
@ -117,6 +125,39 @@ sub three_columns {
return multiline_sprintf(FORMAT_TRIPLE, \@_, FORMAT_3_SIZE);
}
sub SendFlag {
my ($flag_data) = (@_);
Bugzilla::Hook::process('flag-notify-pre-template', { vars => $flag_data->{params} });
my $template = Bugzilla->template_inner($flag_data->{lang});
my $message;
$template->process("request/email.txt.tmpl", $flag_data->{params}, \$message)
|| ThrowTemplateError($template->error());
Bugzilla->template_inner("");
MessageToMTA($message);
Bugzilla::Hook::process('flag-notify-post-send', { vars => $flag_data->{params} });
my @sent;
my @excluded;
my $recepient = "";
if ($flag_data->{params}->{old_flag} != undef)
{
$recepient = $flag_data->{params}->{old_flag}->{requestee}->{login_name};
}
else
{
$recepient = $flag_data->{params}->{to};
}
push (@sent,$recepient);
return {'sent' => \@sent, 'excluded' => \@excluded};
}
# This is a bit of a hack, basically keeping the old system()
# cmd line interface. Should clean this up at some point.
#

View File

@ -1044,17 +1044,7 @@ sub notify {
my $lang = $recipients{$to} ?
$recipients{$to}->settings->{'lang'}->{'value'} : $default_lang;
Bugzilla::Hook::process('flag-notify-pre-template', { vars => $vars });
my $template = Bugzilla->template_inner($lang);
my $message;
$template->process("request/email.txt.tmpl", $vars, \$message)
|| ThrowTemplateError($template->error());
Bugzilla->template_inner("");
MessageToMTA($message);
Bugzilla::Hook::process('flag-notify-post-send', { vars => $vars });
Bugzilla->add_mail_result('flag', $lang, $vars);
}
}

View File

@ -608,7 +608,6 @@ foreach my $bug (@bug_objects) {
$dbh->bz_start_transaction();
my $timestamp = $dbh->selectrow_array(q{SELECT LOCALTIMESTAMP(0)});
my $changes = $bug->update($timestamp);
if ($bug->{failed_checkers} && @{$bug->{failed_checkers}} &&
!$bug->{passed_checkers})
@ -618,6 +617,8 @@ foreach my $bug (@bug_objects) {
next;
}
my $changes = $bug->update($timestamp);
my %notify_deps;
if ($changes->{'bug_status'}) {
my ($old_status, $new_status) = @{ $changes->{'bug_status'} };
@ -731,6 +732,16 @@ foreach my $msg (@msgs) {
}
# Send bugmail
#Add flag notify to send_result
my @notify = Bugzilla->get_mail_result();
foreach my $notify_item (@notify) {
push @$send_results, {
type => $notify_item->{type},
notify_data => $notify_item
};
}
send_results($_) for @$send_results;
$vars->{sentmail} = $send_results;
$vars->{failed_checkers} = Bugzilla->request_cache->{failed_checkers};