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:
authormatt <matt@59fd770c-687e-43c8-a1e3-f5a4ff64c105>2008-03-23 04:09:59 +0300
committermatt <matt@59fd770c-687e-43c8-a1e3-f5a4ff64c105>2008-03-23 04:09:59 +0300
commit37d5deb35fe20a12756f02c439505dbaf5b4b792 (patch)
treea9fe7115469e4a71f4441914717b47224611a266 /modules/DataTable/Renderer
parentb1b5086f1d3aeb4b1c4965608527935f97590441 (diff)
- fixed rendering of recursive dataTable (php / xml) eg. try http://piwik.org/demo/index.php?module=API&method=Actions.getActions&idSite=1&period=week&date=today&filter_column_recursive=label&filter_pattern_recursive=index&expanded=1&format=xml
- refs #33 work in progress
Diffstat (limited to 'modules/DataTable/Renderer')
-rw-r--r--modules/DataTable/Renderer/Csv.php28
-rw-r--r--modules/DataTable/Renderer/Html.php1
-rw-r--r--modules/DataTable/Renderer/Json.php3
-rw-r--r--modules/DataTable/Renderer/Php.php19
-rw-r--r--modules/DataTable/Renderer/Rss.php4
-rw-r--r--modules/DataTable/Renderer/Xml.php12
6 files changed, 52 insertions, 15 deletions
diff --git a/modules/DataTable/Renderer/Csv.php b/modules/DataTable/Renderer/Csv.php
index cf0516ecab..ea4c7920a1 100644
--- a/modules/DataTable/Renderer/Csv.php
+++ b/modules/DataTable/Renderer/Csv.php
@@ -19,6 +19,8 @@ require_once "DataTable/Renderer/Php.php";
* The default field delimiter string is a comma (,).
* Formatting and layout are ignored.
*
+ * Note that CSV output doesn't handle recursive dataTable. It will output only the first parent level of the tables.
+ *
* @package Piwik_DataTable
* @subpackage Piwik_DataTable_Renderer
*
@@ -26,10 +28,34 @@ require_once "DataTable/Renderer/Php.php";
class Piwik_DataTable_Renderer_Csv extends Piwik_DataTable_Renderer
{
+ /**
+ * Column separator
+ *
+ * @var string
+ */
public $separator = ',';
+
+ /**
+ * Line end
+ *
+ * @var string
+ */
+ public $lineEnd = "\n";
+
+ /**
+ * 'details' columns will be exported, prefixed by 'detail_'
+ *
+ * @var bool
+ */
public $exportDetail = true;
+
+ /**
+ * idSubtable will be exported in a column called 'idsubdatatable'
+ *
+ * @var bool
+ */
public $exportIdSubtable = true;
- public $lineEnd = "\n";
+
function __construct($table = null)
{
diff --git a/modules/DataTable/Renderer/Html.php b/modules/DataTable/Renderer/Html.php
index 0f60159564..a80230a137 100644
--- a/modules/DataTable/Renderer/Html.php
+++ b/modules/DataTable/Renderer/Html.php
@@ -11,6 +11,7 @@
/**
* Simple HTML output
+ * Works with recursive DataTable (when a row can be associated with a subDataTable).
*
* @package Piwik_DataTable
* @subpackage Piwik_DataTable_Renderer
diff --git a/modules/DataTable/Renderer/Json.php b/modules/DataTable/Renderer/Json.php
index bb8189c113..2a91b754e4 100644
--- a/modules/DataTable/Renderer/Json.php
+++ b/modules/DataTable/Renderer/Json.php
@@ -11,7 +11,8 @@
require_once "DataTable/Renderer/Php.php";
/**
- * JSON export. Using the php 5.2 feature json_encode
+ * JSON export. Using the php 5.2 feature json_encode.
+ * Works with recursive DataTable (when a row can be associated with a subDataTable).
*
* @package Piwik_DataTable
* @subpackage Piwik_DataTable_Renderer
diff --git a/modules/DataTable/Renderer/Php.php b/modules/DataTable/Renderer/Php.php
index 5a6718eb6a..3027b8849b 100644
--- a/modules/DataTable/Renderer/Php.php
+++ b/modules/DataTable/Renderer/Php.php
@@ -10,16 +10,20 @@
*/
/**
- * Returns the equivalent PHP array of the DataTable.
+ * Returns the equivalent PHP array for a given DataTable.
* You can specify in the constructor if you want the serialized version.
* Please note that by default it will produce a flat version of the array.
- * See the method flatRender() for details.
+ * See the method flatRender() for details. @see flatRender();
+ *
+ * Works with recursive DataTable (when a row can be associated with a subDataTable).
*
* @package Piwik_DataTable
* @subpackage Piwik_DataTable_Renderer
*/
class Piwik_DataTable_Renderer_Php extends Piwik_DataTable_Renderer
{
+ protected $serialize;
+
public function __construct($table = null, $serialize = true)
{
parent::__construct($table);
@@ -56,7 +60,7 @@ class Piwik_DataTable_Renderer_Php extends Piwik_DataTable_Renderer
* @return array Php array representing the 'flat' version of the datatable
*
*/
- public function flatRender( $dataTable = null )
+ public function flatRender( $dataTable = null, $doRenderSubTablesIfAvailable = true )
{
if(is_null($dataTable))
{
@@ -73,7 +77,6 @@ class Piwik_DataTable_Renderer_Php extends Piwik_DataTable_Renderer
$flatArray[$keyName] = $this->flatRender($table);
$this->serialize = $serializeSave;
}
-// var_dump($flatArray);
}
// A DataTable_Simple is already flattened so no need to do some crazy stuff to convert it
@@ -87,16 +90,12 @@ class Piwik_DataTable_Renderer_Php extends Piwik_DataTable_Renderer
{
$flatArray = current($flatArray);
}
-// elseif(count($flatArray) == 0)
-// {
-// $flatArray = null;
-// }
}
// A normal DataTable needs to be handled specifically
else
{
- $array = $this->renderTable($dataTable);
+ $array = $this->renderTable($dataTable, $doRenderSubTablesIfAvailable);
$flatArray = $this->flattenArray($array);
}
@@ -164,8 +163,6 @@ class Piwik_DataTable_Renderer_Php extends Piwik_DataTable_Renderer
return $array;
}
- protected $serialize;
-
protected function renderTable($table, $doRenderSubTablesIfAvailable = false)
{
diff --git a/modules/DataTable/Renderer/Rss.php b/modules/DataTable/Renderer/Rss.php
index e7f5a27629..e09da181ab 100644
--- a/modules/DataTable/Renderer/Rss.php
+++ b/modules/DataTable/Renderer/Rss.php
@@ -10,7 +10,9 @@
*/
/**
- * RSS Feed
+ * RSS Feed.
+ * The RSS renderer can be used only on Piwik_DataTable_Array that are arrays of Piwik_DataTable.
+ * A RSS feed contains one dataTable per element in the Piwik_DataTable_Array.
*
* @package Piwik_DataTable
* @subpackage Piwik_DataTable_Renderer
diff --git a/modules/DataTable/Renderer/Xml.php b/modules/DataTable/Renderer/Xml.php
index 25368758a3..ec6f6cff06 100644
--- a/modules/DataTable/Renderer/Xml.php
+++ b/modules/DataTable/Renderer/Xml.php
@@ -11,7 +11,11 @@
require_once "DataTable/Renderer/Php.php";
/**
- * XML export
+ * XML export of a given DataTable.
+ * See the tests cases for more information about the XML format (/tests/modules/DataTable/Renderer.test.php)
+ * Or have a look at the API calls examples.
+ *
+ * Works with recursive DataTable (when a row can be associated with a subDataTable).
*
* @package Piwik_DataTable
* @subpackage Piwik_DataTable_Renderer
@@ -193,6 +197,12 @@ class Piwik_DataTable_Renderer_Xml extends Piwik_DataTable_Renderer
$out .= $prefixLine."\t<row>\n";
foreach($row as $name => $value)
{
+ // handle the recursive dataTable case by XML outputting the recursive table
+ if(is_array($value))
+ {
+ $value = "\n".$this->renderDataTable($value, $prefixLine."\t\t");
+ $value .= $prefixLine."\t\t";
+ }
$out .= $prefixLine."\t\t<$name>$value</$name>\n";
}
$out .= $prefixLine."\t</row>\n";