From fe7794b781176ea4ceea5e6a7d34e878dbdd6af8 Mon Sep 17 00:00:00 2001 From: Jon Goldberg Date: Thu, 27 Jun 2019 19:08:55 -0400 Subject: [PATCH] Update thank-you letter code path --- CRM/Contribute/BAO/Contribution.php | 30 ++++++++++++++++---- CRM/Contribute/Form/Task/PDFLetterCommon.php | 11 +------ 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index d08c137557..f2933a19c7 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -5905,18 +5905,36 @@ LIMIT 1;"; } $contributionDetails = []; foreach ($contributionIds as $id) { - $result = civicrm_api3('Contribution', 'get', ['id' => $id]); - // lab.c.o mail#46 - show labels, not values, for custom fields with option values. + $result = self::getContributionTokenValues($id, $messageToken); + $contributionDetails[$result['values'][$result['id']]['contact_id']]['subject'] = CRM_Utils_Token::replaceContributionTokens($subject, $result, FALSE, $subjectToken, FALSE, $escapeSmarty); + $contributionDetails[$result['values'][$result['id']]['contact_id']]['text'] = CRM_Utils_Token::replaceContributionTokens($text, $result, FALSE, $messageToken, FALSE, $escapeSmarty); + $contributionDetails[$result['values'][$result['id']]['contact_id']]['html'] = CRM_Utils_Token::replaceContributionTokens($html, $result, FALSE, $messageToken, FALSE, $escapeSmarty); + } + return $contributionDetails; + } + + /** + * Get the contribution fields for $id and display labels where + * appropriate (if the token is present). + * + * @param int $id + * @param array $messageToken + * @return array + */ + public static function getContributionTokenValues($id, $messageToken) { + if (empty($id)) { + return []; + } + $result = civicrm_api3('Contribution', 'get', ['id' => $id]); + // lab.c.o mail#46 - show labels, not values, for custom fields with option values. + if (!empty($messageToken)) { foreach ($result['values'][$id] as $fieldName => $fieldValue) { if (strpos($fieldName, 'custom_') === 0 && array_search($fieldName, $messageToken['contribution']) !== FALSE) { $result['values'][$id][$fieldName] = CRM_Core_BAO_CustomField::displayValue($result['values'][$id][$fieldName], $fieldName); } } - $contributionDetails[$result['values'][$result['id']]['contact_id']]['subject'] = CRM_Utils_Token::replaceContributionTokens($subject, $result, FALSE, $subjectToken, FALSE, $escapeSmarty); - $contributionDetails[$result['values'][$result['id']]['contact_id']]['text'] = CRM_Utils_Token::replaceContributionTokens($text, $result, FALSE, $messageToken, FALSE, $escapeSmarty); - $contributionDetails[$result['values'][$result['id']]['contact_id']]['html'] = CRM_Utils_Token::replaceContributionTokens($html, $result, FALSE, $messageToken, FALSE, $escapeSmarty); } - return $contributionDetails; + return $result; } /** diff --git a/CRM/Contribute/Form/Task/PDFLetterCommon.php b/CRM/Contribute/Form/Task/PDFLetterCommon.php index 88a870f716..8650ac02c7 100644 --- a/CRM/Contribute/Form/Task/PDFLetterCommon.php +++ b/CRM/Contribute/Form/Task/PDFLetterCommon.php @@ -257,16 +257,7 @@ class CRM_Contribute_Form_Task_PDFLetterCommon extends CRM_Contact_Form_Task_PDF public static function buildContributionArray($groupBy, $contributionIDs, $returnProperties, $skipOnHold, $skipDeceased, $messageToken, $task, $separator, $isIncludeSoftCredits) { $contributions = $contacts = []; foreach ($contributionIDs as $item => $contributionId) { - // Basic return attributes available to the template. - $returnValues = ['contact_id', 'total_amount', 'financial_type', 'receive_date', 'contribution_campaign_title']; - if (!empty($messageToken['contribution'])) { - $returnValues = array_merge($messageToken['contribution'], $returnValues); - } - // retrieve contribution tokens listed in $returnProperties using Contribution.Get API - $contribution = civicrm_api3('Contribution', 'getsingle', [ - 'id' => $contributionId, - 'return' => $returnValues, - ]); + $contribution = CRM_Contribute_BAO_Contribution::getContributionTokenValues($contributionId, $messageToken)['values'][$contributionId]; $contribution['campaign'] = CRM_Utils_Array::value('contribution_campaign_title', $contribution); $contributions[$contributionId] = $contribution; -- 2.25.1