Skip to content
Extraits de code Groupes Projets
Valider fe4218b3 rédigé par robocoder's avatar robocoder
Parcourir les fichiers

fixes #2962 - add RangeCheck filter

git-svn-id: http://dev.piwik.org/svn/trunk@6258 59fd770c-687e-43c8-a1e3-f5a4ff64c105
parent c9765d75
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
<?php
/**
* Piwik - Open source web analytics
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
* @version $Id: RangeCheck.php 5791 2012-02-09 05:58:45Z matt $
*
* @category Piwik
* @package Piwik
*/
/**
* Check range
*
* @package Piwik
* @subpackage Piwik_DataTable
*/
class Piwik_DataTable_Filter_RangeCheck extends Piwik_DataTable_Filter
{
static public $minimumValue = 0.00;
static public $maximumValue = 100.0;
public function __construct( $table, $columnToFilter, $minimumValue, $maximum )
{
parent::__construct($table);
$this->columnToFilter = $columnToFilter;
self::$minimumValue = $minimumValue;
self::$maximumValue = $maximumValue;
}
public function filter($table)
{
foreach($table->getRows() as $row)
{
$value = $row->getColumn($this->columnToFilter);
if($value !== false)
{
if ($value < self::$minimumValue)
{
$row->setColumn($this->columnToFilter, self::$minimumValue);
}
elseif ($value > self::$maximumValue)
{
$row->setColumn($this->columnToFilter, self::$maximumValue);
}
}
}
}
}
<?php <?php
/** /**
* Piwik - Open source web analytics * Piwik - Open source web analytics
* *
* @link http://piwik.org * @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
* @version $Id$ * @version $Id$
* *
* @category Piwik_Plugins * @category Piwik_Plugins
* @package Piwik_UserSettings * @package Piwik_UserSettings
*/ */
...@@ -16,12 +16,12 @@ ...@@ -16,12 +16,12 @@
require_once PIWIK_INCLUDE_PATH . '/plugins/UserSettings/functions.php'; require_once PIWIK_INCLUDE_PATH . '/plugins/UserSettings/functions.php';
/** /**
* The UserSettings API lets you access reports about your Visitors technical settings: browsers, browser types (rendering engine), * The UserSettings API lets you access reports about your Visitors technical settings: browsers, browser types (rendering engine),
* operating systems, plugins supported in their browser, Screen resolution and Screen types (normal, widescreen, dual screen or mobile). * operating systems, plugins supported in their browser, Screen resolution and Screen types (normal, widescreen, dual screen or mobile).
* *
* @package Piwik_UserSettings * @package Piwik_UserSettings
*/ */
class Piwik_UserSettings_API class Piwik_UserSettings_API
{ {
static private $instance = null; static private $instance = null;
static public function getInstance() static public function getInstance()
...@@ -32,7 +32,7 @@ class Piwik_UserSettings_API ...@@ -32,7 +32,7 @@ class Piwik_UserSettings_API
} }
return self::$instance; return self::$instance;
} }
protected function getDataTable($name, $idSite, $period, $date, $segment) protected function getDataTable($name, $idSite, $period, $date, $segment)
{ {
Piwik::checkUserHasViewAccess( $idSite ); Piwik::checkUserHasViewAccess( $idSite );
...@@ -65,7 +65,7 @@ class Piwik_UserSettings_API ...@@ -65,7 +65,7 @@ class Piwik_UserSettings_API
$dataTable->queueFilter('ColumnCallbackReplace', array( 'label', 'Piwik_getOSLabel') ); $dataTable->queueFilter('ColumnCallbackReplace', array( 'label', 'Piwik_getOSLabel') );
return $dataTable; return $dataTable;
} }
public function getBrowser( $idSite, $period, $date, $segment = false ) public function getBrowser( $idSite, $period, $date, $segment = false )
{ {
$dataTable = $this->getDataTable('UserSettings_browser', $idSite, $period, $date, $segment); $dataTable = $this->getDataTable('UserSettings_browser', $idSite, $period, $date, $segment);
...@@ -74,7 +74,7 @@ class Piwik_UserSettings_API ...@@ -74,7 +74,7 @@ class Piwik_UserSettings_API
$dataTable->queueFilter('ColumnCallbackReplace', array('label', 'Piwik_getBrowserLabel')); $dataTable->queueFilter('ColumnCallbackReplace', array('label', 'Piwik_getBrowserLabel'));
return $dataTable; return $dataTable;
} }
public function getBrowserType( $idSite, $period, $date, $segment = false ) public function getBrowserType( $idSite, $period, $date, $segment = false )
{ {
$dataTable = $this->getDataTable('UserSettings_browserType', $idSite, $period, $date, $segment); $dataTable = $this->getDataTable('UserSettings_browserType', $idSite, $period, $date, $segment);
...@@ -82,7 +82,7 @@ class Piwik_UserSettings_API ...@@ -82,7 +82,7 @@ class Piwik_UserSettings_API
$dataTable->queueFilter('ColumnCallbackReplace', array('label', 'Piwik_getBrowserTypeLabel')); $dataTable->queueFilter('ColumnCallbackReplace', array('label', 'Piwik_getBrowserTypeLabel'));
return $dataTable; return $dataTable;
} }
public function getWideScreen( $idSite, $period, $date, $segment = false ) public function getWideScreen( $idSite, $period, $date, $segment = false )
{ {
$dataTable = $this->getDataTable('UserSettings_wideScreen', $idSite, $period, $date, $segment); $dataTable = $this->getDataTable('UserSettings_wideScreen', $idSite, $period, $date, $segment);
...@@ -90,7 +90,7 @@ class Piwik_UserSettings_API ...@@ -90,7 +90,7 @@ class Piwik_UserSettings_API
$dataTable->queueFilter('ColumnCallbackReplace', array('label', 'ucfirst')); $dataTable->queueFilter('ColumnCallbackReplace', array('label', 'ucfirst'));
return $dataTable; return $dataTable;
} }
public function getPlugin( $idSite, $period, $date, $segment = false ) public function getPlugin( $idSite, $period, $date, $segment = false )
{ {
// fetch all archive data required // fetch all archive data required
...@@ -109,17 +109,17 @@ class Piwik_UserSettings_API ...@@ -109,17 +109,17 @@ class Piwik_UserSettings_API
$browserTypesArray = Array($browserTypes); $browserTypesArray = Array($browserTypes);
$visitSumsArray = Array($visitsSums); $visitSumsArray = Array($visitsSums);
} }
// walk through the results and calculate the percentage // walk through the results and calculate the percentage
foreach($tableArray as $key => $table) { foreach($tableArray as $key => $table) {
// get according browserType table // get according browserType table
foreach($browserTypesArray AS $k => $browsers) { foreach($browserTypesArray AS $k => $browsers) {
if($k == $key) { if($k == $key) {
$browserType = $browsers; $browserType = $browsers;
} }
} }
// get according visitsSum // get according visitsSum
foreach($visitSumsArray AS $k => $visits) { foreach($visitSumsArray AS $k => $visits) {
if($k == $key) { if($k == $key) {
...@@ -130,26 +130,27 @@ class Piwik_UserSettings_API ...@@ -130,26 +130,27 @@ class Piwik_UserSettings_API
} }
} }
} }
$ieStats = $browserType->getRowFromLabel('ie');
$ieVisits = 0; // Calculate percentage, but ignore IE users because plugin detection doesn't work on IE
$ieVisits = 0;
$ieStats = $browserType->getRowFromLabel('ie');
if($ieStats !== false) if($ieStats !== false)
{ {
$ieVisits = $ieStats->getColumn(Piwik_Archive::INDEX_NB_VISITS); $ieVisits = $ieStats->getColumn(Piwik_Archive::INDEX_NB_VISITS);
} }
$visitsSum = $visitsSumTotal - $ieVisits;
$visitsSum = $visitsSumTotal - $ieVisits;
// Calculate percentage, but ignore IE users because plugin detection doesn't work on IE
// The filter must be applied now so that the new column can // The filter must be applied now so that the new column can
// be sorted by the generic filters (applied right after this function exits) // be sorted by the generic filters (applied right after this loop exits)
$table->filter('ColumnCallbackAddColumnPercentage', array('nb_visits_percentage', Piwik_Archive::INDEX_NB_VISITS, $visitsSum, 1)); $table->filter('ColumnCallbackAddColumnPercentage', array('nb_visits_percentage', Piwik_Archive::INDEX_NB_VISITS, $visitsSum, 1));
$table->filter('RangeCheck', array('nb_visits_percentage'));
} }
$dataTable->queueFilter('ColumnCallbackAddMetadata', array('label', 'logo', 'Piwik_getPluginsLogo')); $dataTable->queueFilter('ColumnCallbackAddMetadata', array('label', 'logo', 'Piwik_getPluginsLogo'));
$dataTable->queueFilter('ColumnCallbackReplace', array('label', 'ucfirst')); $dataTable->queueFilter('ColumnCallbackReplace', array('label', 'ucfirst'));
return $dataTable; return $dataTable;
} }
} }
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter