getDataTableFromNumeric($columns); // Process ratio metrics from base metrics, when requested if ($bounceRateRequested !== false) { $dataTable->filter('ColumnCallbackAddColumnPercentage', array('bounce_rate', 'bounce_count', 'nb_visits', 0)); } if ($actionsPerVisitRequested !== false) { $dataTable->filter('ColumnCallbackAddColumnQuotient', array('nb_actions_per_visit', 'nb_actions', 'nb_visits', 1)); } if ($averageVisitDurationRequested !== false) { $dataTable->filter('ColumnCallbackAddColumnQuotient', array('avg_time_on_site', 'sum_visit_length', 'nb_visits', 0)); } // remove temp metrics that were used to compute processed metrics $dataTable->deleteColumns($tempColumns); return $dataTable; } protected function getNumeric($idSite, $period, $date, $segment, $toFetch) { Piwik::checkUserHasViewAccess($idSite); $archive = Piwik_Archive::build($idSite, $period, $date, $segment); $dataTable = $archive->getNumeric($toFetch); return $dataTable; } public function getVisits($idSite, $period, $date, $segment = false) { return $this->getNumeric($idSite, $period, $date, $segment, 'nb_visits'); } public function getUniqueVisitors($idSite, $period, $date, $segment = false) { return $this->getNumeric($idSite, $period, $date, $segment, 'nb_uniq_visitors'); } public function getActions($idSite, $period, $date, $segment = false) { return $this->getNumeric($idSite, $period, $date, $segment, 'nb_actions'); } public function getMaxActions($idSite, $period, $date, $segment = false) { return $this->getNumeric($idSite, $period, $date, $segment, 'max_actions'); } public function getBounceCount($idSite, $period, $date, $segment = false) { return $this->getNumeric($idSite, $period, $date, $segment, 'bounce_count'); } public function getVisitsConverted($idSite, $period, $date, $segment = false) { return $this->getNumeric($idSite, $period, $date, $segment, 'nb_visits_converted'); } public function getSumVisitsLength($idSite, $period, $date, $segment = false) { return $this->getNumeric($idSite, $period, $date, $segment, 'sum_visit_length'); } public function getSumVisitsLengthPretty($idSite, $period, $date, $segment = false) { $table = $this->getSumVisitsLength($idSite, $period, $date, $segment); if ($table instanceof Piwik_DataTable_Array) { $table->filter('ColumnCallbackReplace', array(0, array('Piwik', 'getPrettyTimeFromSeconds'))); } else { $table = Piwik::getPrettyTimeFromSeconds($table); } return $table; } }