summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2012-07-09 17:01:47 -0700
committerMark Wells <mark@freeside.biz>2012-07-09 17:01:47 -0700
commitdc8da661243bf26a0a3c2471651e581d2d846a74 (patch)
treea58fab796247d4aca8a21b8a56c462503b3c1670
parent94376ab21b2b7c7a5ab516e5c11db94f87bf6639 (diff)
stop upgrade from corrupting message templates, #18406
-rw-r--r--FS/FS/msg_template.pm16
1 files changed, 13 insertions, 3 deletions
diff --git a/FS/FS/msg_template.pm b/FS/FS/msg_template.pm
index 57d0004c3..b88e13ae0 100644
--- a/FS/FS/msg_template.pm
+++ b/FS/FS/msg_template.pm
@@ -654,10 +654,20 @@ sub _upgrade_data {
if ( $msg_template->subject || $msg_template->body ) {
# create new default content
my %content;
- foreach ('subject','body') {
- $content{$_} = $msg_template->$_;
- $msg_template->setfield($_, '');
+ $content{subject} = $msg_template->subject;
+ $msg_template->set('subject', '');
+
+ # work around obscure Pg/DBD bug
+ # https://rt.cpan.org/Public/Bug/Display.html?id=60200
+ # (though the right fix is to upgrade DBD)
+ my $body = $msg_template->body;
+ if ( $body =~ /^x([0-9a-f]+)$/ ) {
+ # there should be no real message templates that look like that
+ warn "converting template body to TEXT\n";
+ $body = pack('H*', $1);
}
+ $content{body} = $body;
+ $msg_template->set('body', '');
my $error = $msg_template->replace(%content);
die $error if $error;