From e3edbc52e592519697bfb0130a3ef13a7744a5d2 Mon Sep 17 00:00:00 2001 From: Byron Jones Date: Mon, 21 Oct 2013 15:46:30 +0800 Subject: Bug 910565: backport bug 877078 to bmo (shift bugmail generation to the jobqueue) --- extensions/BMO/lib/Reports/EmailQueue.pm | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) (limited to 'extensions/BMO') diff --git a/extensions/BMO/lib/Reports/EmailQueue.pm b/extensions/BMO/lib/Reports/EmailQueue.pm index 1bf2ca003..f1383aac7 100644 --- a/extensions/BMO/lib/Reports/EmailQueue.pm +++ b/extensions/BMO/lib/Reports/EmailQueue.pm @@ -39,11 +39,26 @@ sub report { $vars->{'jobs'} = $dbh->selectall_arrayref($query, { Slice => {} }); foreach my $job (@{ $vars->{'jobs'} }) { eval { - my $msg = _cond_thaw(delete $job->{'arg'})->{msg}; - if (ref($msg) && blessed($msg) eq 'Email::MIME') { - $job->{'subject'} = $msg->header('subject'); - } else { - ($job->{'subject'}) = $msg =~ /\nSubject: ([^\n]+)/; + my ($recipient, $description); + my $arg = _cond_thaw(delete $job->{arg}); + + if (exists $arg->{vars}) { + my $vars = $arg->{vars}; + $recipient = $vars->{to_user}->{login_name}; + $description = '[Bug ' . $vars->{bug}->{bug_id} . '] ' . $vars->{bug}->{short_desc}; + } elsif (exists $arg->{msg}) { + my $msg = $arg->{msg}; + if (ref($msg) && blessed($msg) eq 'Email::MIME') { + $recipient = $msg->header('to'); + $description = $msg->header('subject'); + } else { + ($recipient) = $msg =~ /\nTo: ([^\n]+)/; + ($description) = $msg =~ /\nSubject: ([^\n]+)/; + } + } + + if ($recipient) { + $job->{subject} = "<$recipient> $description"; } }; } -- cgit v1.2.3-24-g4f1b