diff options
author | dkl%redhat.com <> | 2008-08-28 03:38:45 +0200 |
---|---|---|
committer | dkl%redhat.com <> | 2008-08-28 03:38:45 +0200 |
commit | ef56c491a65eed9dfddb2866c5faa59acb69b0ed (patch) | |
tree | c19810a3e76fae26301ce030f5e9412e564fcee7 /Bugzilla | |
parent | 745f9e658a8e4d26bfd250b263132b25ab60e173 (diff) | |
download | bugzilla-ef56c491a65eed9dfddb2866c5faa59acb69b0ed.tar.gz bugzilla-ef56c491a65eed9dfddb2866c5faa59acb69b0ed.tar.xz |
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
Diffstat (limited to 'Bugzilla')
-rw-r--r-- | Bugzilla/BugMail.pm | 18 | ||||
-rw-r--r-- | Bugzilla/Flag.pm | 13 | ||||
-rw-r--r-- | Bugzilla/Mailer.pm | 29 |
3 files changed, 38 insertions, 22 deletions
diff --git a/Bugzilla/BugMail.pm b/Bugzilla/BugMail.pm index 20bb7e254..4e91d4be4 100644 --- a/Bugzilla/BugMail.pm +++ b/Bugzilla/BugMail.pm @@ -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; diff --git a/Bugzilla/Flag.pm b/Bugzilla/Flag.pm index 73266ce9f..8201a907d 100644 --- a/Bugzilla/Flag.pm +++ b/Bugzilla/Flag.pm @@ -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; diff --git a/Bugzilla/Mailer.pm b/Bugzilla/Mailer.pm index 5c7a75450..c790d179f 100644 --- a/Bugzilla/Mailer.pm +++ b/Bugzilla/Mailer.pm @@ -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; |