test fix for CRM-13160
[civicrm-core.git] / api / v3 / MembershipType.php
index ea36118b2e99b0f7f3b70361839579a039a494c0..9317407206a473cd715df30260959a9f7aa8a4ac 100644 (file)
  *   API result array.
  */
 function civicrm_api3_membership_type_create($params) {
+  // Workaround for fields using nonstandard serialization
+  foreach (array('relationship_type_id', 'relationship_direction') as $field) {
+    if (isset($params[$field]) && is_array($params[$field])) {
+      $params[$field] = implode(CRM_Core_DAO::VALUE_SEPARATOR, $params[$field]);
+    }
+  }
   return _civicrm_api3_basic_create(_civicrm_api3_get_BAO(__FUNCTION__), $params, 'Membership_type');
 }
 
@@ -74,7 +80,18 @@ function _civicrm_api3_membership_type_create_spec(&$params) {
  *   API result array.
  */
 function civicrm_api3_membership_type_get($params) {
-  return _civicrm_api3_basic_get(_civicrm_api3_get_BAO(__FUNCTION__), $params);
+  $results = _civicrm_api3_basic_get(_civicrm_api3_get_BAO(__FUNCTION__), $params);
+  if (!empty($results['values']) && is_array($results['values'])) {
+    foreach ($results['values'] as &$item) {
+      // Workaround for fields using nonstandard serialization
+      foreach (array('relationship_type_id', 'relationship_direction') as $field) {
+        if (isset($item[$field]) && !is_array($item[$field])) {
+          $item[$field] = (array) $item[$field];
+        }
+      }
+    }
+  }
+  return $results;
 }
 
 /**