diff options
author | Thomas Steur <thomas.steur@googlemail.com> | 2014-10-15 03:30:45 +0400 |
---|---|---|
committer | Thomas Steur <thomas.steur@googlemail.com> | 2014-10-15 03:30:45 +0400 |
commit | a06612e6feb3c45406b5469d1aaae0aea2884933 (patch) | |
tree | 693f8e87b89ddca65178336099f49c1f4f19a125 /core | |
parent | 4b933af4d698c7811ab308d7cb2fc01a6d43fb43 (diff) |
fixes #6384 do not send headers in case total values are calculated
Diffstat (limited to 'core')
-rw-r--r-- | core/API/DataTableManipulator.php | 1 | ||||
-rw-r--r-- | core/API/ResponseBuilder.php | 18 |
2 files changed, 17 insertions, 2 deletions
diff --git a/core/API/DataTableManipulator.php b/core/API/DataTableManipulator.php index 30513daaf3..6d744e50df 100644 --- a/core/API/DataTableManipulator.php +++ b/core/API/DataTableManipulator.php @@ -180,6 +180,7 @@ abstract class DataTableManipulator $dataTable = Proxy::getInstance()->call($class, $method, $request); $response = new ResponseBuilder($format = 'original', $request); + $response->disableSendHeader(); $dataTable = $response->getResponse($dataTable); if (Common::getRequestVar('disable_queued_filters', 0, 'int', $request) == 0) { diff --git a/core/API/ResponseBuilder.php b/core/API/ResponseBuilder.php index 401dccf96c..5b00c01a13 100644 --- a/core/API/ResponseBuilder.php +++ b/core/API/ResponseBuilder.php @@ -26,6 +26,7 @@ class ResponseBuilder private $outputFormat = null; private $apiRenderer = null; private $request = null; + private $sendHeader = true; private $apiModule = false; private $apiMethod = false; @@ -41,6 +42,11 @@ class ResponseBuilder $this->apiRenderer = ApiRenderer::factory($outputFormat, $request); } + public function disableSendHeader() + { + $this->sendHeader = false; + } + /** * This method processes the data resulting from the API call. * @@ -73,7 +79,7 @@ class ResponseBuilder $this->apiModule = $apiModule; $this->apiMethod = $apiMethod; - $this->apiRenderer->sendHeader(); + $this->sendHeaderIfEnabled(); // when null or void is returned from the api call, we handle it as a successful operation if (!isset($value)) { @@ -123,7 +129,8 @@ class ResponseBuilder $e = $this->decorateExceptionWithDebugTrace($e); $message = $this->formatExceptionMessage($e); - $this->apiRenderer->sendHeader(); + $this->sendHeaderIfEnabled(); + return $this->apiRenderer->renderException($message, $e); } @@ -282,4 +289,11 @@ class ResponseBuilder $label = Common::unsanitizeInputValues($label); return $label; } + + private function sendHeaderIfEnabled() + { + if ($this->sendHeader) { + $this->apiRenderer->sendHeader(); + } + } } |