From 2e09448c9ebbb5faa0382bab6dc61189946dd82a Mon Sep 17 00:00:00 2001 From: Matthew Wire Date: Wed, 12 Feb 2020 15:26:37 +0000 Subject: [PATCH] Fix PHP notice when we don't have credit card params --- CRM/Contribute/Form/AbstractEditPayment.php | 18 +++++++++++++----- CRM/Contribute/Form/AdditionalInfo.php | 11 +++-------- CRM/Contribute/Form/Contribution/Confirm.php | 5 +---- CRM/Contribute/Form/UpdateBilling.php | 11 ++++------- CRM/Core/Form.php | 16 ++++++++++++---- CRM/Event/Form/Participant.php | 10 +++------- CRM/Member/Form/Membership.php | 10 +++------- 7 files changed, 39 insertions(+), 42 deletions(-) diff --git a/CRM/Contribute/Form/AbstractEditPayment.php b/CRM/Contribute/Form/AbstractEditPayment.php index 6a328ca1e9..daa1f6fc13 100644 --- a/CRM/Contribute/Form/AbstractEditPayment.php +++ b/CRM/Contribute/Form/AbstractEditPayment.php @@ -537,13 +537,12 @@ WHERE contribution_id = {$id} $this->_params['payment_processor_id'], ($this->_mode == 'test') ); - $this->assign('credit_card_exp_date', CRM_Utils_Date::mysqlToIso(CRM_Utils_Date::format($this->_params['credit_card_exp_date']))); - $this->assign('credit_card_number', CRM_Utils_System::mungeCreditCard($this->_params['credit_card_number'])); - $this->assign('credit_card_type', CRM_Utils_Array::value('credit_card_type', $this->_params)); } $this->_params['ip_address'] = CRM_Utils_System::ipAddress(); - self::formatCreditCardDetails($this->_params); + $valuesForForm = self::formatCreditCardDetails($this->_params); + $this->assignVariables($valuesForForm, ['credit_card_exp_date', 'credit_card_type', 'credit_card_number']); + foreach ($this->submittableMoneyFields as $moneyField) { if (isset($this->_params[$moneyField])) { $this->_params[$moneyField] = CRM_Utils_Rule::cleanMoney($this->_params[$moneyField]); @@ -563,9 +562,13 @@ WHERE contribution_id = {$id} * * @param array $params * - * @return void + * @return array An array of params suitable for assigning to the form/tpl */ public static function formatCreditCardDetails(&$params) { + if (!empty($params['credit_card_exp_date'])) { + $params['year'] = CRM_Core_Payment_Form::getCreditCardExpirationYear($params); + $params['month'] = CRM_Core_Payment_Form::getCreditCardExpirationMonth($params); + } if (!empty($params['credit_card_type'])) { $params['card_type_id'] = CRM_Core_PseudoConstant::getKey('CRM_Core_BAO_FinancialTrxn', 'card_type_id', $params['credit_card_type']); } @@ -576,6 +579,11 @@ WHERE contribution_id = {$id} $params['year'] = CRM_Core_Payment_Form::getCreditCardExpirationYear($params); $params['month'] = CRM_Core_Payment_Form::getCreditCardExpirationMonth($params); } + + $tplParams['credit_card_exp_date'] = isset($params['credit_card_exp_date']) ? CRM_Utils_Date::mysqlToIso(CRM_Utils_Date::format($params['credit_card_exp_date'])) : NULL; + $tplParams['credit_card_type'] = CRM_Utils_Array::value('credit_card_type', $params); + $tplParams['credit_card_number'] = CRM_Utils_System::mungeCreditCard(CRM_Utils_Array::value('credit_card_number', $params)); + return $tplParams; } /** diff --git a/CRM/Contribute/Form/AdditionalInfo.php b/CRM/Contribute/Form/AdditionalInfo.php index 75caf72c7b..29403fad64 100644 --- a/CRM/Contribute/Form/AdditionalInfo.php +++ b/CRM/Contribute/Form/AdditionalInfo.php @@ -291,7 +291,7 @@ class CRM_Contribute_Form_AdditionalInfo { /** * Send email receipt. * - * @param CRM_Core_Form $form + * @param \CRM_Core_Form $form * instance of Contribution form. * @param array $params * (reference ) an assoc array of name/value pairs. @@ -359,13 +359,8 @@ class CRM_Contribute_Form_AdditionalInfo { $form->_bltID )); - $date = CRM_Utils_Date::format($params['credit_card_exp_date']); - $date = CRM_Utils_Date::mysqlToIso($date); - $form->assign('credit_card_type', $params['credit_card_type'] ?? NULL); - $form->assign('credit_card_exp_date', $date); - $form->assign('credit_card_number', - CRM_Utils_System::mungeCreditCard($params['credit_card_number']) - ); + $valuesForForm = CRM_Contribute_Form_AbstractEditPayment::formatCreditCardDetails($params); + $form->assignVariables($valuesForForm, ['credit_card_exp_date', 'credit_card_type', 'credit_card_number']); } else { //offline contribution diff --git a/CRM/Contribute/Form/Contribution/Confirm.php b/CRM/Contribute/Form/Contribution/Confirm.php index 4d81a49d53..873c0f76f7 100644 --- a/CRM/Contribute/Form/Contribution/Confirm.php +++ b/CRM/Contribute/Form/Contribution/Confirm.php @@ -282,10 +282,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr $this->_params['tax_amount'] = $this->get('tax_amount'); $this->_useForMember = $this->get('useForMember'); - if (isset($this->_params['credit_card_exp_date'])) { - $this->_params['year'] = CRM_Core_Payment_Form::getCreditCardExpirationYear($this->_params); - $this->_params['month'] = CRM_Core_Payment_Form::getCreditCardExpirationMonth($this->_params); - } + CRM_Contribute_Form_AbstractEditPayment::formatCreditCardDetails($this->_params); $this->_params['currencyID'] = CRM_Core_Config::singleton()->defaultCurrency; diff --git a/CRM/Contribute/Form/UpdateBilling.php b/CRM/Contribute/Form/UpdateBilling.php index b7d9e550f1..8c8454547f 100644 --- a/CRM/Contribute/Form/UpdateBilling.php +++ b/CRM/Contribute/Form/UpdateBilling.php @@ -200,11 +200,11 @@ class CRM_Contribute_Form_UpdateBilling extends CRM_Contribute_Form_Contribution } $processorParams['state_province'] = CRM_Core_PseudoConstant::stateProvince($params["billing_state_province_id-{$this->_bltID}"], FALSE); $processorParams['country'] = CRM_Core_PseudoConstant::country($params["billing_country_id-{$this->_bltID}"], FALSE); - $processorParams['month'] = $processorParams['credit_card_exp_date']['M']; - $processorParams['year'] = $processorParams['credit_card_exp_date']['Y']; + $processorParams['month'] = CRM_Core_Payment_Form::getCreditCardExpirationMonth($processorParams); + $processorParams['year'] = CRM_Core_Payment_Form::getCreditCardExpirationYear($processorParams); $processorParams['subscriptionId'] = $this->getSubscriptionDetails()->processor_id; $processorParams['amount'] = $this->_subscriptionDetails->amount; - $updateSubscription = $this->_paymentProcessor['object']->updateSubscriptionBillingInfo($message, $processorParams); + $updateSubscription = $this->_paymentProcessor['object']->updateSubscriptionBillingInfo('', $processorParams); if (is_a($updateSubscription, 'CRM_Core_Error')) { CRM_Core_Error::displaySessionError($updateSubscription); } @@ -333,10 +333,7 @@ class CRM_Contribute_Form_UpdateBilling extends CRM_Contribute_Form_Contribution list($donorDisplayName, $donorEmail) = CRM_Contact_BAO_Contact::getContactDetails($this->_subscriptionDetails->contact_id); $tplParams['contact'] = array('display_name' => $donorDisplayName); - $date = CRM_Utils_Date::format($processorParams['credit_card_exp_date']); - $tplParams['credit_card_exp_date'] = CRM_Utils_Date::mysqlToIso($date); - $tplParams['credit_card_number'] = CRM_Utils_System::mungeCreditCard($processorParams['credit_card_number']); - $tplParams['credit_card_type'] = $processorParams['credit_card_type']; + $tplParams = array_merge($tplParams, CRM_Contribute_Form_AbstractEditPayment::formatCreditCardDetails($processorParams)); $sendTemplateParams = array( 'groupName' => $this->_subscriptionDetails->membership_id ? 'msg_tpl_workflow_membership' : 'msg_tpl_workflow_contribution', diff --git a/CRM/Core/Form.php b/CRM/Core/Form.php index a3c4023c0e..2ae3035e70 100644 --- a/CRM/Core/Form.php +++ b/CRM/Core/Form.php @@ -802,7 +802,18 @@ class CRM_Core_Form extends HTML_QuickForm_Page { else { throw new CRM_Core_Exception(ts('A payment processor configured for this page might be disabled (contact the site administrator for assistance).')); } + } + /** + * Assign an array of variables to the form/tpl + * + * @param array $values Array of [key => value] to assign to the form + * @param array $keys Array of keys to assign from the values array + */ + public function assignVariables($values, $keys) { + foreach ($keys as $key) { + $this->assign($key, $values[$key] ?? NULL); + } } /** @@ -858,10 +869,7 @@ class CRM_Core_Form extends HTML_QuickForm_Page { } // For legacy reasons we set these creditcard expiry fields if present - if (isset($params['credit_card_exp_date'])) { - $params['year'] = CRM_Core_Payment_Form::getCreditCardExpirationYear($params); - $params['month'] = CRM_Core_Payment_Form::getCreditCardExpirationMonth($params); - } + CRM_Contribute_Form_AbstractEditPayment::formatCreditCardDetails($params); // Assign IP address parameter $params['ip_address'] = CRM_Utils_System::ipAddress(); diff --git a/CRM/Event/Form/Participant.php b/CRM/Event/Form/Participant.php index ee409a53e3..5bf815072a 100644 --- a/CRM/Event/Form/Participant.php +++ b/CRM/Event/Form/Participant.php @@ -1477,13 +1477,9 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment $this->_bltID )); - $date = CRM_Utils_Date::format($params['credit_card_exp_date']); - $date = CRM_Utils_Date::mysqlToIso($date); - $this->assign('credit_card_exp_date', $date); - $this->assign('credit_card_number', - CRM_Utils_System::mungeCreditCard($params['credit_card_number']) - ); - $this->assign('credit_card_type', $params['credit_card_type']); + $valuesForForm = CRM_Contribute_Form_AbstractEditPayment::formatCreditCardDetails($params); + $this->assignVariables($valuesForForm, ['credit_card_exp_date', 'credit_card_type', 'credit_card_number']); + // The concept of contributeMode is deprecated. $this->assign('contributeMode', 'direct'); $this->assign('isAmountzero', 0); diff --git a/CRM/Member/Form/Membership.php b/CRM/Member/Form/Membership.php index dd4d948daa..007971bf21 100644 --- a/CRM/Member/Form/Membership.php +++ b/CRM/Member/Form/Membership.php @@ -958,13 +958,9 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { $form->_bltID )); - $date = CRM_Utils_Date::format($form->_params['credit_card_exp_date']); - $date = CRM_Utils_Date::mysqlToIso($date); - $form->assign('credit_card_exp_date', $date); - $form->assign('credit_card_number', - CRM_Utils_System::mungeCreditCard($form->_params['credit_card_number']) - ); - $form->assign('credit_card_type', $form->_params['credit_card_type']); + $valuesForForm = CRM_Contribute_Form_AbstractEditPayment::formatCreditCardDetails($form->_params); + $form->assignVariables($valuesForForm, ['credit_card_exp_date', 'credit_card_type', 'credit_card_number']); + $form->assign('contributeMode', 'direct'); $form->assign('isAmountzero', 0); $form->assign('is_pay_later', 0); -- 2.25.1