From: Eileen McNaughton Date: Mon, 19 May 2014 20:49:39 +0000 (+1200) Subject: refactor out createOrRenewMembership function X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=8dde2f1369eeeb9cef06eabc00b613fb1bae5e23;p=civicrm-core.git refactor out createOrRenewMembership function --- diff --git a/CRM/Member/BAO/Membership.php b/CRM/Member/BAO/Membership.php index ae90d9aa14..f6fe962114 100644 --- a/CRM/Member/BAO/Membership.php +++ b/CRM/Member/BAO/Membership.php @@ -1301,6 +1301,7 @@ AND civicrm_membership.is_test = %2"; if (!empty($membershipContribution) && !is_a($membershipContribution, 'CRM_Core_Error')) { { $membershipContributionID = $membershipContribution->id; } + //@todo - why is this nested so deep? it seems like it could be just set on the calling function on the form layer if (isset($membershipParams['onbehalf']) && !empty($membershipParams['onbehalf']['member_campaign_id'])) { $form->_params['campaign_id'] = $membershipParams['onbehalf']['member_campaign_id']; } @@ -1309,20 +1310,7 @@ AND civicrm_membership.is_test = %2"; $typesTerms = CRM_Utils_Array::value('types_terms', $membershipParams, array()); foreach ($membershipTypeID as $memType) { $numTerms = CRM_Utils_Array::value($memType, $typesTerms, 1); - $membership = self::renewMembership($contactID, $memType, - $isTest, $form, NULL, - CRM_Utils_Array::value('cms_contactID', $membershipParams), - $customFieldsFormatted, CRM_Utils_Array::value($memType, $typesTerms, 1), - $membershipID - ); - - // update recurring id for membership record - self::updateRecurMembership($membership, $membershipContribution); - - $createdMemberships[$memType] = $membership; - if (!empty($membershipContribution)) { - self::linkMembershipPayment($membership, $membershipContribution); - } + $createdMemberships[$memType] = self::createOrRenewMembership($membershipParams, $contactID, $customFieldsFormatted, $membershipID, $memType, $isTest, $numTerms, $membershipContribution, $createdMemberships); } if ($form->_priceSetId && !empty($form->_useForMember) && !empty($form->_lineItem)) { foreach ($form->_lineItem[$form->_priceSetId] as & $priceFieldOp) { @@ -2463,6 +2451,39 @@ INNER JOIN civicrm_contact contact ON ( contact.id = membership.contact_id AND } } + /** + * @param $membershipParams + * @param $contactID + * @param $customFieldsFormatted + * @param $membershipID + * @param $memType + * @param $isTest + * @param $numTerms + * @param $membershipContribution + * @param $form + * + * @internal param $createdMemberships + * + * @return array + */ + public static function createOrRenewMembership($membershipParams, $contactID, $customFieldsFormatted, $membershipID, $memType, $isTest, $numTerms, $membershipContribution, &$form) + { + $membership = self::renewMembership($contactID, $memType, + $isTest, $form, NULL, + CRM_Utils_Array::value('cms_contactID', $membershipParams), + $customFieldsFormatted, $numTerms, + $membershipID + ); + + // update recurring id for membership record + self::updateRecurMembership($membership, $membershipContribution); + + if (!empty($membershipContribution)) { + self::linkMembershipPayment($membership, $membershipContribution); + } + return $membership; + } + /** * Function to process price set and line items. *