Merge pull request #21212 from eileenmcnaughton/541-orig
[civicrm-core.git] / api / v3 / Membership.php
index 6232fd202853b464d4a21a4d2dbd308c60ed6db7..52e64b8b741bf653cf755544d81991aa97c191c9 100644 (file)
@@ -90,19 +90,9 @@ function civicrm_api3_membership_create($params) {
 
   // Calculate membership dates
   // Fixme: This code belongs in the BAO
-  if (empty($params['id']) || !empty($params['num_terms'])) {
+  if (!empty($params['num_terms'])) {
     // If this is a new membership or we have a specified number of terms calculate membership dates.
-    if (empty($params['id'])) {
-      // This is a new membership, calculate the membership dates.
-      $calcDates = CRM_Member_BAO_MembershipType::getDatesForMembershipType(
-        $params['membership_type_id'],
-        CRM_Utils_Array::value('join_date', $params),
-        CRM_Utils_Array::value('start_date', $params),
-        CRM_Utils_Array::value('end_date', $params),
-        CRM_Utils_Array::value('num_terms', $params, 1)
-      );
-    }
-    else {
+    if (!empty($params['id'])) {
       // This is an existing membership, calculate the membership dates after renewal
       // num_terms is treated as a 'special sauce' for is_renewal but this
       // isn't really helpful for completing pendings.
@@ -112,10 +102,10 @@ function civicrm_api3_membership_create($params) {
         CRM_Utils_Array::value('membership_type_id', $params),
         $params['num_terms']
       );
-    }
-    foreach (['join_date', 'start_date', 'end_date'] as $date) {
-      if (empty($params[$date]) && isset($calcDates[$date])) {
-        $params[$date] = $calcDates[$date];
+      foreach (['join_date', 'start_date', 'end_date'] as $date) {
+        if (empty($params[$date]) && isset($calcDates[$date])) {
+          $params[$date] = $calcDates[$date];
+        }
       }
     }
   }
@@ -281,12 +271,14 @@ function _civicrm_api3_membership_relationsship_get_customv2behaviour(&$params,
   $relationships = [];
   foreach ($membershipValues as $membershipId => $values) {
     // populate the membership type name for the membership type id
-    $membershipType = CRM_Member_BAO_MembershipType::getMembershipTypeDetails($values['membership_type_id']);
+    $membershipType = CRM_Member_BAO_MembershipType::getMembershipTypeDetails($values['membership_type_id']) ?? [];
 
-    $membershipValues[$membershipId]['membership_name'] = $membershipType['name'];
+    if (!empty($membershipType)) {
+      $membershipValues[$membershipId]['membership_name'] = $membershipType['name'];
 
-    if (!empty($membershipType['relationship_type_id'])) {
-      $relationships[$membershipType['relationship_type_id']] = $membershipId;
+      if (!empty($membershipType['relationship_type_id'])) {
+        $relationships[$membershipType['relationship_type_id']] = $membershipId;
+      }
     }
 
     // populating relationship type name.