Merge branch '4.4' of https://github.com/civicrm/civicrm-core
[civicrm-core.git] / api / v3 / Relationship.php
index e6ba8153f529b191dd0468c9b2a4439bd2cbdbda..b36069a41001b89493b1da71fafdfc8b0b59f92a 100644 (file)
@@ -2,7 +2,7 @@
 
 /*
  +--------------------------------------------------------------------+
- | CiviCRM version 4.3                                                |
+ | CiviCRM version 4.4                                                |
  +--------------------------------------------------------------------+
  | Copyright CiviCRM LLC (c) 2004-2013                                |
  +--------------------------------------------------------------------+
@@ -56,7 +56,7 @@ function civicrm_api3_relationship_create($params) {
   _civicrm_api3_relationship_format_params($params, $values);
   $ids = array();
 
-  if (CRM_Utils_Array::value('id', $params)) {
+  if (!empty($params['id'])) {
     $ids['contactTarget'] = $values['contact_id_b'];
   }
 
@@ -136,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 {
@@ -145,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);
 }
 
@@ -176,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)) {
@@ -234,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');