From c6d558dca61dc68a3b832ad2bf34dc18b4cca4e2 Mon Sep 17 00:00:00 2001 From: "Matthew Wire (MJW Consulting)" Date: Fri, 14 Sep 2018 14:41:14 +0100 Subject: [PATCH] CRM21512 follow-up. Show recurring contribution links based on payment processor capabilities --- CRM/Contribute/Page/Tab.php | 20 ++++++++++--------- .../Contribute/Form/UpdateSubscription.tpl | 2 +- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/CRM/Contribute/Page/Tab.php b/CRM/Contribute/Page/Tab.php index fa80f7d728fd..8a3f02ad13dc 100644 --- a/CRM/Contribute/Page/Tab.php +++ b/CRM/Contribute/Page/Tab.php @@ -81,13 +81,18 @@ public static function &recurLinks($recurID = FALSE, $context = 'contribution') if ($recurID) { $links = self::$_links; $paymentProcessorObj = CRM_Financial_BAO_PaymentProcessor::getProcessorForEntity($recurID, 'recur', 'obj'); - if (is_object($paymentProcessorObj) && $paymentProcessorObj->supports('cancelRecurring')) { + if (!is_object($paymentProcessorObj)) { + unset($links[CRM_Core_Action::DISABLE]); + unset($links[CRM_Core_Action::UPDATE]); + return $links; + } + if ($paymentProcessorObj->supports('cancelRecurring')) { unset($links[CRM_Core_Action::DISABLE]['extra'], $links[CRM_Core_Action::DISABLE]['ref']); $links[CRM_Core_Action::DISABLE]['url'] = "civicrm/contribute/unsubscribe"; $links[CRM_Core_Action::DISABLE]['qs'] = "reset=1&crid=%%crid%%&cid=%%cid%%&context={$context}"; } - if (is_object($paymentProcessorObj) && $paymentProcessorObj->isSupported('updateSubscriptionBillingInfo')) { + if ($paymentProcessorObj->supports('UpdateSubscriptionBillingInfo')) { $links[CRM_Core_Action::RENEW] = array( 'name' => ts('Change Billing Details'), 'title' => ts('Change Billing Details'), @@ -95,6 +100,10 @@ public static function &recurLinks($recurID = FALSE, $context = 'contribution') 'qs' => "reset=1&crid=%%crid%%&cid=%%cid%%&context={$context}", ); } + + if (!$paymentProcessorObj->supports('ChangeSubscriptionAmount') && !$paymentProcessorObj->supports('EditRecurringContribution')) { + unset($links[CRM_Core_Action::UPDATE]); + } return $links; } @@ -251,13 +260,6 @@ private function buildRecurringContributionsArray($recurContributions) { } 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; - } - $recurContributions[$recurId]['action'] = CRM_Core_Action::formLink(self::recurLinks($recurId), $action, array( 'cid' => $this->_contactId, diff --git a/templates/CRM/Contribute/Form/UpdateSubscription.tpl b/templates/CRM/Contribute/Form/UpdateSubscription.tpl index 1d4ea231ff7c..ee71492bd6e5 100644 --- a/templates/CRM/Contribute/Form/UpdateSubscription.tpl +++ b/templates/CRM/Contribute/Form/UpdateSubscription.tpl @@ -28,7 +28,7 @@
{$changeHelpText} {if $recurMembership} -
{ts}'WARNING: This recurring contribution is linked to membership:{/ts} +
{ts}WARNING: This recurring contribution is linked to membership:{/ts} {$recurMembership.membership_name} {/if}