Ejemplo n.º 1
0
/**
 * 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]))));
}