- $ids['membershipType'] = CRM_Utils_Array::value('id', $params);
- $ids['memberOfContact'] = CRM_Utils_Array::value('member_of_contact_id', $params);
- $ids['contributionType'] = CRM_Utils_Array::value('financial_type_id', $params);
-
- $membershipTypeBAO = CRM_Member_BAO_MembershipType::add($params, $ids);
- $membershipType = array();
- _civicrm_api3_object_to_array($membershipTypeBAO, $membershipType[$membershipTypeBAO->id]);
- CRM_Member_PseudoConstant::membershipType(NULL, TRUE);
- civicrm_api3('membership', 'getfields', array('cache_clear' => 1, 'fieldname' => 'membership_type_id'));
- civicrm_api3('profile', 'getfields', array('action' => 'submit', 'cache_clear' => 1));
- return civicrm_api3_create_success($membershipType, $params, 'membership_type', 'create', $membershipTypeBAO);
+ // 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');