From 80bb54b2630f54456384b473fcffbe7bd96b83bd Mon Sep 17 00:00:00 2001 From: "Matthew Wire (MJW Consulting)" Date: Fri, 21 Sep 2018 12:44:21 +0100 Subject: [PATCH] When submitting a standalone credit card contribution the contact email address should not be deleted --- CRM/Contribute/Form/AbstractEditPayment.php | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/CRM/Contribute/Form/AbstractEditPayment.php b/CRM/Contribute/Form/AbstractEditPayment.php index 9e59495c61..86c92605d6 100644 --- a/CRM/Contribute/Form/AbstractEditPayment.php +++ b/CRM/Contribute/Form/AbstractEditPayment.php @@ -253,6 +253,7 @@ class CRM_Contribute_Form_AbstractEditPayment extends CRM_Contact_Form_Task { $this->_action = CRM_Utils_Request::retrieve('action', 'String', $this, FALSE, 'add'); $this->_mode = empty($this->_mode) ? CRM_Utils_Request::retrieve('mode', 'Alphanumeric', $this) : $this->_mode; $this->assign('isBackOffice', $this->isBackOffice); + $this->assignContactEmailDetails(); $this->assignPaymentRelatedVariables(); } @@ -546,10 +547,6 @@ WHERE contribution_id = {$id} */ protected function assignPaymentRelatedVariables() { try { - if ($this->_contactID) { - list($this->userDisplayName, $this->userEmail) = CRM_Contact_BAO_Contact_Location::getEmailDetails($this->_contactID); - $this->assign('displayName', $this->userDisplayName); - } $this->assignProcessors(); $this->assignBillingType(); CRM_Core_Payment_Form::setPaymentFieldsByProcessor($this, $this->_paymentProcessor, FALSE, TRUE, CRM_Utils_Request::retrieve('payment_instrument_id', 'Integer', $this)); @@ -591,6 +588,11 @@ WHERE contribution_id = {$id} $this->_params[$moneyField] = CRM_Utils_Rule::cleanMoney($this->_params[$moneyField]); } } + if (!empty($this->_params['contact_id']) && empty($this->_contactID)) { + // Contact ID has been set in the standalone form. + $this->_contactID = $this->_params['contact_id']; + $this->assignContactEmailDetails(); + } } /** @@ -748,4 +750,11 @@ WHERE contribution_id = {$id} return $title; } + protected function assignContactEmailDetails() { + if ($this->_contactID) { + list($this->userDisplayName, $this->userEmail) = CRM_Contact_BAO_Contact_Location::getEmailDetails($this->_contactID); + $this->assign('displayName', $this->userDisplayName); + } + } + } -- 2.25.1