[REF] Clarify what is being used from getElements, remove unused
authorEileen McNaughton <emcnaughton@wikimedia.org>
Fri, 19 Aug 2022 07:59:22 +0000 (19:59 +1200)
committerEileen McNaughton <emcnaughton@wikimedia.org>
Fri, 19 Aug 2022 15:24:53 +0000 (03:24 +1200)
CRM/Contribute/Form/Task/Invoice.php
CRM/Contribute/Form/Task/PDF.php

index 82aa6996707f2f5abfadcf581d4d6ed4d528206a..85dfe4a4ad9c5585f0d654311037fe5d15282300 100644 (file)
@@ -211,8 +211,19 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
   public static function printPDF($contribIDs, &$params, $contactIds) {
     // get all the details needed to generate a invoice
     $messageInvoice = [];
+    $isCreatePDF = FALSE;
+    if (!empty($params['output']) &&
+      ($params['output'] === 'pdf_invoice' || $params['output'] === 'pdf_receipt')
+    ) {
+      $isCreatePDF = TRUE;
+    }
+
     $invoiceTemplate = CRM_Core_Smarty::singleton();
-    $invoiceElements = CRM_Contribute_Form_Task_PDF::getElements($contribIDs, $params, $contactIds);
+    $invoiceElements = CRM_Contribute_Form_Task_PDF::getElements($contribIDs, $params, $contactIds, $isCreatePDF);
+    $elementDetails = $invoiceElements['details'];
+    $excludedContactIDs = $invoiceElements['excludeContactIds'];
+    $suppressedEmails = $isCreatePDF ? NULL : $invoiceElements['suppressedEmails'];
+    unset($invoiceElements);
 
     // gives the status id when contribution status is 'Refunded'
     $contributionStatusID = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name');
@@ -221,9 +232,9 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
     $pendingStatusId = CRM_Utils_Array::key('Pending', $contributionStatusID);
     $pdfFormat = CRM_Core_BAO_PdfFormat::getByName('default_invoice_pdf_format');
 
-    foreach ($invoiceElements['details'] as $contributionID => $detail) {
+    foreach ($elementDetails as $contributionID => $detail) {
       $input = $ids = [];
-      if (in_array($detail['contact'], $invoiceElements['excludeContactIds'])) {
+      if (in_array($detail['contact'], $excludedContactIDs)) {
         continue;
       }
 
@@ -480,7 +491,7 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
       }
 
       // condition to check for download PDF Invoice or email Invoice
-      if ($invoiceElements['createPdf']) {
+      if ($isCreatePDF) {
         [$sent, $subject, $message, $html] = CRM_Core_BAO_MessageTemplate::sendTemplate($sendTemplateParams);
         if (isset($params['forPage'])) {
           return $html;
@@ -502,7 +513,7 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
       elseif ($contribution->_component == 'contribute') {
         $email = CRM_Contact_BAO_Contact::getPrimaryEmail($contribution->contact_id);
 
-        $sendTemplateParams['tplParams'] = array_merge($tplParams, ['email_comment' => $invoiceElements['params']['email_comment']]);
+        $sendTemplateParams['tplParams'] = array_merge($tplParams, ['email_comment' => $params['email_comment']]);
         $sendTemplateParams['from'] = $fromEmailAddress;
         $sendTemplateParams['toEmail'] = $email;
         $sendTemplateParams['cc'] = $values['cc_receipt'] ?? NULL;
@@ -517,7 +528,7 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
       elseif ($contribution->_component == 'event') {
         $email = CRM_Contact_BAO_Contact::getPrimaryEmail($contribution->contact_id);
 
-        $sendTemplateParams['tplParams'] = array_merge($tplParams, ['email_comment' => $invoiceElements['params']['email_comment']]);
+        $sendTemplateParams['tplParams'] = array_merge($tplParams, ['email_comment' => $params['email_comment']]);
         $sendTemplateParams['from'] = $fromEmailAddress;
         $sendTemplateParams['toEmail'] = $email;
         $sendTemplateParams['cc'] = $values['cc_confirm'] ?? NULL;
@@ -531,7 +542,7 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
       $invoiceTemplate->clearTemplateVars();
     }
 
-    if ($invoiceElements['createPdf']) {
+    if ($isCreatePDF) {
       if (isset($params['forPage'])) {
         return $html;
       }
@@ -545,8 +556,8 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
       }
     }
     else {
-      if ($invoiceElements['suppressedEmails']) {
-        $status = ts('Email was NOT sent to %1 contacts (no email address on file, or communication preferences specify DO NOT EMAIL, or contact is deceased).', [1 => $invoiceElements['suppressedEmails']]);
+      if ($suppressedEmails) {
+        $status = ts('Email was NOT sent to %1 contacts (no email address on file, or communication preferences specify DO NOT EMAIL, or contact is deceased).', [1 => $suppressedEmails]);
         $msgTitle = ts('Email Error');
         $msgType = 'error';
       }
index d81f5d7deb31330d5f198fb40e8e43e16a72f224..e581b9f3c26ee0a822c560c08441b979468f6177 100644 (file)
@@ -127,12 +127,22 @@ AND    {$this->_componentClause}";
     $template = CRM_Core_Smarty::singleton();
 
     $params = $this->controller->exportValues($this->_name);
-    $elements = self::getElements($this->_contributionIds, $params, $this->_contactIds);
+    $isCreatePDF = FALSE;
+    if (!empty($params['output']) &&
+      ($params['output'] === 'pdf_invoice' || $params['output'] === 'pdf_receipt')
+    ) {
+      $isCreatePDF = TRUE;
+    }
+    $elements = self::getElements($this->_contributionIds, $params, $this->_contactIds, $isCreatePDF);
+    $elementDetails = $elements['details'];
+    $excludedContactIDs = $elements['excludeContactIds'];
+    $suppressedEmails = $elements['suppressedEmails'];
 
-    foreach ($elements['details'] as $contribID => $detail) {
+    unset($elements);
+    foreach ($elementDetails as $contribID => $detail) {
       $input = $ids = [];
 
-      if (in_array($detail['contact'], $elements['excludeContactIds'])) {
+      if (in_array($detail['contact'], $excludedContactIDs)) {
         continue;
       }
       // @todo - CRM_Contribute_BAO_Contribution::sendMail re-does pretty much everything between here & when we call it.
@@ -167,7 +177,7 @@ AND    {$this->_componentClause}";
             1 => [$contribution->trxn_id, 'String'],
           ]);
 
-      if (isset($params['from_email_address']) && !$elements['createPdf']) {
+      if (isset($params['from_email_address']) && !$isCreatePDF) {
         // If a logged in user from email is used rather than a domain wide from email address
         // the from_email_address params key will be numerical and we need to convert it to be
         // in normal from email format
@@ -178,7 +188,7 @@ AND    {$this->_componentClause}";
         $input['receipt_from_name'] = str_replace('"', '', $fromDetails[0]);
       }
 
-      $mail = CRM_Contribute_BAO_Contribution::sendMail($input, $ids, $contribID, $elements['createPdf']);
+      $mail = CRM_Contribute_BAO_Contribution::sendMail($input, $ids, $contribID, $isCreatePDF);
 
       if (!empty($mail['html'])) {
         $message[] = $mail['html'];
@@ -191,17 +201,17 @@ AND    {$this->_componentClause}";
       $template->clearTemplateVars();
     }
 
-    if ($elements['createPdf']) {
+    if ($isCreatePDF) {
       CRM_Utils_PDF_Utils::html2pdf($message,
         'receipt.pdf',
         FALSE,
-        $elements['params']['pdf_format_id']
+        $params['pdf_format_id']
       );
       CRM_Utils_System::civiExit();
     }
     else {
-      if ($elements['suppressedEmails']) {
-        $status = ts('Email was NOT sent to %1 contacts (no email address on file, or communication preferences specify DO NOT EMAIL, or contact is deceased).', [1 => $elements['suppressedEmails']]);
+      if ($suppressedEmails) {
+        $status = ts('Email was NOT sent to %1 contacts (no email address on file, or communication preferences specify DO NOT EMAIL, or contact is deceased).', [1 => $suppressedEmails]);
         $msgTitle = ts('Email Error');
         $msgType = 'error';
       }
@@ -217,39 +227,24 @@ AND    {$this->_componentClause}";
   /**
    * Declaration of common variables for Invoice and PDF.
    *
-   *
    * @param array $contribIds
    *   Contribution Id.
    * @param array $params
    *   Parameter for pdf or email invoices.
    * @param array $contactIds
    *   Contact Id.
+   * @param bool $isCreatePDF
    *
    * @return array
    *   array of common elements
    *
    * @throws \CiviCRM_API3_Exception
    */
-  public static function getElements($contribIds, $params, $contactIds) {
+  public static function getElements(array $contribIds, array $params, array $contactIds, bool $isCreatePDF): array {
     $pdfElements = [];
-
-    $pdfElements['contribIDs'] = implode(',', $contribIds);
-
-    $pdfElements['details'] = self::getDetails($pdfElements['contribIDs']);
-
-    $pdfElements['baseIPN'] = new CRM_Core_Payment_BaseIPN();
-
-    $pdfElements['params'] = $params;
-
-    $pdfElements['createPdf'] = FALSE;
-    if (!empty($pdfElements['params']['output']) &&
-      ($pdfElements['params']['output'] === 'pdf_invoice' || $pdfElements['params']['output'] === 'pdf_receipt')
-    ) {
-      $pdfElements['createPdf'] = TRUE;
-    }
-
+    $pdfElements['details'] = self::getDetails(implode(',', $contribIds));
     $excludeContactIds = [];
-    if (!$pdfElements['createPdf']) {
+    if (!$isCreatePDF) {
       $contactDetails = civicrm_api3('Contact', 'get', [
         'return' => ['email', 'do_not_email', 'is_deceased', 'on_hold'],
         'id' => ['IN' => $contactIds],