From 9ec90e570aa797c80a519cc5a0f7d867932450f3 Mon Sep 17 00:00:00 2001 From: eileen Date: Thu, 11 Apr 2013 11:12:13 +1200 Subject: [PATCH] fix for note api test failure --- api/api.php | 2 +- api/v3/Generic.php | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/api/api.php b/api/api.php index b18318b967..84113f6e53 100644 --- a/api/api.php +++ b/api/api.php @@ -51,7 +51,7 @@ function civicrm_api($entity, $action, $params, $extra = NULL) { // we do this before we _civicrm_api3_swap_out_aliases($apiRequest); if (strtolower($action) != 'getfields') { - if (!CRM_Utils_Array::value('id', $params)) { + if (!CRM_Utils_Array::value('id', $apiRequest['params'])) { $apiRequest['params'] = array_merge(_civicrm_api3_getdefaults($apiRequest), $apiRequest['params']); } //if 'id' is set then only 'version' will be checked but should still be checked for consistency diff --git a/api/v3/Generic.php b/api/v3/Generic.php index ac9c7cb024..71eaf93af6 100644 --- a/api/v3/Generic.php +++ b/api/v3/Generic.php @@ -69,11 +69,23 @@ function civicrm_api3_generic_getfields($apiRequest) { $unique = FALSE; case 'get': $metadata = _civicrm_api_get_fields($apiRequest['entity'], $unique, $apiRequest['params']); - if (empty($metadata['id']) && !empty($metadata[strtolower($apiRequest['entity']) . '_id'])) { - $metadata['id'] = $metadata[$lcase_entity . '_id']; + if (empty($metadata['id'])){ + // if id is not set we will set it eg. 'id' from 'case_id', case_id will be an alias + if(!empty($metadata[strtolower($apiRequest['entity']) . '_id'])) { + $metadata['id'] = $metadata[$lcase_entity . '_id']; + unset($metadata[$lcase_entity . '_id']); + $metadata['id']['api.aliases'] = array($lcase_entity . '_id'); + } + } + else{ + // really the preference would be to set the unique name in the xml + // question is which is a less risky fix this close to a release - setting in xml for the known failure + // (note) or setting for all api where fields is returning 'id' & we want to accept 'note_id' @ the api layer + // nb we don't officially accept note_id anyway - rationale here is more about centralising a now-tested + // inconsistency $metadata['id']['api.aliases'] = array($lcase_entity . '_id'); - unset($metadata[$lcase_entity . '_id']); } + break; case 'delete': -- 2.25.1