Skip to content
Extraits de code Groupes Projets
Valider ee357069 rédigé par Matthieu Aubry's avatar Matthieu Aubry
Parcourir les fichiers

Merge pull request #8339 from piwik/8324_filter_excludelowpop_value

Fix filter_excludelowpop
parents 8d5b65f1 47cf7827
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -277,6 +277,10 @@ class DocumentationGenerator ...@@ -277,6 +277,10 @@ class DocumentationGenerator
$aParameters['filter_limit'] = false; //@review without adding this, I can not set filter_limit in $otherRequestParameters system tests $aParameters['filter_limit'] = false; //@review without adding this, I can not set filter_limit in $otherRequestParameters system tests
$aParameters['filter_sort_column'] = false; //@review without adding this, I can not set filter_sort_column in $otherRequestParameters system tests $aParameters['filter_sort_column'] = false; //@review without adding this, I can not set filter_sort_column in $otherRequestParameters system tests
$aParameters['filter_sort_order'] = false; //@review without adding this, I can not set filter_sort_order in $otherRequestParameters system tests $aParameters['filter_sort_order'] = false; //@review without adding this, I can not set filter_sort_order in $otherRequestParameters system tests
$aParameters['filter_excludelowpop'] = false; //@review without adding this, I can not set filter_sort_order in $otherRequestParameters system tests
$aParameters['filter_excludelowpop_value'] = false; //@review without adding this, I can not set filter_sort_order in $otherRequestParameters system tests
$aParameters['filter_column_recursive'] = false; //@review without adding this, I can not set filter_sort_order in $otherRequestParameters system tests
$aParameters['filter_pattern_recursive'] = false; //@review without adding this, I can not set filter_sort_order in $otherRequestParameters system tests
$aParameters['filter_truncate'] = false; $aParameters['filter_truncate'] = false;
$aParameters['hideColumns'] = false; $aParameters['hideColumns'] = false;
$aParameters['showColumns'] = false; $aParameters['showColumns'] = false;
......
...@@ -10,6 +10,7 @@ namespace Piwik\DataTable\Filter; ...@@ -10,6 +10,7 @@ namespace Piwik\DataTable\Filter;
use Piwik\DataTable; use Piwik\DataTable;
use Piwik\DataTable\BaseFilter; use Piwik\DataTable\BaseFilter;
use Piwik\Metrics;
/** /**
* Deletes all rows for which a specific column has a value that is lower than * Deletes all rows for which a specific column has a value that is lower than
...@@ -60,7 +61,12 @@ class ExcludeLowPopulation extends BaseFilter ...@@ -60,7 +61,12 @@ class ExcludeLowPopulation extends BaseFilter
{ {
parent::__construct($table); parent::__construct($table);
$this->columnToFilter = $columnToFilter; $row = $table->getFirstRow();
if ($row === false) {
return;
}
$this->columnToFilter = $this->selectColumnToExclude($columnToFilter, $row);
if ($minimumValue == 0) { if ($minimumValue == 0) {
if ($minimumPercentageThreshold === false) { if ($minimumPercentageThreshold === false) {
...@@ -88,4 +94,29 @@ class ExcludeLowPopulation extends BaseFilter ...@@ -88,4 +94,29 @@ class ExcludeLowPopulation extends BaseFilter
$table->filter('ColumnCallbackDeleteRow', array($this->columnToFilter, $isValueLowPopulation)); $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;
}
} }
...@@ -13,6 +13,10 @@ define('PIWIK_ENABLE_SESSION_START', false); ...@@ -13,6 +13,10 @@ define('PIWIK_ENABLE_SESSION_START', false);
require_once PIWIK_INCLUDE_PATH . "/index.php"; require_once PIWIK_INCLUDE_PATH . "/index.php";
require_once PIWIK_INCLUDE_PATH . "/core/API/Request.php"; require_once PIWIK_INCLUDE_PATH . "/core/API/Request.php";
$environment = new \Piwik\Application\Environment(null);
$environment->init();
FrontController::getInstance()->init(); FrontController::getInstance()->init();
// This inits the API Request with the specified parameters // This inits the API Request with the specified parameters
......
...@@ -151,6 +151,17 @@ class ManyVisitorsOneWebsiteTest extends SystemTestCase ...@@ -151,6 +151,17 @@ class ManyVisitorsOneWebsiteTest extends SystemTestCase
'otherRequestParameters' => array('filter_offset' => '4', 'filter_limit' => 3) 'otherRequestParameters' => array('filter_offset' => '4', 'filter_limit' => 3)
)); ));
// #8324
// testing filter_excludelowpop and filter_excludelowpop_value
$apiToTest[] = array('UserCountry.getCountry', array(
'idSite' => $idSite,
'date' => $dateString,
'periods' => 'month',
'testSuffix' => '_getCountry_with_filter_excludelowpop',
'otherRequestParameters' => array('filter_excludelowpop' => 'nb_visits', 'filter_excludelowpop_value' => 5)
));
} }
// this also fails on all PHP versions, it seems randomly. // this also fails on all PHP versions, it seems randomly.
......
<?xml version="1.0" encoding="utf-8" ?>
<result>
<row>
<label>United Kingdom</label>
<nb_visits>10</nb_visits>
<nb_actions>18</nb_actions>
<max_actions>3</max_actions>
<sum_visit_length>6305</sum_visit_length>
<bounce_count>5</bounce_count>
<goals>
<row idgoal='1'>
<nb_conversions>10</nb_conversions>
<nb_visits_converted>10</nb_visits_converted>
<revenue>50</revenue>
</row>
<row idgoal='2'>
<nb_conversions>5</nb_conversions>
<nb_visits_converted>5</nb_visits_converted>
<revenue>25</revenue>
</row>
</goals>
<nb_conversions>15</nb_conversions>
<revenue>75</revenue>
<sum_daily_nb_uniq_visitors>5</sum_daily_nb_uniq_visitors>
<sum_daily_nb_users>0</sum_daily_nb_users>
<code>gb</code>
<logo>plugins/UserCountry/images/flags/gb.png</logo>
<segment>countryCode==gb</segment>
<logoWidth>16</logoWidth>
<logoHeight>11</logoHeight>
</row>
<row>
<label>Canada</label>
<nb_visits>6</nb_visits>
<nb_actions>10</nb_actions>
<max_actions>3</max_actions>
<sum_visit_length>3783</sum_visit_length>
<bounce_count>3</bounce_count>
<goals>
<row idgoal='1'>
<nb_conversions>6</nb_conversions>
<nb_visits_converted>6</nb_visits_converted>
<revenue>30</revenue>
</row>
<row idgoal='2'>
<nb_conversions>3</nb_conversions>
<nb_visits_converted>3</nb_visits_converted>
<revenue>15</revenue>
</row>
</goals>
<nb_conversions>9</nb_conversions>
<revenue>45</revenue>
<sum_daily_nb_uniq_visitors>3</sum_daily_nb_uniq_visitors>
<sum_daily_nb_users>0</sum_daily_nb_users>
<code>ca</code>
<logo>plugins/UserCountry/images/flags/ca.png</logo>
<segment>countryCode==ca</segment>
<logoWidth>16</logoWidth>
<logoHeight>11</logoHeight>
</row>
</result>
\ No newline at end of file
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter