summaryrefslogtreecommitdiff
path: root/devel/bugzilla50/files/patch-PR206103
blob: c13763268e74c204dec11023cbe283566b16a245 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
# PR 206103
# Upstream PR: https://bugzilla.mozilla.org/show_bug.cgi?id=1235395
Index: files/patch-Bugzilla_Mailer.pm
===================================================================
--- files/patch-Bugzilla_Mailer.pm.orig	2016-01-10 16:55:40 UTC
+++ files/patch-Bugzilla_Mailer.pm
@@ -0,0 +1,101 @@
+# Bug 1235395 - whine.pl broken due to a missing generate_email() routine
+# https://bugzilla.mozilla.org/show_bug.cgi?id=1235395
+# Status: Upstreamed, pending next release
+
+--- Bugzilla/Mailer.pm.orig	2015-12-22 21:22:10 UTC
++++ Bugzilla/Mailer.pm
+@@ -12,13 +12,13 @@ use strict;
+ use warnings;
+ 
+ use parent qw(Exporter);
+-@Bugzilla::Mailer::EXPORT = qw(MessageToMTA build_thread_marker);
+-
++@Bugzilla::Mailer::EXPORT = qw(MessageToMTA build_thread_marker generate_email);
+ use Bugzilla::Constants;
+ use Bugzilla::Error;
+ use Bugzilla::Hook;
+ use Bugzilla::MIME;
+ use Bugzilla::Util;
++use Bugzilla::User;
+ 
+ use Date::Format qw(time2str);
+ 
+@@ -161,6 +161,67 @@ sub send_staged_mail {
+     }
+ }
+ 
++sub generate_email {
++    my ($vars, $templates) = @_;
++    my ($lang, $email_format, $msg_text, $msg_html, $msg_header);
++    state $use_utf8 = Bugzilla->params->{'utf8'};
++
++    if ($vars->{to_user}) {
++        $lang = $vars->{to_user}->setting('lang');
++        $email_format = $vars->{to_user}->setting('email_format');
++    } else {
++        # If there are users in the CC list who don't have an account,
++        # use the default language for email notifications.
++        $lang = Bugzilla::User->new()->setting('lang');
++        # However we cannot fall back to the default email_format, since
++        # it may be HTML, and many of the includes used in the HTML
++        # template require a valid user object. Instead we fall back to
++        # the plaintext template.
++        $email_format = 'text_only';
++    }
++
++    my $template = Bugzilla->template_inner($lang);
++
++    $template->process($templates->{header}, $vars, \$msg_header)
++        || ThrowTemplateError($template->error());
++    $template->process($templates->{text}, $vars, \$msg_text)
++        || ThrowTemplateError($template->error());
++
++    my @parts = (
++        Bugzilla::MIME->create(
++            attributes => {
++                content_type => 'text/plain',
++                charset      => $use_utf8 ? 'UTF-8' : 'iso-8859-1',
++                encoding     => 'quoted-printable',
++            },
++            body_str => $msg_text,
++        )
++    );
++    if ($templates->{html} && $email_format eq 'html') {
++        $template->process($templates->{html}, $vars, \$msg_html)
++            || ThrowTemplateError($template->error());
++        push @parts, Bugzilla::MIME->create(
++            attributes => {
++                content_type => 'text/html',
++                charset      => $use_utf8 ? 'UTF-8' : 'iso-8859-1',
++                encoding     => 'quoted-printable',
++            },
++            body_str => $msg_html,
++        );
++    }
++
++    my $email = Bugzilla::MIME->new($msg_header);
++    if (scalar(@parts) == 1) {
++        $email->content_type_set($parts[0]->content_type);
++    } else {
++        $email->content_type_set('multipart/alternative');
++        # Some mail clients need same encoding for each part, even empty ones.
++        $email->charset_set('UTF-8') if $use_utf8;
++    }
++    $email->parts_set(\@parts);
++    return $email;
++}
++
+ 1;
+ 
+ __END__
+@@ -173,6 +234,10 @@ Bugzilla::Mailer - Provides methods for 
+ 
+ =over
+ 
++=item C<generate_email>
++
++Generates a multi-part email message, using the supplied list of templates.
++
+ =item C<MessageToMTA>
+ 
+ Sends the passed message to the mail transfer agent.
--- files/patch-Bugzilla_Product.pm.orig	2016-01-10 16:55:40 UTC
+++ files/patch-Bugzilla_Product.pm
@@ -0,0 +1,14 @@
+# Bug 1235395 - whine.pl broken due to a missing generate_email() routine
+# https://bugzilla.mozilla.org/show_bug.cgi?id=1235395
+# Status: Upstreamed, pending next release
+
+--- Bugzilla/Product.pm.orig	2015-12-22 21:22:10 UTC
++++ Bugzilla/Product.pm
+@@ -22,7 +22,6 @@ use Bugzilla::Milestone;
+ use Bugzilla::Field;
+ use Bugzilla::Status;
+ use Bugzilla::Install::Requirements;
+-use Bugzilla::Mailer;
+ use Bugzilla::Series;
+ use Bugzilla::Hook;
+ use Bugzilla::FlagType;
--- files/patch-whine.pl.orig	2016-01-10 16:55:40 UTC
+++ files/patch-whine.pl
@@ -0,0 +1,22 @@
+# Bug 1235395 - whine.pl broken due to a missing generate_email() routine
+# https://bugzilla.mozilla.org/show_bug.cgi?id=1235395
+# Status: Upstreamed, pending next release
+
+--- whine.pl.orig	2015-12-22 21:22:11 UTC
++++ whine.pl
+@@ -13,14 +13,13 @@
+ use 5.10.1;
+ use strict;
+ use warnings;
+-
+ use lib qw(. lib);
+ 
+ use Bugzilla;
+ use Bugzilla::Constants;
+ use Bugzilla::Search;
+ use Bugzilla::User;
+-use Bugzilla::Mailer;
++use Bugzilla::Mailer qw(MessageToMTA generate_email);
+ use Bugzilla::Util;
+ use Bugzilla::Group;
+