From 3148d4cdfd4872168147f68852ae642c0c8ab67b Mon Sep 17 00:00:00 2001 From: Jamie McClelland Date: Wed, 22 Sep 2021 10:00:36 -0400 Subject: [PATCH] ensure recur options are present on backend cc contribution form. We seem to be adding an extra check to see if the given payment processor has any credit card fields before including the recur option on the backend contribution page. But some processors, like Stripe, insert the fields via javascript. It should be enough to just test for the existence of a payment processor that supports recur to run the block. Also, no other code is checking the return value of buildPaymentForm so removing it. --- CRM/Contribute/Form/Contribution.php | 31 ++++++++++++++-------------- CRM/Core/Payment/Form.php | 3 +-- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/CRM/Contribute/Form/Contribution.php b/CRM/Contribute/Form/Contribution.php index 2d42f8f654..a21afe61d2 100644 --- a/CRM/Contribute/Form/Contribution.php +++ b/CRM/Contribute/Form/Contribution.php @@ -572,24 +572,23 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP } $this->payment_instrument_id = CRM_Utils_Array::value('payment_instrument_id', $defaults, $this->getDefaultPaymentInstrumentId()); - if (CRM_Core_Payment_Form::buildPaymentForm($this, $this->_paymentProcessor, FALSE, TRUE, $this->payment_instrument_id) == TRUE) { - if (!empty($this->_recurPaymentProcessors)) { - $buildRecurBlock = TRUE; - if ($this->_ppID) { - // ppID denotes a pledge payment. - foreach ($this->_paymentProcessors as $processor) { - if (!empty($processor['is_recur']) && !empty($processor['object']) && $processor['object']->supports('recurContributionsForPledges')) { - $buildRecurBlock = TRUE; - break; - } - $buildRecurBlock = FALSE; + CRM_Core_Payment_Form::buildPaymentForm($this, $this->_paymentProcessor, FALSE, TRUE, $this->payment_instrument_id); + if (!empty($this->_recurPaymentProcessors)) { + $buildRecurBlock = TRUE; + if ($this->_ppID) { + // ppID denotes a pledge payment. + foreach ($this->_paymentProcessors as $processor) { + if (!empty($processor['is_recur']) && !empty($processor['object']) && $processor['object']->supports('recurContributionsForPledges')) { + $buildRecurBlock = TRUE; + break; } + $buildRecurBlock = FALSE; } - if ($buildRecurBlock) { - CRM_Contribute_Form_Contribution_Main::buildRecur($this); - $this->setDefaults(['is_recur' => 0]); - $this->assign('buildRecurBlock', TRUE); - } + } + if ($buildRecurBlock) { + CRM_Contribute_Form_Contribution_Main::buildRecur($this); + $this->setDefaults(['is_recur' => 0]); + $this->assign('buildRecurBlock', TRUE); } } $this->addPaymentProcessorSelect(FALSE, $buildRecurBlock); diff --git a/CRM/Core/Payment/Form.php b/CRM/Core/Payment/Form.php index 1c7263812c..c11765cb5f 100644 --- a/CRM/Core/Payment/Form.php +++ b/CRM/Core/Payment/Form.php @@ -222,13 +222,12 @@ class CRM_Core_Payment_Form { } if (!empty($processor['object']) && $processor['object']->buildForm($form)) { - return NULL; + return; } self::setPaymentFieldsByProcessor($form, $processor, $billing_profile_id, $isBackOffice, $paymentInstrumentID); self::addCommonFields($form, $form->_paymentFields); self::addRules($form, $form->_paymentFields); - return (!empty($form->_paymentFields)); } /** -- 2.25.1