From 875e076bf5553f71b0c7d7ebe074e84b12259c43 Mon Sep 17 00:00:00 2001 From: Jon Goldberg Date: Thu, 27 Jun 2019 16:06:40 -0400 Subject: [PATCH] mail#46 - show label, not value, on contribution custom field tokens --- CRM/Contribute/BAO/Contribution.php | 6 ++++++ tests/phpunit/CRM/Contribute/BAO/ContributionTest.php | 10 ++++++++-- tests/phpunit/CiviTest/CiviUnitTestCase.php | 2 +- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index 5997ce9e87..d08c137557 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -5906,6 +5906,12 @@ 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. + 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); diff --git a/tests/phpunit/CRM/Contribute/BAO/ContributionTest.php b/tests/phpunit/CRM/Contribute/BAO/ContributionTest.php index 434ef29390..1d463ff4ea 100644 --- a/tests/phpunit/CRM/Contribute/BAO/ContributionTest.php +++ b/tests/phpunit/CRM/Contribute/BAO/ContributionTest.php @@ -1466,6 +1466,8 @@ WHERE eft.entity_id = %1 AND ft.to_financial_account_id <> %2"; * This function tests whether the contribution tokens are replaced with values from contribution. */ public function testReplaceContributionTokens() { + $customGroup = $this->customGroupCreate(['extends' => 'Contribution']); + $customField = $this->customFieldOptionValueCreate($customGroup, 'myCustomField'); $contactId1 = $this->individualCreate(); $params = array( 'contact_id' => $contactId1, @@ -1476,6 +1478,7 @@ WHERE eft.entity_id = %1 AND ft.to_financial_account_id <> %2"; 'invoice_id' => 67890, 'source' => 'SSF', 'contribution_status_id' => 2, + "custom_{$customField['id']}" => 'value1', ); $contribution1 = $this->contributionCreate($params); $contactId2 = $this->individualCreate(); @@ -1488,6 +1491,7 @@ WHERE eft.entity_id = %1 AND ft.to_financial_account_id <> %2"; 'invoice_id' => 12345, 'source' => 'ABC', 'contribution_status_id' => 1, + "custom_{$customField['id']}" => 'value2', ); $contribution2 = $this->contributionCreate($params); $ids = array($contribution1, $contribution2); @@ -1496,7 +1500,8 @@ WHERE eft.entity_id = %1 AND ft.to_financial_account_id <> %2"; $text = "Contribution Amount: {contribution.total_amount}"; $html = "

Contribution Source: {contribution.contribution_source}


Contribution Invoice ID: {contribution.invoice_id}


-

Contribution Receive Date: {contribution.receive_date}


"; +

Contribution Receive Date: {contribution.receive_date}


+

Contribution Custom Field 1: {contribution.custom_1}


"; $subjectToken = CRM_Utils_Token::getTokens($subject); $messageToken = CRM_Utils_Token::getTokens($text); @@ -1515,7 +1520,8 @@ WHERE eft.entity_id = %1 AND ft.to_financial_account_id <> %2"; $this->assertEquals("Contribution Amount: $ 100.00", $contributionDetails[$contactId1]['text'], "The text does not match"); $this->assertEquals("

Contribution Source: ABC


Contribution Invoice ID: 12345


-

Contribution Receive Date: May 11th, 2015


", $contributionDetails[$contactId2]['html'], "The html does not match"); +

Contribution Receive Date: May 11th, 2015


+

Contribution Custom Field 1: Label2


", $contributionDetails[$contactId2]['html'], "The html does not match"); } /** diff --git a/tests/phpunit/CiviTest/CiviUnitTestCase.php b/tests/phpunit/CiviTest/CiviUnitTestCase.php index 8a6419e12e..19769a1c40 100644 --- a/tests/phpunit/CiviTest/CiviUnitTestCase.php +++ b/tests/phpunit/CiviTest/CiviUnitTestCase.php @@ -1683,7 +1683,7 @@ class CiviUnitTestCase extends PHPUnit\Framework\TestCase { 'option_value' => array('value1', 'value2'), 'option_name' => array($name . '_1', $name . '_2'), 'option_weight' => array(1, 2), - 'option_status' => 1, + 'option_status' => array(1, 1), ); $params = array_merge($fieldParams, $optionGroup, $optionValue, $extraParams); -- 2.25.1