diff options
author | matt <matt@59fd770c-687e-43c8-a1e3-f5a4ff64c105> | 2008-03-23 04:09:59 +0300 |
---|---|---|
committer | matt <matt@59fd770c-687e-43c8-a1e3-f5a4ff64c105> | 2008-03-23 04:09:59 +0300 |
commit | 37d5deb35fe20a12756f02c439505dbaf5b4b792 (patch) | |
tree | a9fe7115469e4a71f4441914717b47224611a266 /modules/DataTable/Renderer | |
parent | b1b5086f1d3aeb4b1c4965608527935f97590441 (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.php | 28 | ||||
-rw-r--r-- | modules/DataTable/Renderer/Html.php | 1 | ||||
-rw-r--r-- | modules/DataTable/Renderer/Json.php | 3 | ||||
-rw-r--r-- | modules/DataTable/Renderer/Php.php | 19 | ||||
-rw-r--r-- | modules/DataTable/Renderer/Rss.php | 4 | ||||
-rw-r--r-- | modules/DataTable/Renderer/Xml.php | 12 |
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"; |