getCoreColumns($period); } $dataTable = $archive->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; } /** * @ignore */ public function getColumns($period) { $columns = $this->getCoreColumns($period); $columns = array_merge($columns, array('bounce_rate', 'nb_actions_per_visit', 'avg_time_on_site')); return $columns; } protected function getCoreColumns($period) { $columns = array( 'nb_visits', 'nb_actions', 'nb_visits_converted', 'bounce_count', 'sum_visit_length', 'max_actions' ); if (Piwik::isUniqueVisitorsEnabled($period)) { $columns = array_merge(array('nb_uniq_visitors'), $columns); } $columns = array_values($columns); return $columns; } protected function getNumeric($idSite, $period, $date, $segment, $toFetch) { Piwik::checkUserHasViewAccess($idSite); $archive = Archive::build($idSite, $period, $date, $segment); $dataTable = $archive->getDataTableFromNumeric($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 (is_object($table)) { $table->filter('ColumnCallbackReplace', array('sum_visit_length', array('Piwik', 'getPrettyTimeFromSeconds'))); } else { $table = Piwik::getPrettyTimeFromSeconds($table); } return $table; } }