* @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
$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
$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');
$formValues['receipt_text_signup'] = $formValues['receipt_text'];
// send email receipt
$this->assignBillingName();
- $mailSend = $this->emailMembershipReceipt();
+ $mailSend = $this->emailMembershipReceipt($formValues, $membership);
$receiptSent = TRUE;
}
* @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)) {
* 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;
}
}