X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=api%2Fv3%2FRelationship.php;h=b36069a41001b89493b1da71fafdfc8b0b59f92a;hb=53128a92d19ec8f0526b48a4a0c044bb0d671d84;hp=1b6c3cb94ac132d61212e93eb5aef06ab6894a6e;hpb=149e631532beb9953cde6af3e647bbc82ee2e3d5;p=civicrm-core.git diff --git a/api/v3/Relationship.php b/api/v3/Relationship.php index 1b6c3cb94a..b36069a410 100644 --- a/api/v3/Relationship.php +++ b/api/v3/Relationship.php @@ -1,9 +1,8 @@ $params['contact_id_b']); - $ids['contact'] = $values['contact_id_a']; + 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]) { - return civicrm_api3_create_error('Relationship is not valid'); + throw new API_Exception('Relationship is not valid'); } elseif ($relationshipBAO[2]) { - return civicrm_api3_create_error('Relationship already exists'); + throw new API_Exception('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]), - ))); + $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'); } /** @@ -109,7 +107,6 @@ function _civicrm_api3_relationship_create_spec(&$params) { */ function civicrm_api3_relationship_delete($params) { - require_once 'CRM/Utils/Rule.php'; if (!CRM_Utils_Rule::integer($params['id'])) { return civicrm_api3_create_error('Invalid value for relationship ID'); } @@ -139,8 +136,12 @@ function civicrm_api3_relationship_delete($params) { * @access public */ function civicrm_api3_relationship_get($params) { + $options = _civicrm_api3_get_options_from_params($params); - if (!CRM_Utils_Array::value('contact_id', $params)) { + if (empty($params['contact_id'])) { + if(!empty($params['membership_type_id']) && empty($params['relationship_type_id'])) { + CRM_Contact_BAO_Relationship::membershipTypeToRelationshipTypes($params); + } $relationships = _civicrm_api3_basic_get(_civicrm_api3_get_BAO(__FUNCTION__), $params, FALSE); } else { @@ -148,15 +149,21 @@ function civicrm_api3_relationship_get($params) { $relationships = CRM_Contact_BAO_Relationship::getRelationship($params['contact_id'], CRM_Utils_Array::value('status_id', $params), 0, - 0, - CRM_Utils_Array::value('id', $params), NULL + CRM_Utils_Array::value('is_count', $options), + CRM_Utils_Array::value('id', $params), + NULL, + NULL, + FALSE, + $params ); } + //perhaps we should add a 'getcount' but at this stage lets just handle getcount output + if($options['is_count']) { + return array('count' => $relationships); + } foreach ($relationships as $relationshipId => $values) { _civicrm_api3_custom_data_get($relationships[$relationshipId], 'Relationship', $relationshipId, NULL, CRM_Utils_Array::value('relationship_type_id',$values)); } - - return civicrm_api3_create_success($relationships, $params); } @@ -179,7 +186,7 @@ function _civicrm_api3_relationship_format_params($params, &$values) { _civicrm_api3_store_values($fields, $params, $values); $relationTypes = CRM_Core_PseudoConstant::relationshipType('name'); - if (CRM_Utils_Array::value('id', $params)) { + if (!empty($params['id'])) { $relation = new CRM_Contact_BAO_Relationship(); $relation->id = $params['id']; if (!$relation->find(TRUE)) { @@ -208,7 +215,6 @@ function _civicrm_api3_relationship_format_params($params, &$values) { foreach ($params as $key => $value) { // ignore empty values or empty arrays etc - require_once 'CRM/Utils/System.php'; if (CRM_Utils_System::isNull($value)) { continue; } @@ -216,7 +222,6 @@ function _civicrm_api3_relationship_format_params($params, &$values) { switch ($key) { case 'contact_id_a': case 'contact_id_b': - require_once 'CRM/Utils/Rule.php'; if (!CRM_Utils_Rule::integer($value)) { throw new Exception("contact_id not valid: $value"); } @@ -239,7 +244,7 @@ function _civicrm_api3_relationship_format_params($params, &$values) { } if ($relationshipTypeId) { - if (CRM_Utils_Array::value('relationship_type_id', $values) && + if (!empty($values['relationship_type_id']) && $relationshipTypeId != $values['relationship_type_id'] ) { throw new Exception('Mismatched Relationship Type and Relationship Type Id');