From 9e475c2dde6a8a2fd4e3b985179fac3b2967f931 Mon Sep 17 00:00:00 2001 From: Matthew Wire Date: Tue, 20 Feb 2018 12:46:49 +0000 Subject: [PATCH] CRM-21784 Switch to API to get recurring contributions for contribution tab --- CRM/Contribute/BAO/ContributionRecur.php | 3 +- CRM/Contribute/Page/Tab.php | 43 ++++++++++++++---------- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/CRM/Contribute/BAO/ContributionRecur.php b/CRM/Contribute/BAO/ContributionRecur.php index ec23ddb44b..3049402ea5 100644 --- a/CRM/Contribute/BAO/ContributionRecur.php +++ b/CRM/Contribute/BAO/ContributionRecur.php @@ -323,7 +323,7 @@ SELECT r.payment_processor_id } /** - * Get list of recurring contribution of contact Ids. + * @deprecated Get list of recurring contribution of contact Ids. * * @param int $contactId * Contact ID. @@ -333,6 +333,7 @@ SELECT r.payment_processor_id * */ public static function getRecurContributions($contactId) { + Civi::log()->warning('Deprecated function, use ContributionRecur.get API instead', array('civi.tag' => 'deprecated')); $params = array(); $recurDAO = new CRM_Contribute_DAO_ContributionRecur(); $recurDAO->contact_id = $contactId; diff --git a/CRM/Contribute/Page/Tab.php b/CRM/Contribute/Page/Tab.php index d236e2a26c..e597cb9aa7 100644 --- a/CRM/Contribute/Page/Tab.php +++ b/CRM/Contribute/Page/Tab.php @@ -100,7 +100,6 @@ class CRM_Contribute_Page_Tab extends CRM_Core_Page { return self::$_links; } - // end function /** * called when action is browse. @@ -131,44 +130,52 @@ class CRM_Contribute_Page_Tab extends CRM_Core_Page { $controller->run(); // add recurring block - $action = array_sum(array_keys($this->recurLinks())); - $params = CRM_Contribute_BAO_ContributionRecur::getRecurContributions($this->_contactId); + try { + $contributionRecurResult = civicrm_api3('ContributionRecur', 'get', array( + 'contact_id' => $this->_contactId, + 'options' => array('limit' => 0, 'sort' => 'start_date ASC'), + )); + $recurContributions = CRM_Utils_Array::value('values', $contributionRecurResult); + } + catch (Exception $e) { + $recurContributions = NULL; + } - if (!empty($params)) { - foreach ($params as $ids => $recur) { - $action = array_sum(array_keys($this->recurLinks($ids))); + if (!empty($recurContributions)) { + foreach ($recurContributions as $recurId => $recurDetail) { + $action = array_sum(array_keys($this->recurLinks($recurId))); // no action allowed if it's not active - $params[$ids]['is_active'] = ($recur['contribution_status_id'] != 3); + $recurContributions[$recurId]['is_active'] = (!CRM_Contribute_BAO_Contribution::isContributionStatusNegative($recurDetail['contribution_status_id'])); - if ($params[$ids]['is_active']) { - $details = CRM_Contribute_BAO_ContributionRecur::getSubscriptionDetails($params[$ids]['id'], 'recur'); + if ($recurContributions[$recurId]['is_active']) { + $details = CRM_Contribute_BAO_ContributionRecur::getSubscriptionDetails($recurContributions[$recurId]['id'], 'recur'); $hideUpdate = $details->membership_id & $details->auto_renew; if ($hideUpdate) { $action -= CRM_Core_Action::UPDATE; } - $params[$ids]['action'] = CRM_Core_Action::formLink(self::recurLinks($ids), $action, + $recurContributions[$recurId]['action'] = CRM_Core_Action::formLink(self::recurLinks($recurId), $action, array( 'cid' => $this->_contactId, - 'crid' => $ids, + 'crid' => $recurId, 'cxt' => 'contribution', ), ts('more'), FALSE, 'contribution.selector.recurring', 'Contribution', - $ids + $recurId ); } } // assign vars to templates $this->assign('action', $this->_action); - $this->assign('recurRows', $params); + $this->assign('recurRows', $recurContributions); $this->assign('recur', TRUE); } - //enable/disable soft credit records for test contribution + // enable/disable soft credit records for test contribution $isTest = 0; if (CRM_Utils_Request::retrieve('isTest', 'Positive', $this)) { $isTest = 1; @@ -183,7 +190,7 @@ class CRM_Contribute_Page_Tab extends CRM_Core_Page { list($softCreditTotals['amount'], $softCreditTotals['avg'], $softCreditTotals['currency'], - $softCreditTotals['cancelAmount'] //to get cancel amount + $softCreditTotals['cancelAmount'] // to get cancel amount ) = CRM_Contribute_BAO_ContributionSoft::getSoftContributionTotals($this->_contactId, $isTest); $this->assign('softCredit', TRUE); @@ -201,7 +208,7 @@ class CRM_Contribute_Page_Tab extends CRM_Core_Page { /** * called when action is view. * - * @return null + * @return mixed */ public function view() { $controller = new CRM_Core_Controller_Simple( @@ -219,7 +226,9 @@ class CRM_Contribute_Page_Tab extends CRM_Core_Page { /** * called when action is update or new. * - * @return null + * @return mixed + * @throws \CRM_Core_Exception + * @throws \Exception */ public function edit() { // set https for offline cc transaction -- 2.25.1