From 6d5b9c6325e3f0c140e33b0999a9c2b97dc5d047 Mon Sep 17 00:00:00 2001 From: eileen Date: Mon, 20 Aug 2018 15:17:17 +1200 Subject: [PATCH] Deduplicate setting of mailSent message --- CRM/Member/Form.php | 23 +++++++++++++ CRM/Member/Form/Membership.php | 32 +++++++------------ .../CRM/Member/Form/MembershipTest.php | 11 ++++++- 3 files changed, 45 insertions(+), 21 deletions(-) diff --git a/CRM/Member/Form.php b/CRM/Member/Form.php index 2d2a757264..913654e2b8 100644 --- a/CRM/Member/Form.php +++ b/CRM/Member/Form.php @@ -91,6 +91,29 @@ class CRM_Member_Form extends CRM_Contribute_Form_AbstractEditPayment { return 'Membership'; } + /** + * @var array + */ + protected $statusMessage = []; + + /** + * Add to the status message. + * + * @param $message + */ + protected function addStatusMessage($message) { + $this->statusMessage[] = $message; + } + + /** + * Get the status message. + * + * @return string + */ + protected function getStatusMessage() { + return implode(' ', $this->statusMessage); + } + /** * Values submitted to the form, processed along the way. * diff --git a/CRM/Member/Form/Membership.php b/CRM/Member/Form/Membership.php index b81a510f1d..19766da30a 100644 --- a/CRM/Member/Form/Membership.php +++ b/CRM/Member/Form/Membership.php @@ -1825,11 +1825,10 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { * * @param CRM_Member_BAO_Membership $membership * @param string $endDate - * @param bool $receiptSend * * @return string */ - protected function getStatusMessageForUpdate($membership, $endDate, $receiptSend) { + protected function getStatusMessageForUpdate($membership, $endDate) { // End date can be modified by hooks, so if end date is set then use it. $endDate = ($membership->end_date) ? $membership->end_date : $endDate; @@ -1838,10 +1837,6 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { $endDate = CRM_Utils_Date::customFormat($endDate); $statusMsg .= ' ' . ts('The membership End Date is %1.', array(1 => $endDate)); } - - if ($receiptSend) { - $statusMsg .= ' ' . ts('A confirmation and receipt has been sent to %1.', array(1 => $this->_contributorEmail)); - } return $statusMsg; } @@ -1849,17 +1844,15 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { * Get status message for create action. * * @param string $endDate - * @param bool $receiptSend * @param array $membershipTypes * @param array $createdMemberships * @param bool $isRecur * @param array $calcDates - * @param bool $mailSent * * @return array|string */ - protected function getStatusMessageForCreate($endDate, $receiptSend, $membershipTypes, $createdMemberships, - $isRecur, $calcDates, $mailSent) { + protected function getStatusMessageForCreate($endDate, $membershipTypes, $createdMemberships, + $isRecur, $calcDates) { // FIX ME: fix status messages $statusMsg = array(); @@ -1883,9 +1876,6 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { } } $statusMsg = implode('
', $statusMsg); - if ($receiptSend && !empty($mailSent)) { - $statusMsg .= ' ' . ts('A membership confirmation and receipt has been sent to %1.', array(1 => $this->_contributorEmail)); - } return $statusMsg; } @@ -1897,19 +1887,21 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { * @param $createdMemberships * @param $isRecur * @param $calcDates - * @param $mailSend + * @param $mailSent */ - protected function setStatusMessage($membership, $endDate, $receiptSend, $membershipTypes, $createdMemberships, $isRecur, $calcDates, $mailSend) { - $statusMsg = ''; + protected function setStatusMessage($membership, $endDate, $receiptSend, $membershipTypes, $createdMemberships, $isRecur, $calcDates, $mailSent) { if (($this->_action & CRM_Core_Action::UPDATE)) { - $statusMsg = $this->getStatusMessageForUpdate($membership, $endDate, $receiptSend); + $this->addStatusMessage($this->getStatusMessageForUpdate($membership, $endDate)); } elseif (($this->_action & CRM_Core_Action::ADD)) { - $statusMsg = $this->getStatusMessageForCreate($endDate, $receiptSend, $membershipTypes, $createdMemberships, - $isRecur, $calcDates, $mailSend); + $this->addStatusMessage($this->getStatusMessageForCreate($endDate, $membershipTypes, $createdMemberships, + $isRecur, $calcDates)); + } + if ($receiptSend && $mailSent) { + $this->addStatusMessage(ts('A membership confirmation and receipt has been sent to %1.', array(1 => $this->_contributorEmail))); } - CRM_Core_Session::setStatus($statusMsg, ts('Complete'), 'success'); + CRM_Core_Session::setStatus($this->getStatusMessage(), ts('Complete'), 'success'); //CRM-15187 // display message when membership type is changed if (($this->_action & CRM_Core_Action::UPDATE) && $this->_id && !in_array($this->_memType, $this->_memTypeSelected)) { diff --git a/tests/phpunit/CRM/Member/Form/MembershipTest.php b/tests/phpunit/CRM/Member/Form/MembershipTest.php index 75adbe74a1..7641ab34f1 100644 --- a/tests/phpunit/CRM/Member/Form/MembershipTest.php +++ b/tests/phpunit/CRM/Member/Form/MembershipTest.php @@ -464,6 +464,7 @@ class CRM_Member_Form_MembershipTest extends CiviUnitTestCase { * @dataProvider getThousandSeparators */ public function testSubmit($thousandSeparator) { + CRM_Core_Session::singleton()->getStatus(TRUE); $this->setCurrencySeparators($thousandSeparator); $form = $this->getForm(); $form->preProcess(); @@ -472,7 +473,7 @@ class CRM_Member_Form_MembershipTest extends CiviUnitTestCase { $this->createLoggedInUser(); $params = array( 'cid' => $this->_individualId, - 'join_date' => date('m/d/Y', time()), + 'join_date' => date('2/d/Y', time()), 'start_date' => '', 'end_date' => '', // This format reflects the 23 being the organisation & the 25 being the type. @@ -545,6 +546,14 @@ class CRM_Member_Form_MembershipTest extends CiviUnitTestCase { 'Receipt text', )); $this->mut->stop(); + $this->assertEquals([ + [ + 'text' => 'AnnualFixed membership for Mr. Anthony Anderson II has been added. The new membership End Date is December 31st, ' . date('Y') . '. A membership confirmation and receipt has been sent to anthony_anderson@civicrm.org.', + 'title' => 'Complete', + 'type' => 'success', + 'options' => NULL, + ], + ], CRM_Core_Session::singleton()->getStatus()); } /** -- 2.25.1