X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FContribute%2FForm%2FContributionRecur.php;h=cae5e1e255cda1a1c589ace5fadf51fe0e4d7b6d;hb=209e301ef8e7e3b8dedf5ca543282c4da4fbe130;hp=f5b26ce4e75a80700cc9fa56d4a8610266fbf2de;hpb=aadcf38bf2101c133d2e923ea8ef9f81838f01ef;p=civicrm-core.git diff --git a/CRM/Contribute/Form/ContributionRecur.php b/CRM/Contribute/Form/ContributionRecur.php index f5b26ce4e7..cae5e1e255 100644 --- a/CRM/Contribute/Form/ContributionRecur.php +++ b/CRM/Contribute/Form/ContributionRecur.php @@ -1,34 +1,18 @@ _paymentProcessorObj = $this->_paymentProcessor['object']; } + elseif ($this->_mid) { + $this->_paymentProcessorObj = CRM_Financial_BAO_PaymentProcessor::getProcessorForEntity($this->_mid, 'membership', 'obj'); + $this->_paymentProcessor = $this->_paymentProcessorObj->getPaymentProcessor(); + } } /** @@ -174,6 +169,11 @@ class CRM_Contribute_Form_ContributionRecur extends CRM_Core_Form { elseif ($this->_coid) { $this->subscriptionDetails = $this->_subscriptionDetails = CRM_Contribute_BAO_ContributionRecur::getSubscriptionDetails($this->_coid, 'contribution'); } + elseif ($this->_mid) { + $this->subscriptionDetails = CRM_Contribute_BAO_ContributionRecur::getSubscriptionDetails($this->_mid, 'membership'); + } + // This is being set temporarily - we should eventually just use the getter fn. + $this->_subscriptionDetails = $this->subscriptionDetails; } /** @@ -195,4 +195,23 @@ class CRM_Contribute_Form_ContributionRecur extends CRM_Core_Form { return isset($sub->contact_id) ? $sub->contact_id : FALSE; } + /** + * Is this being used by a front end user to update their own recurring. + * + * @return bool + */ + protected function isSelfService() { + if (!is_null($this->selfService)) { + return $this->selfService; + } + $this->selfService = FALSE; + if (!CRM_Core_Permission::check('edit contributions')) { + if ($this->_subscriptionDetails->contact_id != $this->getContactID()) { + CRM_Core_Error::statusBounce(ts('You do not have permission to cancel this recurring contribution.')); + } + $this->selfService = TRUE; + } + return $this->selfService; + } + }