/** * Add or update a relationship * * @param array $params input parameters * * @throws API_Exception * @example RelationshipCreate.php Std Create example * * @return array API Result Array * {@getfields relationship_create} * @static void * @access public */ function civicrm_api3_relationship_create($params) { $values = array(); _civicrm_api3_relationship_format_params($params, $values); $ids = array(); $action = CRM_Core_Action::ADD; if (!empty($params['id'])) { $ids['contactTarget'] = $values['contact_id_b']; $action = CRM_Core_Action::UPDATE; } $values['relationship_type_id'] = $values['relationship_type_id'] . '_a_b'; if (!empty($params['contact_id_b'])) { $values['contact_check'] = array($params['contact_id_b'] => $params['contact_id_b']); } if (!empty($values['contact_id_a'])) { $ids['contact'] = $values['contact_id_a']; } $relationshipBAO = CRM_Contact_BAO_Relationship::create($values, $ids); if ($relationshipBAO[1]) { throw new API_Exception('Relationship is not valid'); } elseif ($relationshipBAO[2]) { throw new API_Exception('Relationship already exists'); } // Handle related memberships CRM-13652 if (!empty($params['contact_id_a'])) { CRM_Contact_BAO_Relationship::relatedMemberships($params['contact_id_a'], $values, $ids, $action); } $id = $relationshipBAO[4][0]; $values = array(); _civicrm_api3_object_to_array($relationshipBAO[5][$id], $values[$id]); return civicrm_api3_create_success($values, $params, 'relationship', 'create'); }
/** * Add or update a relationship * * @param array $params input parameters * * @example RelationshipCreate.php Std Create example * * @return array API Result Array * {@getfields relationship_create} * @static void * @access public * */ function civicrm_api3_relationship_create($params) { // check entities exist $orig_values = _civicrm_api3_relationship_check_params($params); $values = array(); _civicrm_api3_relationship_format_params($params, $values); $ids = array(); require_once 'CRM/Core/Action.php'; $action = CRM_Core_Action::ADD; require_once 'CRM/Utils/Array.php'; if (CRM_Utils_Array::value('id', $params)) { $params = array_merge($params, $orig_values); $ids['relationship'] = $params['id']; $ids['contactTarget'] = $params['contact_id_b']; $action = CRM_Core_Action::UPDATE; } $values['relationship_type_id'] = $params['relationship_type_id'] . '_a_b'; $values['contact_check'] = array($params['contact_id_b'] => $params['contact_id_b']); $ids['contact'] = $params['contact_id_a']; $relationshipBAO = CRM_Contact_BAO_Relationship::create($values, $ids); if ($relationshipBAO[1]) { return civicrm_api3_create_error('Relationship is not valid'); } elseif ($relationshipBAO[2]) { return civicrm_api3_create_error('Relationship already exists'); } CRM_Contact_BAO_Relationship::relatedMemberships($params['contact_id_a'], $values, $ids, $action); $relationID = $relationshipBAO[4][0]; return civicrm_api3_create_success(array($relationID => array('id' => $relationID, 'moreIDs' => implode(',', $relationshipBAO[4])))); }