From efc0e24a6f0aa2bbaf54e575598b064ac86b62f8 Mon Sep 17 00:00:00 2001 From: eileen Date: Mon, 20 Aug 2018 17:17:26 +1200 Subject: [PATCH] Move customValue retrieval to calling function. After digging on CRM_Batch_Form_Entry I couldn't find any evidence that the groupTree property would ever be set --- CRM/Member/Form/Membership.php | 79 +++++++++++++++++++++------------- 1 file changed, 49 insertions(+), 30 deletions(-) diff --git a/CRM/Member/Form/Membership.php b/CRM/Member/Form/Membership.php index 59b5709f96..2caafe6fd2 100644 --- a/CRM/Member/Form/Membership.php +++ b/CRM/Member/Form/Membership.php @@ -983,45 +983,25 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { * @param array $formValues * @param object $membership * Object. + * @param array $customValues * * @return bool * true if mail was sent successfully */ - public static function emailReceipt(&$form, &$formValues, &$membership) { + public static function emailReceipt(&$form, &$formValues, &$membership, $customValues = NULL) { // retrieve 'from email id' for acknowledgement $receiptFrom = CRM_Utils_Array::value('from_email_address', $formValues); + // @todo figure out how much of the stuff below is genuinely shared with the batch form & a logical shared place. if (!empty($formValues['payment_instrument_id'])) { $paymentInstrument = CRM_Contribute_PseudoConstant::paymentInstrument(); $formValues['paidBy'] = $paymentInstrument[$formValues['payment_instrument_id']]; } - // retrieve custom data - $customFields = $customValues = array(); - if (property_exists($form, '_groupTree') - && !empty($form->_groupTree) - ) { - foreach ($form->_groupTree as $groupID => $group) { - if ($groupID == 'info') { - continue; - } - foreach ($group['fields'] as $k => $field) { - $field['title'] = $field['label']; - $customFields["custom_{$k}"] = $field; - } - } - } - - $members = array(array('member_id', '=', $membership->id, 0, 0)); - // check whether its a test drive - if ($form->_mode == 'test') { - $members[] = array('member_test', '=', 1, 0, 0); - } - - CRM_Core_BAO_UFGroup::getValues($formValues['contact_id'], $customFields, $customValues, FALSE, $members); $form->assign('customValues', $customValues); if ($form->_mode) { + // @todo move this outside shared code as Batch entry just doesn't $form->assign('address', CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters( $form->_params, $form->_bltID @@ -1074,6 +1054,7 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { $form->assign('membership_name', CRM_Member_PseudoConstant::membershipType($membership->membership_type_id)); } + // @todo - if we have to figure out if this is for batch processing it doesn't belong in the shared function. $isBatchProcess = is_a($form, 'CRM_Batch_Form_Entry'); if ((empty($form->_contributorDisplayName) || empty($form->_contributorEmail)) || $isBatchProcess) { // in this case the form is being called statically from the batch editing screen @@ -1087,6 +1068,7 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { $form->_receiptContactId = $formValues['contact_id']; } } + // @todo determine isEmailPdf in calling function. $template = CRM_Core_Smarty::singleton(); $taxAmt = $template->get_template_vars('dataArray'); $eventTaxAmt = $template->get_template_vars('totalTaxAmount'); @@ -1732,7 +1714,7 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { $formValues['receipt_text_signup'] = $formValues['receipt_text']; // send email receipt $this->assignBillingName(); - $mailSend = $this->emailMembershipReceipt(); + $mailSend = $this->emailMembershipReceipt($formValues, $membership); $receiptSent = TRUE; } @@ -1919,7 +1901,7 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { * @param $createdMemberships * @param $isRecur * @param $calcDates - * @param $mailSent + * @param bool $mailSent */ protected function setStatusMessage($membership, $endDate, $receiptSend, $membershipTypes, $createdMemberships, $isRecur, $calcDates, $mailSent) { if (($this->_action & CRM_Core_Action::UPDATE)) { @@ -1975,12 +1957,49 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { * Send a receipt for the membership. * * @param array $formValues - * @param array $membership - * @return array + * @param \CRM_Member_BAO_Membership $membership + * + * @return bool */ protected function emailMembershipReceipt($formValues, $membership) { - $mailSend = self::emailReceipt($this, $formValues, $membership); - return [$membership, $mailSend]; + $customValues = $this->getCustomValuesForReceipt($formValues, $membership); + + return self::emailReceipt($this, $formValues, $membership, $customValues); + } + + /** + * Filter the custom values from the input parameters (for display in the email). + * + * @todo figure out why the scary code this calls does & document. + * + * @param array $formValues + * @param \CRM_Member_BAO_Membership $membership + * @return array + */ + protected function getCustomValuesForReceipt($formValues, $membership) { + $customFields = $customValues = []; + if (property_exists($this, '_groupTree') + && !empty($this->_groupTree) + ) { + foreach ($this->_groupTree as $groupID => $group) { + if ($groupID == 'info') { + continue; + } + foreach ($group['fields'] as $k => $field) { + $field['title'] = $field['label']; + $customFields["custom_{$k}"] = $field; + } + } + } + + $members = [['member_id', '=', $membership->id, 0, 0]]; + // check whether its a test drive + if ($this->_mode == 'test') { + $members[] = ['member_test', '=', 1, 0, 0]; + } + + CRM_Core_BAO_UFGroup::getValues($formValues['contact_id'], $customFields, $customValues, FALSE, $members); + return $customValues; } } -- 2.25.1