Avoid sending blank invoices
authorEileen McNaughton <emcnaughton@wikimedia.org>
Wed, 27 Jul 2022 16:23:18 +0000 (17:23 +0100)
committerEileen McNaughton <emcnaughton@wikimedia.org>
Wed, 27 Jul 2022 16:23:18 +0000 (17:23 +0100)
Alternative to https://github.com/civicrm/civicrm-core/pull/24029

CRM/Core/BAO/MessageTemplate.php

index 39228848c76741209b3e7fb200486ab95d21006e..c993ab849e66b8979aa1c9a36ea31402ac5dab7f 100644 (file)
@@ -388,7 +388,7 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate implemen
    */
   public static function sendTemplate(array $params): array {
     // Handle isEmailPdf here as the unit test on that function deems it 'non-conforming'.
-    $isAttachPDF = !empty($params['isEmailPdf']);
+    $isAttachPDFInvoice = !empty($params['isEmailPdf']) && !empty($params['contributionId']);
     unset($params['isEmailPdf']);
     [$mailContent, $params] = self::renderTemplateRaw($params);
 
@@ -402,7 +402,7 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate implemen
     if (!empty($params['toEmail'])) {
 
       $config = CRM_Core_Config::singleton();
-      if ($isAttachPDF) {
+      if ($isAttachPDFInvoice) {
         // FIXME: $params['contributionId'] is not modeled in the parameter list. When is it supplied? Should probably move to tokenContext.contributionId.
         $pdfHtml = CRM_Contribute_BAO_ContributionPage::addInvoicePdfToEmail($params['contributionId'], $params['contactId']);
         if (empty($params['attachments'])) {
@@ -410,7 +410,7 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate implemen
         }
         $params['attachments'][] = CRM_Utils_Mail::appendPDF('Invoice.pdf', $pdfHtml, $mailContent['format']);
       }
-      $pdf_filename = '';
+
       if ($config->doNotAttachPDFReceipt &&
         $params['PDFFilename'] &&
         $params['html']
@@ -426,10 +426,6 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate implemen
       }
 
       $sent = CRM_Utils_Mail::send($params);
-
-      if ($pdf_filename) {
-        unlink($pdf_filename);
-      }
     }
 
     return [$sent, $mailContent['subject'], $mailContent['text'], $mailContent['html']];