stop upgrade from corrupting message templates, #18406
authorMark Wells <mark@freeside.biz>
Tue, 10 Jul 2012 00:02:49 +0000 (17:02 -0700)
committerMark Wells <mark@freeside.biz>
Tue, 10 Jul 2012 00:02:49 +0000 (17:02 -0700)
FS/FS/msg_template.pm

index ffb4f52..cac7fe5 100644 (file)
@@ -678,10 +678,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;