diff options
author | diosmosis <benaka@piwik.pro> | 2014-11-08 02:46:58 +0300 |
---|---|---|
committer | diosmosis <benaka@piwik.pro> | 2014-11-08 03:00:47 +0300 |
commit | 68d77438edb1a492c9ef7943c16ac9874175b362 (patch) | |
tree | f5904b96eeefa21836b4033df180f5cdace544fb /plugins/VisitorInterest | |
parent | 949adebcc57524bd49c61eba6fda670c46654630 (diff) |
Converted most other processed metric calculation to use ProcessedMetric class.
Diffstat (limited to 'plugins/VisitorInterest')
-rw-r--r-- | plugins/VisitorInterest/API.php | 22 | ||||
-rw-r--r-- | plugins/VisitorInterest/Metrics/VisitsPercent.php | 67 | ||||
-rw-r--r-- | plugins/VisitorInterest/Reports/GetNumberOfVisitsByVisitCount.php | 5 |
3 files changed, 71 insertions, 23 deletions
diff --git a/plugins/VisitorInterest/API.php b/plugins/VisitorInterest/API.php index 44df111588..33f6d97b58 100644 --- a/plugins/VisitorInterest/API.php +++ b/plugins/VisitorInterest/API.php @@ -87,28 +87,6 @@ class API extends \Piwik\Plugin\API $dataTable->queueFilter('BeautifyRangeLabels', array( Piwik::translate('General_OneVisit'), Piwik::translate('General_NVisits'))); - // add visit percent column - self::addVisitsPercentColumn($dataTable); - return $dataTable; } - - /** - * Utility function that adds a visit percent column to a data table, - * regardless of whether the data table is an data table array or just - * a data table. - * - * @param DataTable $dataTable The data table to modify. - */ - private static function addVisitsPercentColumn($dataTable) - { - if ($dataTable instanceof DataTable\Map) { - foreach ($dataTable->getDataTables() as $table) { - self::addVisitsPercentColumn($table); - } - } else { - $totalVisits = array_sum($dataTable->getColumn(Metrics::INDEX_NB_VISITS)); - $dataTable->queueFilter('ColumnCallbackAddColumnPercentage', array('nb_visits_percentage', 'nb_visits', $totalVisits)); - } - } } diff --git a/plugins/VisitorInterest/Metrics/VisitsPercent.php b/plugins/VisitorInterest/Metrics/VisitsPercent.php new file mode 100644 index 0000000000..74afb172b9 --- /dev/null +++ b/plugins/VisitorInterest/Metrics/VisitsPercent.php @@ -0,0 +1,67 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +namespace Piwik\Plugins\VisitorInterest\Metrics; + +use Piwik\DataTable; +use Piwik\DataTable\Row; +use Piwik\Metrics; +use Piwik\Piwik; +use Piwik\Plugin\ProcessedMetric; +use Piwik\Plugin\Report; + +/** + * TODO + */ +class VisitsPercent extends ProcessedMetric +{ + private $cachedTotalVisits = null; + + public function getName() + { + return 'nb_visits_percentage'; + } + + public function getTranslatedName() + { + return Piwik::translate('General_ColumnPercentageVisits'); + } + + public function compute(Row $row) + { + $visits = $this->getColumn($row, 'nb_visits'); + + return Piwik::getQuotientSafe($visits, $this->cachedTotalVisits, $precision = 2); + } + + public function format($value) + { + return ($value * 100) . '%'; + } + + public function getDependenctMetrics() + { + return array('nb_visits'); + } + + public function beforeCompute(Report $report, DataTable $table) + { + $columnName = 'nb_visits'; + + $firstRow = $table->getFirstRow(); + if (!empty($firstRow) + && $firstRow->getColumn($columnName) === false + ) { + $columnName = Metrics::INDEX_NB_VISITS; + } + + $this->cachedTotalVisits = array_sum($table->getColumn($columnName)); + + return true; // always compute + } +}
\ No newline at end of file diff --git a/plugins/VisitorInterest/Reports/GetNumberOfVisitsByVisitCount.php b/plugins/VisitorInterest/Reports/GetNumberOfVisitsByVisitCount.php index 74cf975a4d..0c42eafab0 100644 --- a/plugins/VisitorInterest/Reports/GetNumberOfVisitsByVisitCount.php +++ b/plugins/VisitorInterest/Reports/GetNumberOfVisitsByVisitCount.php @@ -12,6 +12,7 @@ use Piwik\Metrics; use Piwik\Piwik; use Piwik\Plugin\ViewDataTable; use Piwik\Plugins\VisitorInterest\Columns\VisitsbyVisitNumber; +use Piwik\Plugins\VisitorInterest\Metrics\VisitsPercent; class GetNumberOfVisitsByVisitCount extends Base { @@ -23,7 +24,9 @@ class GetNumberOfVisitsByVisitCount extends Base $this->documentation = Piwik::translate('VisitorInterest_WidgetVisitsByNumDocumentation') . '<br />' . Piwik::translate('General_ChangeTagCloudView'); $this->metrics = array('nb_visits', 'nb_visits_percentage'); - $this->processedMetrics = false; + $this->processedMetrics = array( + new VisitsPercent() + ); $this->constantRowsCount = true; $this->order = 25; $this->widgetTitle = 'VisitorInterest_visitsByVisitCount'; |