Merge pull request #2965 from generalredneck/CRM-14135
authorTim Otten <to-git@think.hm>
Thu, 1 May 2014 01:14:03 +0000 (18:14 -0700)
committerTim Otten <to-git@think.hm>
Thu, 1 May 2014 01:14:03 +0000 (18:14 -0700)
CRM-14135: Making Custom Membership Fields in profiles apply to all purchased Memberships.

CRM/Contribute/Form/Contribution/Confirm.php
CRM/Member/BAO/Membership.php

index 20c6b66c7b525c2a315a146e6d3988df34a0aeb7..03f1378bd5353c24b57d23f54886a2e619a2daef 100644 (file)
@@ -747,7 +747,6 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
           }
         }
       }
-
       $contactID = CRM_Contact_BAO_Contact::createProfileContact(
         $params,
         $fields,
index dffb84db884982a9d5f828e56c579a6e02ed92ac..fd53c7a396ba0d08654e3fc4e6a143f632ffc85f 100644 (file)
@@ -1346,15 +1346,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,
@@ -1399,7 +1399,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)
@@ -1433,14 +1433,19 @@ AND civicrm_membership.is_test = %2";
       $message = ts('Payment Processor Error message') . ': ' . implode('<br/>', $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') {