Code cleanup on membership block loop
authorMatthew Wire (MJW Consulting) <mjw@mjwconsult.co.uk>
Mon, 18 Mar 2019 04:44:21 +0000 (17:44 +1300)
committereileen <emcnaughton@wikimedia.org>
Mon, 18 Mar 2019 04:44:35 +0000 (17:44 +1300)
CRM/Contribute/Form/ContributionBase.php

index f6e71a167d9ab07109f53a27c75cb5e881977f6d..f8b6f1a1467bcfbe24134c9c86b1e0d08ae8eb3c 100644 (file)
@@ -1195,6 +1195,18 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
         $membershipTypeValues = CRM_Member_BAO_Membership::buildMembershipTypeValues($this, $membershipTypeIds);
         $this->_membershipTypeValues = $membershipTypeValues;
         $endDate = NULL;
+
+        // Check if we support auto-renew on this contribution page
+        // FIXME: If any of the payment processors do NOT support recurring you cannot setup an
+        //   auto-renew payment even if that processor is not selected.
+        $allowAutoRenewOpt = TRUE;
+        if (is_array($this->_paymentProcessors)) {
+          foreach ($this->_paymentProcessors as $id => $val) {
+            if ($id && !$val['is_recur']) {
+              $allowAutoRenewOpt = FALSE;
+            }
+          }
+        }
         foreach ($membershipTypeIds as $value) {
           $memType = $membershipTypeValues[$value];
           if ($selectedMembershipTypeID != NULL) {
@@ -1217,23 +1229,16 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
             }
           }
           elseif ($memType['is_active']) {
-            $javascriptMethod = NULL;
-            $allowAutoRenewOpt = (int) $memType['auto_renew'];
-            if (is_array($this->_paymentProcessors)) {
-              foreach ($this->_paymentProcessors as $id => $val) {
-                if ($id && !$val['is_recur']) {
-                  $allowAutoRenewOpt = 0;
-                  continue;
-                }
-              }
-            }
-
-            $javascriptMethod = array('onclick' => "return showHideAutoRenew( this.value );");
-            $autoRenewMembershipTypeOptions["autoRenewMembershipType_{$value}"] = (int) $allowAutoRenewOpt * CRM_Utils_Array::value($value, CRM_Utils_Array::value('auto_renew', $this->_membershipBlock));;
 
             if ($allowAutoRenewOpt) {
+              $javascriptMethod = array('onclick' => "return showHideAutoRenew( this.value );");
+              $autoRenewMembershipTypeOptions["autoRenewMembershipType_{$value}"] = (int) $memType['auto_renew'] * CRM_Utils_Array::value($value, CRM_Utils_Array::value('auto_renew', $this->_membershipBlock));
               $allowAutoRenewMembership = TRUE;
             }
+            else {
+              $javascriptMethod = NULL;
+              $autoRenewMembershipTypeOptions["autoRenewMembershipType_{$value}"] = 0;
+            }
 
             //add membership type.
             $radio[$memType['id']] = $this->createElement('radio', NULL, NULL, NULL,