From 8d65cef7f3d2ba59006c727fbd8b59cdb21c3c13 Mon Sep 17 00:00:00 2001 From: Allan Chappell Date: Sun, 27 Apr 2014 15:55:35 -0700 Subject: [PATCH] CRM-14135: Making Custom Membership Fields in profiles apply to all purchased memberships. --- CRM/Contribute/Form/Contribution/Confirm.php | 1 - CRM/Member/BAO/Membership.php | 27 ++++++++++++-------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/CRM/Contribute/Form/Contribution/Confirm.php b/CRM/Contribute/Form/Contribution/Confirm.php index 2e1ab3a622..499f58ecbb 100644 --- a/CRM/Contribute/Form/Contribution/Confirm.php +++ b/CRM/Contribute/Form/Contribution/Confirm.php @@ -736,7 +736,6 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr } } } - $contactID = CRM_Contact_BAO_Contact::createProfileContact( $params, $fields, diff --git a/CRM/Member/BAO/Membership.php b/CRM/Member/BAO/Membership.php index 8a9d5b41bc..13b862bc53 100644 --- a/CRM/Member/BAO/Membership.php +++ b/CRM/Member/BAO/Membership.php @@ -1350,15 +1350,15 @@ AND civicrm_membership.is_test = %2"; } $index = !empty($memBlockDetails['is_separate_payment']) ? 2 : 1; - + $createdMemberships = array(); + $membership = NULL; if (empty($errors[$index])) { if (isset($membershipParams['onbehalf']) && !empty($membershipParams['onbehalf']['member_campaign_id'])) { $form->_params['campaign_id'] = $membershipParams['onbehalf']['member_campaign_id']; } + //!!B if (is_array($membershipTypeID)) { $typesTerms = CRM_Utils_Array::value('types_terms', $membershipParams, array()); - $createdMemberships = array(); - foreach ($membershipTypeID as $memType) { $numTerms = CRM_Utils_Array::value($memType, $typesTerms, 1); $membership = self::renewMembership($contactID, $memType, @@ -1400,7 +1400,7 @@ AND civicrm_membership.is_test = %2"; } } else { - $membership = self::renewMembership($contactID, $membershipTypeID, + $membership = $createdMemberships[$membershipTypeID] = self::renewMembership($contactID, $membershipTypeID, $isTest, $form, NULL, CRM_Utils_Array::value('cms_contactID', $membershipParams), $customFieldsFormatted, CRM_Utils_Array::value('types_terms', $membershipParams, 1) @@ -1430,14 +1430,19 @@ AND civicrm_membership.is_test = %2"; $message = ts('Payment Processor Error message') . ': ' . implode('
', $message); throw new CRM_Core_Exception($message); } + $form->_params['createdMembershipIDs'] = array(); - // CRM-7851 - CRM_Core_BAO_CustomValueTable::postProcess($form->_params, - CRM_Core_DAO::$_nullArray, - 'civicrm_membership', - $membership->id, - 'Membership' - ); + // CRM-7851 - Moved after processing Payment Errors + foreach ($createdMemberships as $createdMembership) { + CRM_Core_BAO_CustomValueTable::postProcess( + $form->_params, + CRM_Core_DAO::$_nullArray, + 'civicrm_membership', + $createdMembership->id, + 'Membership' + ); + $form->_params['createdMembershipIDs'][] = $createdMembership->id; + } $form->_params['membershipID'] = $membership->id; if ($form->_contributeMode == 'notify') { -- 2.25.1