diff --git a/core/Archive/Single.php b/core/Archive/Single.php index ff7b411de8039468258727fbf903dd98f2c6130c..2b668bc90958c65a93a27f003067d2788907f8be 100644 --- a/core/Archive/Single.php +++ b/core/Archive/Single.php @@ -158,7 +158,8 @@ class Piwik_Archive_Single extends Piwik_Archive $archiveJustProcessed = false; $plugin = Piwik_ArchiveProcessing::getPluginBeingProcessed($this->getRequestedReport()); - if(!isset($this->alreadyChecked[$plugin])) + if(!isset($this->alreadyChecked[$plugin]) + ) { $this->isThereSomeVisits = false; $this->alreadyChecked[$plugin] = true; @@ -166,7 +167,6 @@ class Piwik_Archive_Single extends Piwik_Archive $dayString = $this->period->getPrettyString(); $periodString = $this->period->getLabel(); $logMessage = "Preparing archive: " . $periodString . "(" . $dayString . ")"; - // if the END of the period is BEFORE the website creation date // we already know there are no stats for this period // we add one day to make sure we don't miss the day of the website creation @@ -219,7 +219,6 @@ class Piwik_Archive_Single extends Piwik_Archive } $this->isThereSomeVisits = !$archivingDisabledArchiveNotProcessed && $this->archiveProcessing->isThereSomeVisits(); - $this->idArchive = $idArchive; } return $archiveJustProcessed; @@ -530,6 +529,7 @@ class Piwik_Archive_Single extends Piwik_Archive $this->preFetchBlob($name); $dataTableToLoad = $this->getDataTable($name, $idSubTable); $this->loadSubDataTables($name, $dataTableToLoad, $addMetadataSubtableId = true); + $dataTableToLoad->enableRecursiveFilters(); $this->freeBlob($name); return $dataTableToLoad; } diff --git a/core/ArchiveProcessing.php b/core/ArchiveProcessing.php index 30d8d6adf4adc2bbd66fb759effd5978fbaba922..c05a9907453bbd8531ad66a1ca267f8e4c023cf8 100644 --- a/core/ArchiveProcessing.php +++ b/core/ArchiveProcessing.php @@ -527,7 +527,6 @@ abstract class Piwik_ArchiveProcessing $flag = Piwik_ArchiveProcessing::DONE_OK_TEMPORARY; } $this->insertNumericRecord($done, $flag); - //Piwik_DataTable_Manager::getInstance()->deleteAll(); } /** diff --git a/core/ArchiveProcessing/Period.php b/core/ArchiveProcessing/Period.php index 508582ca738d1edf0a98882c1ddda8d9ed1aec0e..d6488c9d3ca384ffd498e48f7eea5120953d4230 100644 --- a/core/ArchiveProcessing/Period.php +++ b/core/ArchiveProcessing/Period.php @@ -86,6 +86,8 @@ class Piwik_ArchiveProcessing_Period extends Piwik_ArchiveProcessing { $results[$name] = 0; } + if($name == 'nb_uniq_visitors') continue; + $valueToSum = $archive->getNumeric($name); if($valueToSum !== false) @@ -303,24 +305,20 @@ class Piwik_ArchiveProcessing_Period extends Piwik_ArchiveProcessing $archive->setSite( $this->site ); $archive->setPeriod( $this->period ); $archive->setSegment( $this->getSegment() ); - $archive->setRequestedReport( 'VisitsSummary' ); + $archive->setRequestedReport( 'nb_visits' ); $nbVisits = $archive->getNumeric('nb_visits'); + $nbVisitsConverted = 0; if($nbVisits > 0) { $nbVisitsConverted = $archive->getNumeric('nb_visits_converted'); } } - $this->isThereSomeVisits = ($nbVisits > 0); - if($this->isThereSomeVisits === false) - { - return false; - } - $this->setNumberOfVisits($nbVisits); $this->setNumberOfVisitsConverted($nbVisitsConverted); - return true; + $this->isThereSomeVisits = ($nbVisits > 0); + return $this->isThereSomeVisits; } /** diff --git a/core/DataTable.php b/core/DataTable.php index 30542ec999ed25fd19bf6cc32d2d3b276666095e..e76d38720882f2fbb35839c6036e46650548ef79 100644 --- a/core/DataTable.php +++ b/core/DataTable.php @@ -205,6 +205,13 @@ class Piwik_DataTable */ protected $enableRecursiveSort = false; + /** + * When the table and all subtables are loaded, this flag will be set to true to ensure filters are applied to all subtables + * + * @var bool + */ + protected $enableRecursiveFilters = false; + /* * @var Piwik_DataTable_Row */ @@ -288,6 +295,11 @@ class Piwik_DataTable { $this->enableRecursiveSort = true; } + + public function enableRecursiveFilters() + { + $this->enableRecursiveFilters = true; + } /** * Returns the number of rows before we applied the limit filter @@ -331,6 +343,10 @@ class Piwik_DataTable $parameters = array_merge(array($this), $parameters); $filter = $reflectionObj->newInstanceArgs($parameters); + + $filter->enableRecursive( $this->enableRecursiveFilters ); + + $filter->filter($this); } /** @@ -816,7 +832,7 @@ class Piwik_DataTable */ public function __toString() { - $renderer = new Piwik_DataTable_Renderer_Console(); + $renderer = new Piwik_DataTable_Renderer_Html(); $renderer->setTable($this); return (string)$renderer; } diff --git a/core/DataTable/Filter.php b/core/DataTable/Filter.php index 19db5e93764477b8222a7ed6840c4fde5520540f..95beee04eac3814742e78cc0cef047e90dac426a 100644 --- a/core/DataTable/Filter.php +++ b/core/DataTable/Filter.php @@ -34,10 +34,21 @@ abstract class Piwik_DataTable_Filter } } - abstract protected function filter($table); + abstract public function filter($table); + + protected $enableRecursive = false; + + public function enableRecursive($bool) + { + $this->enableRecursive = (bool)$bool; + } public function filterSubTable(Piwik_DataTable_Row $row) { + if(!$this->enableRecursive) + { + return; + } try { $subTable = Piwik_DataTable_Manager::getInstance()->getTable( $row->getIdSubDataTable() ); $this->filter($subTable); diff --git a/core/DataTable/Filter/AddColumnsProcessedMetrics.php b/core/DataTable/Filter/AddColumnsProcessedMetrics.php index 7e5080715343bf161724ac4e835a3f25f5bd11ec..e8e8e6003700fa92c9cce8386e6621189a0b0d47 100644 --- a/core/DataTable/Filter/AddColumnsProcessedMetrics.php +++ b/core/DataTable/Filter/AddColumnsProcessedMetrics.php @@ -27,10 +27,9 @@ class Piwik_DataTable_Filter_AddColumnsProcessedMetrics extends Piwik_DataTable_ public function __construct( $table, $enable = true ) { parent::__construct($table); - $this->filter($table); } - protected function filter($table) + public function filter($table) { $rowsIdToDelete = array(); $bounceRateColumnWasSet = false; diff --git a/core/DataTable/Filter/AddColumnsProcessedMetricsGoal.php b/core/DataTable/Filter/AddColumnsProcessedMetricsGoal.php index 4fcc27231094c6004fba59ed8ebf4a82fb9ba27e..c7f027197d468a1a52a67374813c493b33ca150d 100644 --- a/core/DataTable/Filter/AddColumnsProcessedMetricsGoal.php +++ b/core/DataTable/Filter/AddColumnsProcessedMetricsGoal.php @@ -53,7 +53,7 @@ class Piwik_DataTable_Filter_AddColumnsProcessedMetricsGoal extends Piwik_DataTa parent::__construct($table); } - protected function filter($table) + public function filter($table) { // Add standard processed metrics parent::filter($table); diff --git a/core/DataTable/Filter/AddConstantMetadata.php b/core/DataTable/Filter/AddConstantMetadata.php index 0ea064e37f4776c7527e1cb135685e43cfb01fb8..3ef80dd40e30695c0210facf32c31504f80a5220 100644 --- a/core/DataTable/Filter/AddConstantMetadata.php +++ b/core/DataTable/Filter/AddConstantMetadata.php @@ -30,10 +30,9 @@ class Piwik_DataTable_Filter_AddConstantMetadata extends Piwik_DataTable_Filter parent::__construct($table); $this->name = $metadataName; $this->value = $metadataValue; - $this->filter($table); } - protected function filter($table) + public function filter($table) { foreach($table->getRows() as $row) { diff --git a/core/DataTable/Filter/AddSummaryRow.php b/core/DataTable/Filter/AddSummaryRow.php index 21698edbd8f797c6f0ffc1f443aa311b62992d77..0059428a831a9a0e4a762cb645ff76b90ea91670 100644 --- a/core/DataTable/Filter/AddSummaryRow.php +++ b/core/DataTable/Filter/AddSummaryRow.php @@ -37,15 +37,14 @@ class Piwik_DataTable_Filter_AddSummaryRow extends Piwik_DataTable_Filter $this->startRowToSummarize = $startRowToSummarize; $this->labelSummaryRow = $labelSummaryRow; $this->columnToSortByBeforeTruncating = $columnToSortByBeforeTruncating; - - if($table->getRowsCount() > $startRowToSummarize + 1) - { - $this->filter($table); - } } - protected function filter($table) + public function filter($table) { + if($table->getRowsCount() <= $this->startRowToSummarize + 1) + { + return; + } $table->filter('Sort', array( $this->columnToSortByBeforeTruncating, 'desc')); diff --git a/core/DataTable/Filter/ColumnCallbackAddColumnQuotient.php b/core/DataTable/Filter/ColumnCallbackAddColumnQuotient.php index 337f6e8aa1af2a110ca4cf97915312cf6422ba1f..3bfe42b87d5c3e08418c353f6b85e536775f2c39 100644 --- a/core/DataTable/Filter/ColumnCallbackAddColumnQuotient.php +++ b/core/DataTable/Filter/ColumnCallbackAddColumnQuotient.php @@ -48,10 +48,9 @@ class Piwik_DataTable_Filter_ColumnCallbackAddColumnQuotient extends Piwik_DataT $this->columnNameUsedAsDivisor = $divisorValueOrDivisorColumnName; } $this->quotientPrecision = $quotientPrecision; - $this->filter($table); } - protected function filter($table) + public function filter($table) { foreach($table->getRows() as $key => $row) { diff --git a/core/DataTable/Filter/ColumnCallbackAddMetadata.php b/core/DataTable/Filter/ColumnCallbackAddMetadata.php index b47da433ad3bea5488da82596a844833b053b1c9..cbb7a82cf9dd3527403de877237829cfa54336fd 100644 --- a/core/DataTable/Filter/ColumnCallbackAddMetadata.php +++ b/core/DataTable/Filter/ColumnCallbackAddMetadata.php @@ -34,10 +34,9 @@ class Piwik_DataTable_Filter_ColumnCallbackAddMetadata extends Piwik_DataTable_F $this->functionParameters = $functionParameters; $this->columnToRead = $columnToRead; $this->metadataToAdd = $metadataToAdd; - $this->filter($table); } - protected function filter($table) + public function filter($table) { foreach($table->getRows() as $key => $row) { diff --git a/core/DataTable/Filter/ColumnCallbackDeleteRow.php b/core/DataTable/Filter/ColumnCallbackDeleteRow.php index 4d47d6da89a12957e6543b802aa76d7b79a0eb26..7a12e6573acdf42b2487ea02eea9fcdcc076d084 100644 --- a/core/DataTable/Filter/ColumnCallbackDeleteRow.php +++ b/core/DataTable/Filter/ColumnCallbackDeleteRow.php @@ -26,10 +26,9 @@ class Piwik_DataTable_Filter_ColumnCallbackDeleteRow extends Piwik_DataTable_Fil parent::__construct($table); $this->function = $function; $this->columnToFilter = $columnToFilter; - $this->filter($table); } - protected function filter($table) + public function filter($table) { foreach($table->getRows() as $key => $row) { diff --git a/core/DataTable/Filter/ColumnCallbackReplace.php b/core/DataTable/Filter/ColumnCallbackReplace.php index 652e3bc9b582b60b4a5d3b11f7ddc9ba27287684..310cfdfde2642f7b5c39f7066fc3740544b7f879 100644 --- a/core/DataTable/Filter/ColumnCallbackReplace.php +++ b/core/DataTable/Filter/ColumnCallbackReplace.php @@ -28,10 +28,9 @@ class Piwik_DataTable_Filter_ColumnCallbackReplace extends Piwik_DataTable_Filte $this->functionToApply = $functionToApply; $this->functionParameters = $functionParameters; $this->columnToFilter = $columnToFilter; - $this->filter($table); } - protected function filter($table) + public function filter($table) { foreach($table->getRows() as $key => $row) { diff --git a/core/DataTable/Filter/ColumnDelete.php b/core/DataTable/Filter/ColumnDelete.php index b28b1ccdb1c8ac870ade2d3e13b72fc96603429e..de3d5e177df1e83c37567f895ad99ac2291d3078 100644 --- a/core/DataTable/Filter/ColumnDelete.php +++ b/core/DataTable/Filter/ColumnDelete.php @@ -25,10 +25,9 @@ class Piwik_DataTable_Filter_ColumnDelete extends Piwik_DataTable_Filter { parent::__construct($table); $this->columnToDelete = $columnToDelete; - $this->filter($table); } - protected function filter($table) + public function filter($table) { $table->deleteColumn($this->columnToDelete); } diff --git a/core/DataTable/Filter/ExcludeLowPopulation.php b/core/DataTable/Filter/ExcludeLowPopulation.php index aca427f3be0ce5d1a92ac66f3deb211df77e42d0..4d2ece04a164181cfe81a15ce78bedc7f329474a 100644 --- a/core/DataTable/Filter/ExcludeLowPopulation.php +++ b/core/DataTable/Filter/ExcludeLowPopulation.php @@ -40,7 +40,6 @@ class Piwik_DataTable_Filter_ExcludeLowPopulation extends Piwik_DataTable_Filter $minimumValue = $sumValues * $minimumPercentageThreshold; } self::$minimumValue = $minimumValue; - $this->filter($table); } function filter($table) diff --git a/core/DataTable/Filter/Limit.php b/core/DataTable/Filter/Limit.php index 80ae82b3587129449067273c9069a249694c34a4..baa98d634fa74fee5d44204d956f4dae9f5cae83 100644 --- a/core/DataTable/Filter/Limit.php +++ b/core/DataTable/Filter/Limit.php @@ -35,10 +35,9 @@ class Piwik_DataTable_Filter_Limit extends Piwik_DataTable_Filter $limit = -1; } $this->limit = $limit; - $this->filter($table); } - protected function filter($table) + public function filter($table) { $table = $table; $table->setRowsCountBeforeLimitFilter(); diff --git a/core/DataTable/Filter/MetadataCallbackAddMetadata.php b/core/DataTable/Filter/MetadataCallbackAddMetadata.php index 34a300b5a3161f04ac07c65629d182ce9ab6b4bd..c53a1b9d6c915738989c86adc0d092c485c75b9b 100644 --- a/core/DataTable/Filter/MetadataCallbackAddMetadata.php +++ b/core/DataTable/Filter/MetadataCallbackAddMetadata.php @@ -33,10 +33,9 @@ class Piwik_DataTable_Filter_MetadataCallbackAddMetadata extends Piwik_DataTable $this->functionToApply = $functionToApply; $this->metadataToRead = $metadataToRead; $this->metadataToAdd = $metadataToAdd; - $this->filter($table); } - protected function filter($table) + public function filter($table) { foreach($table->getRows() as $key => $row) { diff --git a/core/DataTable/Filter/Null.php b/core/DataTable/Filter/Null.php index 8d499c8e1275fceff9689ee4f2edec46ca3ed053..deb260c32b06e162db884dbffd2c4bb652a791ba 100644 --- a/core/DataTable/Filter/Null.php +++ b/core/DataTable/Filter/Null.php @@ -23,10 +23,9 @@ class Piwik_DataTable_Filter_Null extends Piwik_DataTable_Filter public function __construct( $table ) { parent::__construct($table); - $this->filter($table); } - protected function filter($table) + public function filter($table) { foreach($table->getRows() as $key => $row) { diff --git a/core/DataTable/Filter/Pattern.php b/core/DataTable/Filter/Pattern.php index 22702d83aedb2a52b07422928380c659460a5c14..ac59e70941e10bb573218f2a0c1bf0b75a919e16 100644 --- a/core/DataTable/Filter/Pattern.php +++ b/core/DataTable/Filter/Pattern.php @@ -32,7 +32,6 @@ class Piwik_DataTable_Filter_Pattern extends Piwik_DataTable_Filter $this->patternToSearchQuoted = self::getPatternQuoted($patternToSearch); $this->columnToFilter = $columnToFilter; $this->invertedMatch = $invertedMatch; - $this->filter($table); } static public function getPatternQuoted( $pattern ) @@ -48,7 +47,7 @@ class Piwik_DataTable_Filter_Pattern extends Piwik_DataTable_Filter return @preg_match($patternQuoted . "i", $string) == 1 ^ $invertedMatch; } - protected function filter($table) + public function filter($table) { foreach($table->getRows() as $key => $row) { diff --git a/core/DataTable/Filter/PatternRecursive.php b/core/DataTable/Filter/PatternRecursive.php index 542fe72eed14213860681d8e7792998ae55b6a77..af35c3edea03d9a069c55b6fb0e801eae10fcf9b 100644 --- a/core/DataTable/Filter/PatternRecursive.php +++ b/core/DataTable/Filter/PatternRecursive.php @@ -34,10 +34,9 @@ class Piwik_DataTable_Filter_PatternRecursive extends Piwik_DataTable_Filter $this->patternToSearchQuoted = Piwik_DataTable_Filter_Pattern::getPatternQuoted($patternToSearch); $this->patternToSearch = $patternToSearch;//preg_quote($patternToSearch); $this->columnToFilter = $columnToFilter; - $this->filter($table); } - protected function filter( $table ) + public function filter( $table ) { $rows = $table->getRows(); diff --git a/core/DataTable/Filter/ReplaceColumnNames.php b/core/DataTable/Filter/ReplaceColumnNames.php index 5213dba3f881544784d58f76262d096694084461..2d22de7046b69853296feae7631df556116dc347 100644 --- a/core/DataTable/Filter/ReplaceColumnNames.php +++ b/core/DataTable/Filter/ReplaceColumnNames.php @@ -36,29 +36,24 @@ class Piwik_DataTable_Filter_ReplaceColumnNames extends Piwik_DataTable_Filter * OLD_COLUMN_NAME2 => NEW_COLUMN NAME2, * ) */ - public function __construct( $table, $recursive = false, $mappingToApply = null ) + public function __construct( $table, $mappingToApply = null ) { parent::__construct($table); $this->mappingToApply = Piwik_Archive::$mappingFromIdToName; - $this->applyFilterRecursively = $recursive; if(!is_null($mappingToApply)) { $this->mappingToApply = $mappingToApply; } - $this->filter($table); } - protected function filter($table) + public function filter($table) { foreach($table->getRows() as $key => $row) { $oldColumns = $row->getColumns(); $newColumns = $this->getRenamedColumns($oldColumns); $row->setColumns( $newColumns ); - if($this->applyFilterRecursively) - { - $this->filterSubTable($row); - } + $this->filterSubTable($row); } } diff --git a/core/DataTable/Filter/ReplaceSummaryRowLabel.php b/core/DataTable/Filter/ReplaceSummaryRowLabel.php index 01539dfff800cab1c36cc220c725c5d827ca33e7..7d02f98bba638e4e2ea53bc63f4fa9f45dfb6836 100644 --- a/core/DataTable/Filter/ReplaceSummaryRowLabel.php +++ b/core/DataTable/Filter/ReplaceSummaryRowLabel.php @@ -25,10 +25,9 @@ class Piwik_DataTable_Filter_ReplaceSummaryRowLabel extends Piwik_DataTable_Filt $newLabel = Piwik_Translate('General_Others'); } $this->newLabel = $newLabel; - $this->filter($table); } - protected function filter($table) + public function filter($table) { $rows = $table->getRows(); foreach($rows as $row) diff --git a/core/DataTable/Filter/SafeDecodeLabel.php b/core/DataTable/Filter/SafeDecodeLabel.php index 00cfdf0336ae5e4ba881575ab8ad49c12ef645ab..128a14d894ecf6f860af9b54309398c431413e2c 100644 --- a/core/DataTable/Filter/SafeDecodeLabel.php +++ b/core/DataTable/Filter/SafeDecodeLabel.php @@ -18,15 +18,14 @@ class Piwik_DataTable_Filter_SafeDecodeLabel extends Piwik_DataTable_Filter { private $columnToDecode; private $outputHtml; - public function __construct( $table, $outputHTML = true ) + public function __construct( $table ) { parent::__construct($table); $this->columnToDecode = 'label'; - $this->outputHtml = (bool)$outputHTML; - $this->filter($table); + $this->outputHtml = true; } - protected function filter($table) + public function filter($table) { foreach($table->getRows() as $row) { diff --git a/core/DataTable/Filter/Sort.php b/core/DataTable/Filter/Sort.php index ac6da629907700a564628b581437263077297d79..03ce146dfc1ae7629187dcdab90e5e7a67601cd9 100644 --- a/core/DataTable/Filter/Sort.php +++ b/core/DataTable/Filter/Sort.php @@ -25,10 +25,6 @@ class Piwik_DataTable_Filter_Sort extends Piwik_DataTable_Filter public function __construct( $table, $columnToSort, $order = 'desc', $naturalSort = true, $recursiveSort = false ) { parent::__construct($table); - if(empty($columnToSort)) - { - return; - } if($recursiveSort) { $table->enableRecursiveSort(); @@ -36,7 +32,6 @@ class Piwik_DataTable_Filter_Sort extends Piwik_DataTable_Filter $this->columnToSort = $columnToSort; $this->naturalSort = $naturalSort; $this->setOrder($order); - $this->filter($table); } function setOrder($order) @@ -149,12 +144,16 @@ class Piwik_DataTable_Filter_Sort extends Piwik_DataTable_Filter return $this->columnToSort; } - protected function filter($table) + public function filter($table) { if($table instanceof Piwik_DataTable_Simple) { return; } + if(empty($this->columnToSort)) + { + return; + } $rows = $table->getRows(); if(count($rows) == 0) { diff --git a/core/DataTable/Filter/Truncate.php b/core/DataTable/Filter/Truncate.php index 5f2f0f66043be44385282f8007e2400f9d90a1b6..42a8a4e9d008f273c7307c96312f9e5edce1aeab 100644 --- a/core/DataTable/Filter/Truncate.php +++ b/core/DataTable/Filter/Truncate.php @@ -20,10 +20,9 @@ class Piwik_DataTable_Filter_Truncate extends Piwik_DataTable_Filter { parent::__construct($table); $this->truncateAfter = $truncateAfter; - $this->filter($table); } - protected function filter($table) + public function filter($table) { $table->filter('AddSummaryRow', array($this->truncateAfter)); $table->filter('ReplaceSummaryRowLabel'); diff --git a/core/DataTable/Row.php b/core/DataTable/Row.php index 45415aeccf5b7b92a194a4d8a95db1c3c9aa7f43..77bd749d79368659b2cdfc2a9f6215f19bae72f8 100644 --- a/core/DataTable/Row.php +++ b/core/DataTable/Row.php @@ -310,6 +310,7 @@ class Piwik_DataTable_Row { if(isset($this->c[self::COLUMNS][$name])) { + debug_print_backtrace(); throw new Exception("Column $name already in the array!"); } $this->c[self::COLUMNS][$name] = $value; diff --git a/plugins/Actions/API.php b/plugins/Actions/API.php index 72a61e823dcdffca9f8a4f4f27049569360b2166..7b9b169954633d9ae19a5012a0cb2986a0d23390 100644 --- a/plugins/Actions/API.php +++ b/plugins/Actions/API.php @@ -189,7 +189,7 @@ class Piwik_Actions_API { // Must be applied before Sort in this case, since the DataTable can contain both int and strings indexes // (in the transition period between pre 1.2 and post 1.2 datatable structure) - $dataTable->filter('ReplaceColumnNames', array($recursive = true)); + $dataTable->filter('ReplaceColumnNames'); $dataTable->filter('Sort', array('nb_visits', 'desc', $naturalSort = false, $expanded)); $dataTable->queueFilter('ReplaceSummaryRowLabel'); diff --git a/plugins/CustomVariables/API.php b/plugins/CustomVariables/API.php index 5fb3debcf9f4dc5e0a82411a50b4bad498502f86..5bb639eae754af72d446ec22685db7fcc5023c0c 100644 --- a/plugins/CustomVariables/API.php +++ b/plugins/CustomVariables/API.php @@ -31,7 +31,7 @@ class Piwik_CustomVariables_API { $dataTable = Piwik_Archive::getDataTableFromArchive('CustomVariables_valueByName', $idSite, $period, $date, $segment, $expanded, $idSubtable); $dataTable->filter('Sort', array(Piwik_Archive::INDEX_NB_VISITS, 'desc', $naturalSort = false, $expanded)); - $dataTable->queueFilter('ReplaceColumnNames', array($expanded)); + $dataTable->queueFilter('ReplaceColumnNames'); return $dataTable; } diff --git a/plugins/Referers/API.php b/plugins/Referers/API.php index 552bcc26744d349fb00ed32d5cb4a6fce96250dc..32e68548e5d164fc46c88b06db56bbe5b9f229b7 100644 --- a/plugins/Referers/API.php +++ b/plugins/Referers/API.php @@ -33,7 +33,7 @@ class Piwik_Referers_API { $dataTable = Piwik_Archive::getDataTableFromArchive($name, $idSite, $period, $date, $segment, $expanded, $idSubtable); $dataTable->filter('Sort', array(Piwik_Archive::INDEX_NB_VISITS, 'desc', $naturalSort = false, $expanded)); - $dataTable->queueFilter('ReplaceColumnNames', array($expanded)); + $dataTable->queueFilter('ReplaceColumnNames'); return $dataTable; } diff --git a/tests/core/DataTable/Filter/AddSummaryRow.test.php b/tests/core/DataTable/Filter/AddSummaryRow.test.php index 151fa9902e8390c55bc977fad8d1371ce132b934..b0589a7ab1e39ab82bc0829cf0f279b8b2632005 100644 --- a/tests/core/DataTable/Filter/AddSummaryRow.test.php +++ b/tests/core/DataTable/Filter/AddSummaryRow.test.php @@ -11,6 +11,7 @@ class Test_Piwik_DataTable_Filter_AddSummaryRow extends UnitTestCase { $table = $this->getDataTableCount5(); $filter = new Piwik_DataTable_Filter_AddSummaryRow($table, 5); + $filter->filter($table); $this->assertEqual($table->getRowsCount(), 5); $this->assertTrue(Piwik_DataTable_Row::isEqual($table->getLastRow(), $this->getRow4())); } @@ -19,6 +20,7 @@ class Test_Piwik_DataTable_Filter_AddSummaryRow extends UnitTestCase { $table = $this->getDataTableCount5(); $filter = new Piwik_DataTable_Filter_AddSummaryRow($table, 2); + $filter->filter($table); $this->assertEqual($table->getRowsCount(), 3); $expectedRow = new Piwik_DataTable_Row(array( Piwik_DataTable_Row::COLUMNS => array('label'=>Piwik_DataTable::LABEL_SUMMARY_ROW, 'nb' => 111))); $this->assertTrue(Piwik_DataTable_Row::isEqual($table->getLastRow(), $expectedRow)); @@ -30,6 +32,7 @@ class Test_Piwik_DataTable_Filter_AddSummaryRow extends UnitTestCase { $table = $this->getDataTableCount5(); $filter = new Piwik_DataTable_Filter_AddSummaryRow($table, 6); + $filter->filter($table); $this->assertEqual($table->getRowsCount(), 5); $this->assertTrue(Piwik_DataTable_Row::isEqual($table->getLastRow(), $this->getRow4())); } @@ -38,7 +41,9 @@ class Test_Piwik_DataTable_Filter_AddSummaryRow extends UnitTestCase { $table = $this->getDataTableCount5(); $filter1 = new Piwik_DataTable_Filter_AddSummaryRow($table, 3); + $filter1->filter($table); $filter2 = new Piwik_DataTable_Filter_AddSummaryRow($table, 2); + $filter2->filter($table); $this->assertEqual($table->getRowsCount(), 3); $expectedRow = new Piwik_DataTable_Row(array( Piwik_DataTable_Row::COLUMNS => array('label'=>Piwik_DataTable::LABEL_SUMMARY_ROW, 'nb' => 111))); $this->assertTrue(Piwik_DataTable_Row::isEqual($table->getLastRow(), $expectedRow)); @@ -49,10 +54,12 @@ class Test_Piwik_DataTable_Filter_AddSummaryRow extends UnitTestCase // row0, row1, row2, rowSummary1 $table1 = $this->getDataTableCount5(); $filter = new Piwik_DataTable_Filter_AddSummaryRow($table1, 3); + $filter->filter($table1); // row0, row1, rowSummary2 $table2 = $this->getDataTableCount5(); $filter = new Piwik_DataTable_Filter_AddSummaryRow($table2, 2); + $filter->filter($table2); // we expect row0+row0, row1+row1, row2, rowSummary1+rowSummary2 $expectedTable = new Piwik_DataTable; @@ -70,6 +77,7 @@ class Test_Piwik_DataTable_Filter_AddSummaryRow extends UnitTestCase // row0, row1, row2, rowSummary1 $table1 = $this->getDataTableCount5(); $filter = new Piwik_DataTable_Filter_AddSummaryRow($table1, 3); + $filter->filter($table1); // row0, row1, row2, row3, row4 $table2 = $this->getDataTableCount5(); @@ -98,6 +106,7 @@ class Test_Piwik_DataTable_Filter_AddSummaryRow extends UnitTestCase $table->addRow( $this->getRow0() ); $filter = new Piwik_DataTable_Filter_AddSummaryRow($table, 2, Piwik_DataTable::LABEL_SUMMARY_ROW, $columnToSortBy = 'nb'); + $filter->filter($table); $this->assertEqual($table->getRowsCount(), 3); $expectedRow = new Piwik_DataTable_Row(array( Piwik_DataTable_Row::COLUMNS => array('label'=>Piwik_DataTable::LABEL_SUMMARY_ROW, 'nb' => 111))); $this->assertTrue(Piwik_DataTable_Row::isEqual($table->getLastRow(), $expectedRow)); diff --git a/tests/core/DataTable/Filter/ExcludeLowPopulation.test.php b/tests/core/DataTable/Filter/ExcludeLowPopulation.test.php index 4ae7c0c2e29f319b2f7c6f6309cfd1f0c7664e36..7485d7659cf6d0bee151ed1d2fbde8761a8f8916 100644 --- a/tests/core/DataTable/Filter/ExcludeLowPopulation.test.php +++ b/tests/core/DataTable/Filter/ExcludeLowPopulation.test.php @@ -26,6 +26,7 @@ class Test_Piwik_DataTable_Filter_ExcludeLowPopulation extends UnitTestCase { $table = $this->getTestDataTable(); $filter = new Piwik_DataTable_Filter_ExcludeLowPopulation($table, 'count', 1.1); + $filter->filter($table); $this->assertEqual($table->getRowsCount(), 4); $this->assertEqual($table->getColumn('count'), array(1.5, 10, 90, 100)); } @@ -33,12 +34,14 @@ class Test_Piwik_DataTable_Filter_ExcludeLowPopulation extends UnitTestCase { $table = $this->getTestDataTable(); $filter = new Piwik_DataTable_Filter_ExcludeLowPopulation($table, 'count', 1); + $filter->filter($table); $this->assertEqual($table->getRowsCount(), 5); } public function test_filterEqualZero_doesFilter() { $table = $this->getTestDataTable(); $filter = new Piwik_DataTable_Filter_ExcludeLowPopulation($table, 'count', 0); + $filter->filter($table); $this->assertEqual($table->getRowsCount(), 3); $this->assertEqual($table->getColumn('count'), array(10, 90, 100)); } @@ -46,6 +49,7 @@ class Test_Piwik_DataTable_Filter_ExcludeLowPopulation extends UnitTestCase { $table = $this->getTestDataTable(); $filter = new Piwik_DataTable_Filter_ExcludeLowPopulation($table, 'count', 0, 0.4); //40% + $filter->filter($table); $this->assertEqual($table->getRowsCount(), 2); $this->assertEqual($table->getColumn('count'), array(90, 100)); } @@ -85,6 +89,7 @@ class Test_Piwik_DataTable_Filter_ExcludeLowPopulation extends UnitTestCase $expectedtable->addRowsFromArray( $rows ); $filter = new Piwik_DataTable_Filter_ExcludeLowPopulation($table, 'nb_visits', 1.4); + $filter->filter($table); $this->assertTrue(Piwik_DataTable::isEqual($table, $expectedtable)); } diff --git a/tests/core/DataTable/Filter/Limit.test.php b/tests/core/DataTable/Filter/Limit.test.php index 0ef577430d0938f777a51df95f02b0be8c866ed2..789eb5cdf992c47b91a3fb428a79bdc40f554518 100644 --- a/tests/core/DataTable/Filter/Limit.test.php +++ b/tests/core/DataTable/Filter/Limit.test.php @@ -38,6 +38,7 @@ class Test_Piwik_DataTable_Filter_Limit extends UnitTestCase $limit = 3; $table = $this->getDataTableCount10(); $filter = new Piwik_DataTable_Filter_Limit($table, $offset, $limit); + $filter->filter($table); $this->assertEqual($table->getRowsCount(), 3); $this->assertEqual($table->getFirstRow()->getColumn('idRow'), 2); $this->assertEqual($table->getLastRow()->getColumn('idRow'), 4); @@ -50,6 +51,7 @@ class Test_Piwik_DataTable_Filter_Limit extends UnitTestCase $limit = 7; $table = $this->getDataTableCount10(); $filter = new Piwik_DataTable_Filter_Limit($table, $offset, $limit); + $filter->filter($table); $this->assertEqual($table->getRowsCount(), 7); $this->assertEqual($table->getFirstRow()->getColumn('idRow'), 2); $this->assertEqual($table->getLastRow()->getColumn('idRow'), 8); @@ -63,6 +65,7 @@ class Test_Piwik_DataTable_Filter_Limit extends UnitTestCase $table = $this->getDataTableCount10(); $this->assertEqual($table->getRowsCountBeforeLimitFilter(), 10); $filter = new Piwik_DataTable_Filter_Limit($table, $offset, $limit); + $filter->filter($table); $this->assertEqual($table->getRowsCount(), 10); $this->assertEqual($table->getFirstRow()->getColumn('idRow'), 0); $this->assertEqual($table->getLastRow()->getColumn('idRow'), 9); @@ -76,6 +79,7 @@ class Test_Piwik_DataTable_Filter_Limit extends UnitTestCase $table = $this->getDataTableCount10(); $this->assertEqual($table->getRowsCountBeforeLimitFilter(), 10); $filter = new Piwik_DataTable_Filter_Limit($table, $offset, $limit); + $filter->filter($table); $this->assertEqual($table->getRowsCount(), 5); $this->assertEqual($table->getFirstRow()->getColumn('idRow'), 5); $this->assertEqual($table->getLastRow()->getColumn('idRow'), 9); @@ -87,6 +91,7 @@ class Test_Piwik_DataTable_Filter_Limit extends UnitTestCase $offset = 1; $table = $this->getDataTableCount10(); $filter = new Piwik_DataTable_Filter_Limit($table, $offset); + $filter->filter($table); $this->assertEqual($table->getRowsCount(), 9); $this->assertEqual($table->getFirstRow()->getColumn('idRow'), 1); $this->assertEqual($table->getLastRow()->getColumn('idRow'), 9); @@ -99,6 +104,7 @@ class Test_Piwik_DataTable_Filter_Limit extends UnitTestCase $limit = 1; $table = $this->getDataTableCount10(); $filter = new Piwik_DataTable_Filter_Limit($table, $offset, $limit); + $filter->filter($table); $this->assertEqual($table->getRowsCount(), 1); $this->assertEqual($table->getFirstRow()->getColumn('idRow'), 9); $this->assertEqual($table->getLastRow()->getColumn('idRow'), 9); @@ -111,6 +117,7 @@ class Test_Piwik_DataTable_Filter_Limit extends UnitTestCase $limit = 100; $table = $this->getDataTableCount10(); $filter = new Piwik_DataTable_Filter_Limit($table, $offset, $limit); + $filter->filter($table); $this->assertEqual($table->getRowsCount(), 1); $this->assertEqual($table->getFirstRow()->getColumn('idRow'), 9); $this->assertEqual($table->getLastRow()->getColumn('idRow'), 9); @@ -123,6 +130,7 @@ class Test_Piwik_DataTable_Filter_Limit extends UnitTestCase $limit = 3; $table = $this->getDataTableCount10(); $filter = new Piwik_DataTable_Filter_Limit($table, $offset, $limit); + $filter->filter($table); $this->assertEqual($table->getRowsCount(), 2); $this->assertEqual($table->getFirstRow()->getColumn('idRow'), 8); $this->assertEqual($table->getLastRow()->getColumn('idRow'), 9); @@ -135,6 +143,7 @@ class Test_Piwik_DataTable_Filter_Limit extends UnitTestCase $limit = 10; $table = $this->getDataTableCount10(); $filter = new Piwik_DataTable_Filter_Limit($table, $offset, $limit); + $filter->filter($table); $this->assertEqual($table->getRowsCount(), 0); $this->assertEqual($table->getRowsCountBeforeLimitFilter(), 10); } @@ -145,6 +154,7 @@ class Test_Piwik_DataTable_Filter_Limit extends UnitTestCase $limit = 0; $table = $this->getDataTableCount10(); $filter = new Piwik_DataTable_Filter_Limit($table, $offset, $limit); + $filter->filter($table); $this->assertEqual($table->getRowsCount(), 0); $this->assertEqual($table->getRowsCountBeforeLimitFilter(), 10); } @@ -174,6 +184,7 @@ class Test_Piwik_DataTable_Filter_Limit extends UnitTestCase $expectedtable->deleteRows(array(0,1,6)); $filter = new Piwik_DataTable_Filter_Limit($table, 2, 4); + $filter->filter($table); $colAfter=$colExpected=array(); foreach($table->getRows() as $row) $colAfter[] = $row->getColumn('label'); @@ -207,6 +218,7 @@ class Test_Piwik_DataTable_Filter_Limit extends UnitTestCase $expectedtable->deleteRows(array(0,1,3,4,5,6)); $filter = new Piwik_DataTable_Filter_Limit($table, 2, 1); + $filter->filter($table); $colAfter=$colExpected=array(); foreach($table->getRows() as $row) $colAfter[] = $row->getColumn('label'); @@ -238,6 +250,7 @@ class Test_Piwik_DataTable_Filter_Limit extends UnitTestCase $expectedtable = clone $table; $filter = new Piwik_DataTable_Filter_Limit($table, 0, 15); + $filter->filter($table); $colAfter=$colExpected=array(); foreach($table->getRows() as $row) $colAfter[] = $row->getColumn('label'); @@ -270,6 +283,7 @@ class Test_Piwik_DataTable_Filter_Limit extends UnitTestCase $expectedtable = new Piwik_DataTable; $filter = new Piwik_DataTable_Filter_Limit($table, 8, 15); + $filter->filter($table); $colAfter=$colExpected=array(); foreach($table->getRows() as $row) $colAfter[] = $row->getColumn('label'); diff --git a/tests/core/DataTable/Filter/Sort.test.php b/tests/core/DataTable/Filter/Sort.test.php index 8b889fd2f6ed7104833ada15ae81c139d6c5cd76..7f1c070bd77a985dc893dfa48be63e9c7ea83ab8 100644 --- a/tests/core/DataTable/Filter/Sort.test.php +++ b/tests/core/DataTable/Filter/Sort.test.php @@ -18,6 +18,7 @@ class Test_Piwik_DataTable_Filter_Sort extends UnitTestCase ) ); $filter = new Piwik_DataTable_Filter_Sort($table, 'count', 'desc'); + $filter->filter($table); $expectedOrder = array('ask', 'yahoo', 'nintendo'); $this->assertEqual($table->getColumn('label'), $expectedOrder); } @@ -33,6 +34,7 @@ class Test_Piwik_DataTable_Filter_Sort extends UnitTestCase ) ); $filter = new Piwik_DataTable_Filter_Sort($table, 'count', 'asc'); + $filter->filter($table); $expectedOrder = array('nintendo', 'yahoo', 'ask'); $this->assertEqual($table->getColumn('label'), $expectedOrder); } @@ -53,6 +55,7 @@ class Test_Piwik_DataTable_Filter_Sort extends UnitTestCase // echo $table; // echo "<hr>"; $filter = new Piwik_DataTable_Filter_Sort($table, 'count', 'asc'); + $filter->filter($table); // echo $table; // echo "<hr>"; $expectedOrder = array('nintendo', 'ask', 'amazing', 'nocolumnbis', 'nocolumn', 'summary'); @@ -71,6 +74,7 @@ class Test_Piwik_DataTable_Filter_Sort extends UnitTestCase ) ); $filter = new Piwik_DataTable_Filter_Sort($table, 'count', 'desc'); + $filter->filter($table); $expectedOrder = array('ask', 'nintendo', 'amazing', 'summary'); $this->assertEqual($table->getColumn('label'), $expectedOrder); } @@ -112,9 +116,11 @@ class Test_Piwik_DataTable_Filter_Sort extends UnitTestCase $expectedtableReverse->addRowsFromArray(array_reverse($rows)); $filter = new Piwik_DataTable_Filter_Sort($table, 'label', 'asc'); + $filter->filter($table); $this->assertTrue(Piwik_DataTable::isEqual($expectedtable,$table)); $filter = new Piwik_DataTable_Filter_Sort($table, 'label', 'desc'); + $filter->filter($table); $this->assertTrue(Piwik_DataTable::isEqual($table, $expectedtableReverse)); } @@ -156,9 +162,11 @@ class Test_Piwik_DataTable_Filter_Sort extends UnitTestCase $expectedtableReverse->addRowsFromArray(array_reverse($rows)); $filter = new Piwik_DataTable_Filter_Sort($table, 'nb_visits', 'asc'); + $filter->filter($table); $this->assertTrue(Piwik_DataTable::isEqual($table, $expectedtable)); $filter = new Piwik_DataTable_Filter_Sort($table, 'nb_visits', 'desc'); + $filter->filter($table); $this->assertTrue(Piwik_DataTable::isEqual($table, $expectedtableReverse)); } }