From f56ef33f4ae67d692526ca2b771ed8029c22dab8 Mon Sep 17 00:00:00 2001 From: Seamus Lee Date: Mon, 14 Oct 2019 12:14:59 +1100 Subject: [PATCH] Ensure that the frontend title is used for contribution page details in receipts if avaliable Add in strict checking and simplify code block in contribution page and fix comment style as per EIleen's comments --- CRM/Contribute/BAO/Contribution.php | 7 ++++++- CRM/Contribute/BAO/Contribution/Utils.php | 13 +++++++++++++ CRM/Contribute/BAO/ContributionPage.php | 2 +- tests/phpunit/api/v3/ContributionPageTest.php | 2 ++ 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index 9c3a52b2e1..8e3d39e413 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -5045,7 +5045,12 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac ]; foreach ($valuesToCopy as $valueToCopy) { if (isset($contributionPageValues[$valueToCopy])) { - $values[$valueToCopy] = $contributionPageValues[$valueToCopy]; + if ($valueToCopy === 'title') { + $values[$valueToCopy] = CRM_Contribute_BAO_Contribution_Utils::getContributionPageTitle($this->contribution_page_id); + } + else { + $values[$valueToCopy] = $contributionPageValues[$valueToCopy]; + } } } return $values; diff --git a/CRM/Contribute/BAO/Contribution/Utils.php b/CRM/Contribute/BAO/Contribution/Utils.php index ce18d470f3..8872707de7 100644 --- a/CRM/Contribute/BAO/Contribution/Utils.php +++ b/CRM/Contribute/BAO/Contribution/Utils.php @@ -652,4 +652,17 @@ LIMIT 1 $config->defaultCurrency = CRM_Utils_Array::value('currency', $params, $config->defaultCurrency); } + /** + * Get either the public title if set or the title of a contribution page for use in workflow message template. + * @param int $contribution_page_id + * @return string + */ + public static function getContributionPageTitle($contribution_page_id) { + $title = CRM_Core_DAO::getFieldValue('CRM_Contribute_DAO_ContributionPage', $contribution_page_id, 'frontend_title'); + if (empty($title)) { + $title = CRM_Core_DAO::getFieldValue('CRM_Contribute_DAO_ContributionPage', $contribution_page_id, 'title'); + } + return $title; + } + } diff --git a/CRM/Contribute/BAO/ContributionPage.php b/CRM/Contribute/BAO/ContributionPage.php index a108185d42..15de49ebba 100644 --- a/CRM/Contribute/BAO/ContributionPage.php +++ b/CRM/Contribute/BAO/ContributionPage.php @@ -356,7 +356,7 @@ class CRM_Contribute_BAO_ContributionPage extends CRM_Contribute_DAO_Contributio ); } - $title = isset($values['title']) ? $values['title'] : CRM_Contribute_PseudoConstant::contributionPage($values['contribution_page_id']); + $title = isset($values['title']) ? $values['title'] : CRM_Contribute_BAO_Contribution_Utils::getContributionPageTitle($values['contribution_page_id']); // Set email variables explicitly to avoid leaky smarty variables. // All of these will be assigned to the template, replacing any that might be assigned elsewhere. diff --git a/tests/phpunit/api/v3/ContributionPageTest.php b/tests/phpunit/api/v3/ContributionPageTest.php index 631dc3a922..24a3d6ee0d 100644 --- a/tests/phpunit/api/v3/ContributionPageTest.php +++ b/tests/phpunit/api/v3/ContributionPageTest.php @@ -421,6 +421,7 @@ class api_v3_ContributionPageTest extends CiviUnitTestCase { $this->callAPISuccess('membership_payment', 'getsingle', ['contribution_id' => $contribution['id']]); $mut->checkMailLog([ 'Membership Type: General', + 'Test Frontend title', ]); $mut->stop(); $mut->clearMessages(); @@ -1496,6 +1497,7 @@ class api_v3_ContributionPageTest extends CiviUnitTestCase { $this->params['is_recur'] = 1; $this->params['recur_frequency_unit'] = 'month'; } + $this->params['frontend_title'] = 'Test Frontend title'; $contributionPageResult = $this->callAPISuccess($this->_entity, 'create', $this->params); if (empty($this->_ids['price_set'])) { $priceSet = $this->callAPISuccess('price_set', 'create', $this->_priceSetParams); -- 2.25.1