diff options
author | mattpiwik <matthieu.aubry@gmail.com> | 2008-05-18 21:22:35 +0400 |
---|---|---|
committer | mattpiwik <matthieu.aubry@gmail.com> | 2008-05-18 21:22:35 +0400 |
commit | a52df4278af546d2d7afc2acb7517086176aa810 (patch) | |
tree | 882d420a253e89c432470e90f5c2d0deb0811939 /modules/DataTable | |
parent | 4f3ee099d01b555c4667b88525edb4cad6e4db65 (diff) |
- remove useless __construct()
- renamed empty filter to Null filter
- columns are now renamed recursively, fixing bug in not valid XML code when the columns still had a numeric name
- added a new parameter in API for Referers module: expanded. If set to true, it will load the data recursively (eg. all keywords + the search engines for each keyword).
git-svn-id: http://dev.piwik.org/svn/trunk@482 59fd770c-687e-43c8-a1e3-f5a4ff64c105
Diffstat (limited to 'modules/DataTable')
-rw-r--r-- | modules/DataTable/Filter.php | 5 | ||||
-rw-r--r-- | modules/DataTable/Filter/Null.php (renamed from modules/DataTable/Filter/Empty.php) | 2 | ||||
-rw-r--r-- | modules/DataTable/Filter/ReplaceColumnNames.php | 37 | ||||
-rw-r--r-- | modules/DataTable/Manager.php | 2 | ||||
-rw-r--r-- | modules/DataTable/Renderer/Json.php | 2 | ||||
-rw-r--r-- | modules/DataTable/Renderer/Php.php | 3 | ||||
-rw-r--r-- | modules/DataTable/Renderer/Xml.php | 2 |
7 files changed, 36 insertions, 17 deletions
diff --git a/modules/DataTable/Filter.php b/modules/DataTable/Filter.php index 4bd93267c3..aae890c1ab 100644 --- a/modules/DataTable/Filter.php +++ b/modules/DataTable/Filter.php @@ -25,6 +25,9 @@ */ abstract class Piwik_DataTable_Filter { + /* + * @var Piwik_DataTable + */ protected $table; public function __construct($table) @@ -44,7 +47,7 @@ require_once "DataTable/Filter/ColumnCallbackAddDetail.php"; require_once "DataTable/Filter/ColumnCallbackReplace.php"; require_once "DataTable/Filter/DetailCallbackAddDetail.php"; require_once "DataTable/Filter/AddConstantDetail.php"; -require_once "DataTable/Filter/Empty.php"; +require_once "DataTable/Filter/Null.php"; require_once "DataTable/Filter/ExcludeLowPopulation.php"; require_once "DataTable/Filter/Limit.php"; require_once "DataTable/Filter/Pattern.php"; diff --git a/modules/DataTable/Filter/Empty.php b/modules/DataTable/Filter/Null.php index e15f74063f..680572a6df 100644 --- a/modules/DataTable/Filter/Empty.php +++ b/modules/DataTable/Filter/Null.php @@ -16,7 +16,7 @@ * @package Piwik_DataTable * @subpackage Piwik_DataTable_Filter */ -class Piwik_DataTable_Filter_Empty extends Piwik_DataTable_Filter +class Piwik_DataTable_Filter_Null extends Piwik_DataTable_Filter { public function __construct( $table ) diff --git a/modules/DataTable/Filter/ReplaceColumnNames.php b/modules/DataTable/Filter/ReplaceColumnNames.php index 4296128511..bbe3a06df3 100644 --- a/modules/DataTable/Filter/ReplaceColumnNames.php +++ b/modules/DataTable/Filter/ReplaceColumnNames.php @@ -37,6 +37,7 @@ class Piwik_DataTable_Filter_ReplaceColumnNames extends Piwik_DataTable_Filter Piwik_Archive::INDEX_SUM_VISIT_LENGTH => 'sum_visit_length', Piwik_Archive::INDEX_BOUNCE_COUNT => 'bounce_count', ); + /** * @param DataTable Table * @param array Mapping to apply. Must have the format @@ -57,22 +58,36 @@ class Piwik_DataTable_Filter_ReplaceColumnNames extends Piwik_DataTable_Filter protected function filter() { - foreach($this->table->getRows() as $key => $row) + $this->filterTable($this->table); + } + + protected function filterTable($table) + { + foreach($table->getRows() as $key => $row) { - $columns = $row->getColumns(); + $this->renameColumns($row); - foreach($this->mappingToApply as $oldName => $newName) + try { + $subTable = Piwik_DataTable_Manager::getInstance()->getTable( $row->getIdSubDataTable() ); + $this->filterTable($subTable); + } catch(Exception $e){ + // case idSubTable == null, or if the table is not loaded in memory + } + } + } + + protected function renameColumns($row) + { + $columns = $row->getColumns(); + foreach($this->mappingToApply as $oldName => $newName) + { + if(isset($columns[$oldName])) { - // if the old column is there - if(isset($columns[$oldName])) - { - $columns[$newName] = $columns[$oldName]; - unset($columns[$oldName]); - } + $columns[$newName] = $columns[$oldName]; + unset($columns[$oldName]); } - - $row->setColumns($columns); } + $row->setColumns($columns); } } diff --git a/modules/DataTable/Manager.php b/modules/DataTable/Manager.php index 743073ea80..cf5cc3345b 100644 --- a/modules/DataTable/Manager.php +++ b/modules/DataTable/Manager.php @@ -71,7 +71,7 @@ class Piwik_DataTable_Manager if(!isset($this->tables[$idTable])) { - throw new Exception("The request table $idTable couldn't be found."); + throw new Exception("The requested table id=$idTable couldn't be found in the DataTable Manager"); } return $this->tables[$idTable]; diff --git a/modules/DataTable/Renderer/Json.php b/modules/DataTable/Renderer/Json.php index 158fa8dae8..918de6dc9f 100644 --- a/modules/DataTable/Renderer/Json.php +++ b/modules/DataTable/Renderer/Json.php @@ -32,7 +32,7 @@ class Piwik_DataTable_Renderer_Json extends Piwik_DataTable_Renderer protected function renderTable($table) { $renderer = new Piwik_DataTable_Renderer_Php($table, $serialize = false); - $array = $renderer->flatRender(); + $array = $renderer->flatRender(null, (bool)Piwik_Common::getRequestVar('expanded', false)); if(!is_array($array)) { diff --git a/modules/DataTable/Renderer/Php.php b/modules/DataTable/Renderer/Php.php index 7d80ed23e4..5f34005441 100644 --- a/modules/DataTable/Renderer/Php.php +++ b/modules/DataTable/Renderer/Php.php @@ -74,7 +74,7 @@ class Piwik_DataTable_Renderer_Php extends Piwik_DataTable_Renderer { $serializeSave = $this->serialize; $this->serialize = false; - $flatArray[$keyName] = $this->flatRender($table); + $flatArray[$keyName] = $this->flatRender($table, $doRenderSubTablesIfAvailable); $this->serialize = $serializeSave; } } @@ -125,6 +125,7 @@ class Piwik_DataTable_Renderer_Php extends Piwik_DataTable_Renderer } return $flatArray; } + public function render( $dataTable = null) { if(is_null($dataTable)) diff --git a/modules/DataTable/Renderer/Xml.php b/modules/DataTable/Renderer/Xml.php index e9e5da4215..66bf13bd1d 100644 --- a/modules/DataTable/Renderer/Xml.php +++ b/modules/DataTable/Renderer/Xml.php @@ -36,7 +36,7 @@ class Piwik_DataTable_Renderer_Xml extends Piwik_DataTable_Renderer { $renderer = new Piwik_DataTable_Renderer_Php($table, $serialize = false); - $array = $renderer->flatRender(); + $array = $renderer->flatRender(null, (bool)Piwik_Common::getRequestVar('expanded', false)); // case DataTable_Array if($table instanceof Piwik_DataTable_Array) |