From 143ed7256184049d59c32e3a441e31a8855e9816 Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Fri, 21 Mar 2014 16:51:52 -0700 Subject: [PATCH] CRM-14370 - API Kernel - DRY result formatting --- Civi/API/Kernel.php | 42 +++++++++++++++++++----------------------- 1 file changed, 19 insertions(+), 23 deletions(-) diff --git a/Civi/API/Kernel.php b/Civi/API/Kernel.php index 0f67a3f7d5..50f25eeba3 100644 --- a/Civi/API/Kernel.php +++ b/Civi/API/Kernel.php @@ -143,37 +143,16 @@ class Kernel { $result = $apiWrapper->toApiOutput($apiRequest, $result); } - if (\CRM_Utils_Array::value('format.is_success', $apiRequest['params']) == 1) { - if ($result['is_error'] === 0) { - // FIXME dispatch - return 1; - } - else { - // FIXME dispatch - return 0; - } - } - if (!empty($apiRequest['params']['format.only_id']) && isset($result['id'])) { - // FIXME dispatch - return $result['id']; - } - if (\CRM_Utils_Array::value('is_error', $result, 0) == 0) { _civicrm_api_call_nested_api($apiRequest['params'], $result, $apiRequest['action'], $apiRequest['entity'], $apiRequest['version']); } $responseEvent = $this->dispatcher->dispatch(Events::RESPOND, new RespondEvent(NULL, $apiRequest, $result)); - $result = $responseEvent->getResponse(); - - return $result; + return $this->formatResult($apiRequest, $responseEvent->getResponse()); } catch (\Exception $e) { $this->dispatcher->dispatch(Events::EXCEPTION, new ExceptionEvent($e, NULL, $apiRequest)); - if (isset($apiRequest, $apiRequest['params'], $apiRequest['params']['format.is_success']) && $apiRequest['params']['format.is_success'] == 1) { - return 0; - } - if ($e instanceof \PEAR_Exception) { $err = $this->formatPearException($e, $apiRequest); } elseif ($e instanceof \API_Exception) { @@ -182,7 +161,7 @@ class Kernel { $err = $this->formatException($e, $apiRequest); } - return $err; + return $this->formatResult($apiRequest, $err); } } @@ -252,4 +231,21 @@ class Kernel { return civicrm_api3_create_error($e->getMessage(), $data, $apiRequest); } + + /** + * @return mixed + */ + public function formatResult($apiRequest, $result) { + if (isset($apiRequest, $apiRequest['params'])) { + if (isset($apiRequest['params']['format.is_success']) && $apiRequest['params']['format.is_success'] == 1) { + return (empty($result['is_error'])) ? 1 : 0; + } + + if (!empty($apiRequest['params']['format.only_id']) && isset($result['id'])) { + // FIXME dispatch + return $result['id']; + } + } + return $result; + } } \ No newline at end of file -- 2.25.1