From e37db246baa341063d4e2810150bacc63de24b5e Mon Sep 17 00:00:00 2001 From: mattab <matthieu.aubry@gmail.com> Date: Sun, 12 Jul 2015 23:16:17 +0200 Subject: [PATCH] filter_excludelowpop=nb_visits should work even before 'ReplaceColumnNames' filter has been called --- .../DataTable/Filter/ExcludeLowPopulation.php | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/core/DataTable/Filter/ExcludeLowPopulation.php b/core/DataTable/Filter/ExcludeLowPopulation.php index 27d19fa86b..9e16cc0ef1 100644 --- a/core/DataTable/Filter/ExcludeLowPopulation.php +++ b/core/DataTable/Filter/ExcludeLowPopulation.php @@ -10,6 +10,7 @@ namespace Piwik\DataTable\Filter; use Piwik\DataTable; use Piwik\DataTable\BaseFilter; +use Piwik\Metrics; /** * Deletes all rows for which a specific column has a value that is lower than @@ -60,7 +61,12 @@ class ExcludeLowPopulation extends BaseFilter { parent::__construct($table); - $this->columnToFilter = $columnToFilter; + $row = $table->getFirstRow(); + if ($row === false) { + return; + } + + $this->columnToFilter = $this->selectColumnToExclude($columnToFilter, $row); if ($minimumValue == 0) { if ($minimumPercentageThreshold === false) { @@ -88,4 +94,29 @@ class ExcludeLowPopulation extends BaseFilter $table->filter('ColumnCallbackDeleteRow', array($this->columnToFilter, $isValueLowPopulation)); } + + /** + * Sets the column to be used for Excluding low population + * + * @param DataTable\Row $row + * @return int + */ + private function selectColumnToExclude($columnToFilter, $row) + { + if ($row->hasColumn($columnToFilter)) { + return $columnToFilter; + } + + // filter_excludelowpop=nb_visits but the column name is still Metrics::INDEX_NB_VISITS in the table + $columnIdToName = Metrics::getMappingFromNameToId(); + if (isset($columnIdToName[$columnToFilter])) { + $column = $columnIdToName[$columnToFilter]; + + if ($row->hasColumn($column)) { + return $column; + } + } + + return $columnToFilter; + } } -- GitLab