Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordiosmosis <benaka@piwik.pro>2014-11-08 02:46:58 +0300
committerdiosmosis <benaka@piwik.pro>2014-11-08 03:00:47 +0300
commit68d77438edb1a492c9ef7943c16ac9874175b362 (patch)
treef5904b96eeefa21836b4033df180f5cdace544fb /plugins/VisitorInterest
parent949adebcc57524bd49c61eba6fda670c46654630 (diff)
Converted most other processed metric calculation to use ProcessedMetric class.
Diffstat (limited to 'plugins/VisitorInterest')
-rw-r--r--plugins/VisitorInterest/API.php22
-rw-r--r--plugins/VisitorInterest/Metrics/VisitsPercent.php67
-rw-r--r--plugins/VisitorInterest/Reports/GetNumberOfVisitsByVisitCount.php5
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';