From b3e340d91a234ae9bbd1a2777e02dcc1e6545698 Mon Sep 17 00:00:00 2001 From: eileen Date: Sat, 16 Sep 2017 12:28:49 +1200 Subject: [PATCH] CRM-20800 fix fatal error up updating paypal contributions --- CRM/Contribute/Form/UpdateSubscription.php | 7 ++++--- CRM/Financial/BAO/PaymentProcessor.php | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/CRM/Contribute/Form/UpdateSubscription.php b/CRM/Contribute/Form/UpdateSubscription.php index 1baf49654b..a3f1cb7934 100644 --- a/CRM/Contribute/Form/UpdateSubscription.php +++ b/CRM/Contribute/Form/UpdateSubscription.php @@ -81,11 +81,12 @@ class CRM_Contribute_Form_UpdateSubscription extends CRM_Core_Form { $this->contributionRecurID = CRM_Utils_Request::retrieve('crid', 'Integer', $this, FALSE); if ($this->contributionRecurID) { - $this->_paymentProcessor = CRM_Contribute_BAO_ContributionRecur::getPaymentProcessor($this->contributionRecurID); - if (!$this->_paymentProcessor) { + try { + $this->_paymentProcessor = CRM_Financial_BAO_PaymentProcessor::getPaymentProcessorForRecurringContribution($this->contributionRecurID); + } + catch (CRM_Core_Exception $e) { CRM_Core_Error::statusBounce(ts('There is no valid processor for this subscription so it cannot be edited.')); } - $this->_paymentProcessorObj = $this->_paymentProcessor['object']; $this->_subscriptionDetails = CRM_Contribute_BAO_ContributionRecur::getSubscriptionDetails($this->contributionRecurID); } diff --git a/CRM/Financial/BAO/PaymentProcessor.php b/CRM/Financial/BAO/PaymentProcessor.php index 250d35a9a4..f318aaacfd 100644 --- a/CRM/Financial/BAO/PaymentProcessor.php +++ b/CRM/Financial/BAO/PaymentProcessor.php @@ -508,6 +508,7 @@ INNER JOIN civicrm_contribution con ON ( mp.contribution_id = con.id ) WHERE con.id = %1"; } elseif ($component == 'recur') { + // @deprecated - use getPaymentProcessorForRecurringContribution. $sql = " SELECT cr.payment_processor_id as ppID1, NULL as ppID2, cr.is_test FROM civicrm_contribution_recur cr @@ -549,4 +550,19 @@ INNER JOIN civicrm_contribution con ON ( mp.contribution_id = con.id ) return $result; } + /** + * Get the payment processor associated with a recurring contribution series. + * + * @param int $contributionRecurID + * + * @return \CRM_Core_Payment + */ + public static function getPaymentProcessorForRecurringContribution($contributionRecurID) { + $paymentProcessorId = civicrm_api3('ContributionRecur', 'getvalue', array( + 'id' => $contributionRecurID, + 'return' => 'payment_processor_id', + )); + return Civi\Payment\System::singleton()->getById($paymentProcessorId); + } + } -- 2.25.1