ensure recur options are present on backend cc contribution form.
authorJamie McClelland <jm@mayfirst.org>
Wed, 22 Sep 2021 14:00:36 +0000 (10:00 -0400)
committerJamie McClelland <jm@mayfirst.org>
Thu, 23 Sep 2021 15:43:44 +0000 (11:43 -0400)
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
CRM/Core/Payment/Form.php

index 2d42f8f6543b6faa1130c8905345e0cede725b9a..a21afe61d20ad9cf4582f08126d644bd066c5cb3 100644 (file)
@@ -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);
index 1c7263812c522bae496812da1b71964e17012560..c11765cb5f9353900ff1379e15d442bf00b688e8 100644 (file)
@@ -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));
   }
 
   /**