Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'core/DataTable/Renderer/Json.php')
-rw-r--r--core/DataTable/Renderer/Json.php23
1 files changed, 23 insertions, 0 deletions
diff --git a/core/DataTable/Renderer/Json.php b/core/DataTable/Renderer/Json.php
index 5febed6a88..0ce45db6ba 100644
--- a/core/DataTable/Renderer/Json.php
+++ b/core/DataTable/Renderer/Json.php
@@ -21,9 +21,21 @@ class Piwik_DataTable_Renderer_Json extends Piwik_DataTable_Renderer
{
public function render()
{
+ Piwik_DataTable_Renderer_Json::renderHeader();
return $this->renderTable($this->table);
}
+ function renderException()
+ {
+ Piwik_DataTable_Renderer_Json::renderHeader();
+
+ $exceptionMessage = self::renderHtmlEntities($this->exception->getMessage());
+ $exceptionMessage = str_replace("\n", "", $exceptionMessage);
+ $exceptionMessage = '{"result":"error", "message":"'.$exceptionMessage.'"}';
+
+ return $this->jsonpWrap($exceptionMessage);
+ }
+
protected function renderTable($table)
{
$renderer = new Piwik_DataTable_Renderer_Php();
@@ -38,6 +50,11 @@ class Piwik_DataTable_Renderer_Json extends Piwik_DataTable_Renderer
}
$str = json_encode($array);
+ return $this->jsonpWrap($str);
+ }
+
+ protected function jsonpWrap($str)
+ {
if(($jsonCallback = Piwik_Common::getRequestVar('jsoncallback', false)) !== false)
{
if(preg_match('/^[0-9a-zA-Z]*$/', $jsonCallback) > 0)
@@ -45,6 +62,12 @@ class Piwik_DataTable_Renderer_Json extends Piwik_DataTable_Renderer
$str = $jsonCallback . "(" . $str . ")";
}
}
+
return $str;
}
+
+ static private function renderHeader ()
+ {
+ @header( "Content-Type: application/json" );
+ }
}