Merge pull request #14919 from eileenmcnaughton/mem_review
authorMatthew Wire <mjw@mjwconsult.co.uk>
Sun, 13 Oct 2019 15:36:51 +0000 (16:36 +0100)
committerGitHub <noreply@github.com>
Sun, 13 Oct 2019 15:36:51 +0000 (16:36 +0100)
[Membership-backoffice] Reduce reliance on multiple specific but confusing class variables

CRM/Member/Form/Membership.php

index bdc9c861101e8bcdd05d732aed3365902efd38a6..383a73f63e1eac82cb12d1a24ae620d63ffab1d7 100644 (file)
@@ -1132,20 +1132,21 @@ class CRM_Member_Form_Membership extends CRM_Member_Form {
     //take the required membership recur values.
     if ($this->_mode && !empty($formValues['auto_renew'])) {
       $params['is_recur'] = $formValues['is_recur'] = TRUE;
-      $mapping = [
-        'frequency_interval' => 'duration_interval',
-        'frequency_unit' => 'duration_unit',
-      ];
 
       $count = 0;
       foreach ($this->_memTypeSelected as $memType) {
         $recurMembershipTypeValues = CRM_Utils_Array::value($memType,
-          $this->_recurMembershipTypes, []
+          $this->allMembershipTypeDetails, []
         );
-        foreach ($mapping as $mapVal => $mapParam) {
-          $membershipTypeValues[$memType][$mapVal] = CRM_Utils_Array::value($mapParam,
-            $recurMembershipTypeValues
-          );
+        if (!$recurMembershipTypeValues['auto_renew']) {
+          continue;
+        }
+        foreach ([
+          'frequency_interval' => 'duration_interval',
+          'frequency_unit' => 'duration_unit',
+        ] as $mapVal => $mapParam) {
+          $membershipTypeValues[$memType][$mapVal] = $recurMembershipTypeValues[$mapParam];
+
           if (!$count) {
             $formValues[$mapVal] = CRM_Utils_Array::value($mapParam,
               $recurMembershipTypeValues