summaryrefslogtreecommitdiffstats
path: root/Bugzilla
diff options
context:
space:
mode:
authordkl%redhat.com <>2008-08-28 03:38:45 +0200
committerdkl%redhat.com <>2008-08-28 03:38:45 +0200
commitef56c491a65eed9dfddb2866c5faa59acb69b0ed (patch)
treec19810a3e76fae26301ce030f5e9412e564fcee7 /Bugzilla
parent745f9e658a8e4d26bfd250b263132b25ab60e173 (diff)
downloadbugzilla-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.pm18
-rw-r--r--Bugzilla/Flag.pm13
-rw-r--r--Bugzilla/Mailer.pm29
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;