Skip to content

Commit

Permalink
Refs #4040, #4041, move all ViewDataTable properties to the viewPrope…
Browse files Browse the repository at this point in the history
…rties array and allow these properties to be specified through new display metadata. Converted the Actions, Goals, UserSettings and VisitTime controllers.

Notes:
  - Includes refactoring of ExcludeLowPopulation filter.
  • Loading branch information
Benaka Moorthi committed Jul 12, 2013
1 parent 98e6c9b commit 0105777
Show file tree
Hide file tree
Showing 20 changed files with 1,319 additions and 1,041 deletions.
21 changes: 21 additions & 0 deletions core/API/Request.php
Expand Up @@ -218,5 +218,26 @@ public static function getRequestParametersGET()
$GET = Piwik_Common::getArrayFromQueryString($_SERVER['QUERY_STRING']);
return $GET;
}

/**
* Returns the current URL without generic filter query parameters.
*
* @param array $params Query parameter values to override in the new URL.
* @return string
*/
public static function getCurrentUrlWithoutGenericFilters($params)
{
// unset all filter query params so the related report will show up in its default state,
// unless the filter param was in $queryParams
$genericFiltersInfo = Piwik_API_DataTableGenericFilter::getGenericFiltersInformation();
foreach ($genericFiltersInfo as $filter) {
foreach ($filter as $queryParamName => $queryParamInfo) {
if (!isset($params[$queryParamName])) {
$params[$queryParamName] = null;
}
}
}

return Piwik_Url::getCurrentQueryStringWithParametersModified($params);
}
}
40 changes: 19 additions & 21 deletions core/DataTable/Filter/ExcludeLowPopulation.php
Expand Up @@ -21,22 +21,29 @@
*/
class Piwik_DataTable_Filter_ExcludeLowPopulation extends Piwik_DataTable_Filter
{
static public $minimumValue;
const MINIMUM_SIGNIFICANT_PERCENTAGE_THRESHOLD = 0.02;

/**
* The minimum value to enforce in a datatable for a specified column. Rows found with
* a value less than this are removed.
*
* @var number
*/
private $minimumValue;

/**
* Constructor
*
* @param Piwik_DataTable $table
* @param string $columnToFilter column to filter
* @param number $minimumValue minimum value
* @param number|Closure $minimumValue minimum value
* @param bool $minimumPercentageThreshold
*/
public function __construct($table, $columnToFilter, $minimumValue, $minimumPercentageThreshold = false)
{
parent::__construct($table);
$this->columnToFilter = $columnToFilter;

if ($minimumValue == 0) {
if ($minimumPercentageThreshold === false) {
$minimumPercentageThreshold = self::MINIMUM_SIGNIFICANT_PERCENTAGE_THRESHOLD;
Expand All @@ -45,31 +52,22 @@ public function __construct($table, $columnToFilter, $minimumValue, $minimumPerc
$sumValues = array_sum($allValues);
$minimumValue = $sumValues * $minimumPercentageThreshold;
}
self::$minimumValue = $minimumValue;

$this->minimumValue = $minimumValue;
}

/**
* Executes filter and removes all rows below the defined minimum
*
* @param Piwik_DataTable $table
*/
function filter($table)
{
$table->filter('ColumnCallbackDeleteRow',
array($this->columnToFilter,
array("Piwik_DataTable_Filter_ExcludeLowPopulation", "excludeLowPopulation")
)
);
}

/**
* Checks whether the given value is below the defined minimum
*
* @param number $value value to check
* @return bool
*/
static public function excludeLowPopulation($value)
public function filter($table)
{
return $value >= self::$minimumValue;
$minimumValue = $this->minimumValue;
$isValueHighPopulation = function ($value) use ($minimumValue) {
return $value >= $minimumValue;
};

$table->filter('ColumnCallbackDeleteRow', array($this->columnToFilter, $isValueHighPopulation));
}
}

0 comments on commit 0105777

Please sign in to comment.