| <?php |
|
|
| |
| |
| |
| |
| |
| |
|
|
| namespace Piwik\Plugins\API\Renderer; |
|
|
| use Piwik\API\ApiRenderer; |
| use Piwik\API\Request; |
| use Piwik\Common; |
| use Piwik\DataTable; |
| use Piwik\DataTable\DataTableInterface; |
| use Piwik\Plugins\Monolog\Processor\ExceptionToTextProcessor; |
|
|
| class Original extends ApiRenderer |
| { |
| public static function sendPlainTextHeader() |
| { |
| Common::sendHeader('Content-Type: text/plain; charset=utf-8'); |
| } |
|
|
| public function renderSuccess($message) |
| { |
| return true; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| public function renderException($message, $exception) |
| { |
| if ($this->shouldSerialize()) { |
| $data = [ |
| 'result' => 'error', |
| 'message' => $message, |
| ]; |
|
|
| if ($this->shouldSendBacktrace()) { |
| $data['backtrace'] = ExceptionToTextProcessor::getMessageAndWholeBacktrace($exception, true); |
| } |
|
|
| return serialize($data); |
| } |
|
|
| throw $exception; |
| } |
|
|
| public function renderDataTable($dataTable) |
| { |
| return $this->serializeIfNeeded($dataTable); |
| } |
|
|
| public function renderArray($array) |
| { |
| return $this->serializeIfNeeded($array); |
| } |
|
|
| public function renderScalar($scalar) |
| { |
| return $this->serializeIfNeeded($scalar); |
| } |
|
|
| public function renderObject($object) |
| { |
| return $this->serializeIfNeeded($object); |
| } |
|
|
| public function renderResource($resource) |
| { |
| return $resource; |
| } |
|
|
| public function sendHeader() |
| { |
| if (Request::isRootRequestApiRequest()) { |
| self::sendPlainTextHeader(); |
| } |
| } |
|
|
| |
| |
| |
| private function shouldSerialize(): bool |
| { |
| return $this->requestObj->getBoolParameter('serialize', false); |
| } |
|
|
| private function serializeIfNeeded($response) |
| { |
| if ($this->shouldSerialize()) { |
| if ($response instanceof DataTableInterface) { |
| |
| $response->filter(function (DataTable $table) { |
| $allMetadata = $table->getAllTableMetadata(); |
| unset($allMetadata[DataTable::COLUMN_AGGREGATION_OPS_METADATA_NAME]); |
| $table->setAllTableMetadata($allMetadata); |
|
|
| if ($this->hideIdSubDataTable) { |
| foreach ($table->getRows() as $row) { |
| $row->removeSubtable(); |
| } |
| } |
|
|
| |
| if (isset($allMetadata['segment']) && $allMetadata['segment'] === false) { |
| $table->setMetadata('segment', ''); |
| } |
| }); |
| } |
|
|
| return serialize($response); |
| } |
| return $response; |
| } |
| } |
|
|