X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FContribute%2FForm%2FContributionRecur.php;h=b333159eca837a2ed463ec282a6563b4407ef87b;hb=0d69fd8e79da60b18afdf94d299dea5feeb6d5e4;hp=d37db2c0a35065a28703bfa1b15952f937e327c5;hpb=7695e8592d7b36471bc0880dc259c31e1e5fbf26;p=civicrm-core.git diff --git a/CRM/Contribute/Form/ContributionRecur.php b/CRM/Contribute/Form/ContributionRecur.php index d37db2c0a3..b333159eca 100644 --- a/CRM/Contribute/Form/ContributionRecur.php +++ b/CRM/Contribute/Form/ContributionRecur.php @@ -39,12 +39,16 @@ class CRM_Contribute_Form_ContributionRecur extends CRM_Core_Form { use CRM_Core_Form_EntityFormTrait; /** - * @var int Contribution ID + * Contribution ID. + * + * @var int */ protected $_coid = NULL; /** - * @var int Contribution Recur ID + * Contribution Recur ID. + * + * @var int */ protected $_crid = NULL; @@ -59,7 +63,9 @@ class CRM_Contribute_Form_ContributionRecur extends CRM_Core_Form { protected $contributionRecurID = NULL; /** - * @var int Membership ID + * Membership ID. + * + * @var int */ protected $_mid = NULL; @@ -71,10 +77,11 @@ class CRM_Contribute_Form_ContributionRecur extends CRM_Core_Form { protected $_paymentProcessorObj = NULL; /** - * @var array + * Current payment processor. * - * Current payment processor including a copy of the object in 'object' key for - * legacy reasons. + * This includes a copy of the object in 'object' key for legacy reasons. + * + * @var array */ public $_paymentProcessor = []; @@ -100,6 +107,13 @@ class CRM_Contribute_Form_ContributionRecur extends CRM_Core_Form { */ protected $subscriptionDetails = []; + /** + * Is the form being accessed by a front end user to update their own recurring. + * + * @var bool + */ + protected $selfService; + /** * Explicitly declare the entity api name. */ @@ -114,6 +128,15 @@ class CRM_Contribute_Form_ContributionRecur extends CRM_Core_Form { return 'create'; } + /** + * Get the entity id being edited. + * + * @return int|null + */ + public function getEntityId() { + return $this->contributionRecurID; + } + /** * Set variables up before form is built. * @@ -146,6 +169,10 @@ class CRM_Contribute_Form_ContributionRecur extends CRM_Core_Form { } $this->_paymentProcessorObj = $this->_paymentProcessor['object']; } + elseif ($this->_mid) { + $this->_paymentProcessorObj = CRM_Financial_BAO_PaymentProcessor::getProcessorForEntity($this->_mid, 'membership', 'obj'); + $this->_paymentProcessor = $this->_paymentProcessorObj->getPaymentProcessor(); + } } /** @@ -158,6 +185,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; } /** @@ -179,4 +211,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; + } + }