forceTotalVisits = $totalVisits; } public function getName() { return 'nb_visits_percentage'; } public function getTranslatedName() { return Piwik::translate('General_ColumnPercentageVisits'); } public function compute(Row $row) { $visits = $this->getMetric($row, 'nb_visits'); return Piwik::getQuotientSafe($visits, $this->cachedTotalVisits, $precision = 2); } public function format($value, Formatter $formatter) { return $formatter->getPrettyPercentFromQuotient($value); } public function getDependentMetrics() { return array('nb_visits'); } public function beforeCompute($report, DataTable $table) { if ($this->forceTotalVisits === null) { $this->cachedTotalVisits = array_sum($this->getMetricValues($table, 'nb_visits')); } else { $this->cachedTotalVisits = $this->forceTotalVisits; } return true; // always compute } }