From: eileenmcnaugton Date: Tue, 4 Aug 2015 05:35:52 +0000 (+1200) Subject: towards test fix, catch error higher up & declare fn protected X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=4b6c8c1edb793b5183a406657d6bb9edf4e9fd64;p=civicrm-core.git towards test fix, catch error higher up & declare fn protected --- diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index 95ed819381..23c76a13d4 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -3954,10 +3954,11 @@ WHERE con.id = {$contributionId} * @param int $recur * @param CRM_Contribute_BAO_Contribution $contribution * @param bool $isRecurring - * Duplication of param needs review. + * Duplication of param needs review. Only used by AuthorizeNetIPN * @param int $isFirstOrLastRecurringPayment + * Deprecated param only used by AuthorizeNetIPN. */ - public static function completeOrder(&$input, &$ids, $objects, &$transaction, $recur, $contribution, $isRecurring, + public static function completeOrder(&$input, &$ids, $objects, $transaction, $recur, $contribution, $isRecurring, $isFirstOrLastRecurringPayment) { $primaryContributionID = isset($contribution->id) ? $contribution->id : $objects['first_contribution']->id; @@ -4038,6 +4039,7 @@ LIMIT 1;"; $membershipParams['membership_type_id'], $primaryContributionID ); + $dates = array_fill_keys(array('join_date', 'start_date', 'end_date'), NULL); if ($currentMembership) { /* * Fixed FOR CRM-4433 diff --git a/CRM/Contribute/Form/Contribution/Confirm.php b/CRM/Contribute/Form/Contribution/Confirm.php index 19c7217eee..ef5c4b19df 100644 --- a/CRM/Contribute/Form/Contribution/Confirm.php +++ b/CRM/Contribute/Form/Contribution/Confirm.php @@ -1453,47 +1453,43 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr * Line items specifically relating to memberships. * @param bool $isPayLater */ - public function processMembership($membershipParams, $contactID, $customFieldsFormatted, $fieldTypes, $premiumParams, $membershipLineItems, $isPayLater) { - try { - $membershipTypeIDs = (array) $membershipParams['selectMembership']; - $membershipTypes = CRM_Member_BAO_Membership::buildMembershipTypeValues($this, $membershipTypeIDs); - $membershipType = empty($membershipTypes) ? array() : reset($membershipTypes); - $isPending = $this->getIsPending(); + protected function processMembership($membershipParams, $contactID, $customFieldsFormatted, $fieldTypes, $premiumParams, + $membershipLineItems, $isPayLater) { - $this->assign('membership_name', CRM_Utils_Array::value('name', $membershipType)); + $membershipTypeIDs = (array) $membershipParams['selectMembership']; + $membershipTypes = CRM_Member_BAO_Membership::buildMembershipTypeValues($this, $membershipTypeIDs); + $membershipType = empty($membershipTypes) ? array() : reset($membershipTypes); + $isPending = $this->getIsPending(); - $isPaidMembership = FALSE; - if ($this->_amount >= 0.0 && isset($membershipParams['amount'])) { - //amount must be greater than zero for - //adding contribution record to contribution table. - //this condition arises when separate membership payment is - //enabled and contribution amount is not selected. fix for CRM-3010 - $isPaidMembership = TRUE; - } - $isProcessSeparateMembershipTransaction = $this->isSeparateMembershipTransaction($this->_id, $this->_values['amount_block_is_active']); - - if ($this->_values['amount_block_is_active']) { - $financialTypeID = $this->_values['financial_type_id']; - } - else { - $financialTypeID = CRM_Utils_Array::value('financial_type_id', $membershipType, CRM_Utils_Array::value('financial_type_id', $membershipParams)); - } + $this->assign('membership_name', CRM_Utils_Array::value('name', $membershipType)); - if (CRM_Utils_Array::value('membership_source', $this->_params)) { - $membershipParams['contribution_source'] = $this->_params['membership_source']; - } - - $this->postProcessMembership($membershipParams, $contactID, - $this, $premiumParams, $customFieldsFormatted, $fieldTypes, $membershipType, $membershipTypeIDs, $isPaidMembership, $this->_membershipId, $isProcessSeparateMembershipTransaction, $financialTypeID, - $membershipLineItems, $isPayLater, $isPending); + $isPaidMembership = FALSE; + if ($this->_amount >= 0.0 && isset($membershipParams['amount'])) { + //amount must be greater than zero for + //adding contribution record to contribution table. + //this condition arises when separate membership payment is + //enabled and contribution amount is not selected. fix for CRM-3010 + $isPaidMembership = TRUE; + } + $isProcessSeparateMembershipTransaction = $this->isSeparateMembershipTransaction($this->_id, $this->_values['amount_block_is_active']); - $this->assign('membership_assign', TRUE); - $this->set('membershipTypeID', $membershipParams['selectMembership']); + if ($this->_values['amount_block_is_active']) { + $financialTypeID = $this->_values['financial_type_id']; } - catch (CRM_Core_Exception $e) { - CRM_Core_Session::singleton()->setStatus($e->getMessage()); - CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/contribute/transact', "_qf_Main_display=true&qfKey={$this->_params['qfKey']}")); + else { + $financialTypeID = CRM_Utils_Array::value('financial_type_id', $membershipType, CRM_Utils_Array::value('financial_type_id', $membershipParams)); } + + if (CRM_Utils_Array::value('membership_source', $this->_params)) { + $membershipParams['contribution_source'] = $this->_params['membership_source']; + } + + $this->postProcessMembership($membershipParams, $contactID, + $this, $premiumParams, $customFieldsFormatted, $fieldTypes, $membershipType, $membershipTypeIDs, $isPaidMembership, $this->_membershipId, $isProcessSeparateMembershipTransaction, $financialTypeID, + $membershipLineItems, $isPayLater, $isPending); + + $this->assign('membership_assign', TRUE); + $this->set('membershipTypeID', $membershipParams['selectMembership']); } /** @@ -2411,7 +2407,13 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr } } } - $this->processMembership($membershipParams, $contactID, $customFieldsFormatted, $fieldTypes, $premiumParams, $membershipLineItems, $isPayLater); + try { + $this->processMembership($membershipParams, $contactID, $customFieldsFormatted, $fieldTypes, $premiumParams, $membershipLineItems, $isPayLater); + } + catch (CRM_Core_Exception $e) { + CRM_Core_Session::singleton()->setStatus($e->getMessage()); + CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/contribute/transact', "_qf_Main_display=true&qfKey={$this->_params['qfKey']}")); + } if (!$this->_amount > 0.0 || !$membershipParams['amount']) { // we need to explicitly create a CMS user in case of free memberships // since it is done under processConfirm for paid memberships diff --git a/api/v3/Contribution.php b/api/v3/Contribution.php index 1b6f1b2384..d67486c4ad 100644 --- a/api/v3/Contribution.php +++ b/api/v3/Contribution.php @@ -550,6 +550,7 @@ function _ipn_process_transaction(&$params, $contribution, $input, $ids, $firstC $input['receipt_from_name'] = CRM_Utils_Array::value('receipt_from_name', $params, $domainFromName); $input['receipt_from_email'] = CRM_Utils_Array::value('receipt_from_email', $params, $domainFromEmail); } + $transaction = new CRM_Core_Transaction(); CRM_Contribute_BAO_Contribution::completeOrder($input, $ids, $objects, $transaction, !empty($contribution->contribution_recur_id), $contribution, FALSE, FALSE); return $params;