Commit ef56c491 authored by dkl%redhat.com's avatar dkl%redhat.com

Bug 449791 – Allow flag notification emails to be threaded similar to normal bug change emails

Patch by Dave Lawrence <dkl@redhat.com> - r/a=LpSolit
parent 745f9e65
......@@ -636,22 +636,6 @@ sub sendMail {
push(@watchingrel, 'None') unless @watchingrel;
push @watchingrel, map { user_id_to_login($_) } @$watchingRef;
my $sitespec = '@' . Bugzilla->params->{'urlbase'};
$sitespec =~ s/:\/\//\./; # Make the protocol look like part of the domain
$sitespec =~ s/^([^:\/]+):(\d+)/$1/; # Remove a port number, to relocate
if ($2) {
$sitespec = "-$2$sitespec"; # Put the port number back in, before the '@'
}
my $threadingmarker;
if ($isnew) {
$threadingmarker = "Message-ID: <bug-$id-" . $user->id . "$sitespec>";
}
else {
$threadingmarker = "In-Reply-To: <bug-$id-" . $user->id . "$sitespec>" .
"\nReferences: <bug-$id-" . $user->id . "$sitespec>";
}
my $vars = {
isnew => $isnew,
to => $user->email,
......@@ -678,7 +662,7 @@ sub sendMail {
reporter => $values{'reporter'},
reportername => Bugzilla::User->new({name => $values{'reporter'}})->name,
diffs => $diffs,
threadingmarker => $threadingmarker
threadingmarker => build_thread_marker($id, $user->id, $isnew),
};
my $msg;
......
......@@ -1104,10 +1104,15 @@ sub notify {
}
foreach my $to (keys %recipients) {
my $vars = { 'flag' => $flag,
'to' => $to,
'bug' => $bug,
'attachment' => $attachment};
# Add threadingmarker to allow flag notification emails to be the
# threaded similar to normal bug change emails.
my $thread_user_id = $recipients{$to} ? $recipients{$to}->id : 0;
my $vars = { 'flag' => $flag,
'to' => $to,
'bug' => $bug,
'attachment' => $attachment,
'threadingmarker' => build_thread_marker($bug->id, $thread_user_id) };
my $lang = $recipients{$to} ?
$recipients{$to}->settings->{'lang'}->{'value'} : $default_lang;
......
......@@ -35,7 +35,7 @@ package Bugzilla::Mailer;
use strict;
use base qw(Exporter);
@Bugzilla::Mailer::EXPORT = qw(MessageToMTA);
@Bugzilla::Mailer::EXPORT = qw(MessageToMTA build_thread_marker);
use Bugzilla::Constants;
use Bugzilla::Error;
......@@ -154,4 +154,31 @@ sub MessageToMTA {
}
}
# Builds header suitable for use as a threading marker in email notifications
sub build_thread_marker {
my ($bug_id, $user_id, $is_new) = @_;
if (!defined $user_id) {
$user_id = Bugzilla->user->id;
}
my $sitespec = '@' . Bugzilla->params->{'urlbase'};
$sitespec =~ s/:\/\//\./; # Make the protocol look like part of the domain
$sitespec =~ s/^([^:\/]+):(\d+)/$1/; # Remove a port number, to relocate
if ($2) {
$sitespec = "-$2$sitespec"; # Put the port number back in, before the '@'
}
my $threadingmarker;
if ($is_new) {
$threadingmarker = "Message-ID: <bug-$bug_id-$user_id$sitespec>";
}
else {
$threadingmarker = "In-Reply-To: <bug-$bug_id-$user_id$sitespec>" .
"\nReferences: <bug-$bug_id-$user_id$sitespec>";
}
return $threadingmarker;
}
1;
......@@ -49,6 +49,7 @@ Subject: [% flag.type.name %] [%+ subject_status %]: [[% terms.Bug %] [%+ bug.bu
[%- IF attachment %] :
[Attachment [% attachment.id %]] [% attachment.description %][% END %]
X-Bugzilla-Type: request
[%+ threadingmarker %]
[%+ USE wrap -%]
[%- FILTER bullet = wrap(80) -%]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment