update Piwik to version 2.16 (fixes #91)

This commit is contained in:
oliver 2016-04-10 18:55:57 +02:00
commit d885a4baa9
5833 changed files with 418860 additions and 226988 deletions

View file

@ -1,6 +1,6 @@
<?php
/**
* Piwik - Open source web analytics
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
@ -9,8 +9,9 @@
namespace Piwik\Plugins\VisitsSummary;
use Piwik\Archive;
use Piwik\MetricsFormatter;
use Piwik\Metrics\Formatter;
use Piwik\Piwik;
use Piwik\Plugin\Report;
use Piwik\SettingsPiwik;
/**
@ -26,51 +27,18 @@ class API extends \Piwik\Plugin\API
Piwik::checkUserHasViewAccess($idSite);
$archive = Archive::build($idSite, $period, $date, $segment);
// array values are comma separated
$columns = Piwik::getArrayFromApiParameter($columns);
$tempColumns = array();
$requestedColumns = Piwik::getArrayFromApiParameter($columns);
$bounceRateRequested = $actionsPerVisitRequested = $averageVisitDurationRequested = false;
if (!empty($columns)) {
// make sure base metrics are there for processed metrics
if (false !== ($bounceRateRequested = array_search('bounce_rate', $columns))) {
if (!in_array('nb_visits', $columns)) $tempColumns[] = 'nb_visits';
if (!in_array('bounce_count', $columns)) $tempColumns[] = 'bounce_count';
unset($columns[$bounceRateRequested]);
}
if (false !== ($actionsPerVisitRequested = array_search('nb_actions_per_visit', $columns))) {
if (!in_array('nb_visits', $columns)) $tempColumns[] = 'nb_visits';
if (!in_array('nb_actions', $columns)) $tempColumns[] = 'nb_actions';
unset($columns[$actionsPerVisitRequested]);
}
if (false !== ($averageVisitDurationRequested = array_search('avg_time_on_site', $columns))) {
if (!in_array('nb_visits', $columns)) $tempColumns[] = 'nb_visits';
if (!in_array('sum_visit_length', $columns)) $tempColumns[] = 'sum_visit_length';
unset($columns[$averageVisitDurationRequested]);
}
$tempColumns = array_unique($tempColumns);
rsort($tempColumns);
$columns = array_merge($columns, $tempColumns);
} else {
$bounceRateRequested = $actionsPerVisitRequested = $averageVisitDurationRequested = true;
$columns = $this->getCoreColumns($period);
}
$report = Report::factory("VisitsSummary", "get");
$columns = $report->getMetricsRequiredForReport($this->getCoreColumns($period), $requestedColumns);
$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));
if (!empty($requestedColumns)) {
$columnsToShow = $requestedColumns ?: $report->getAllMetrics();
$dataTable->queueFilter('ColumnDelete', array($columnsToRemove = array(), $columnsToShow));
}
// remove temp metrics that were used to compute processed metrics
$dataTable->deleteColumns($tempColumns);
return $dataTable;
}
@ -95,7 +63,7 @@ class API extends \Piwik\Plugin\API
'max_actions'
);
if (SettingsPiwik::isUniqueVisitorsEnabled($period)) {
$columns = array_merge(array('nb_uniq_visitors'), $columns);
$columns = array_merge(array('nb_uniq_visitors', 'nb_users'), $columns);
}
$columns = array_values($columns);
return $columns;
@ -116,7 +84,16 @@ class API extends \Piwik\Plugin\API
public function getUniqueVisitors($idSite, $period, $date, $segment = false)
{
return $this->getNumeric($idSite, $period, $date, $segment, 'nb_uniq_visitors');
$metric = 'nb_uniq_visitors';
$this->checkUniqueIsEnabledOrFail($period, $metric);
return $this->getNumeric($idSite, $period, $date, $segment, $metric);
}
public function getUsers($idSite, $period, $date, $segment = false)
{
$metric = 'nb_users';
$this->checkUniqueIsEnabledOrFail($period, $metric);
return $this->getNumeric($idSite, $period, $date, $segment, $metric);
}
public function getActions($idSite, $period, $date, $segment = false)
@ -146,13 +123,30 @@ class API extends \Piwik\Plugin\API
public function getSumVisitsLengthPretty($idSite, $period, $date, $segment = false)
{
$formatter = new Formatter();
$table = $this->getSumVisitsLength($idSite, $period, $date, $segment);
if (is_object($table)) {
$table->filter('ColumnCallbackReplace',
array('sum_visit_length', '\Piwik\MetricsFormatter::getPrettyTimeFromSeconds'));
array('sum_visit_length', array($formatter, 'getPrettyTimeFromSeconds'), array(true)));
} else {
$table = MetricsFormatter::getPrettyTimeFromSeconds($table);
$table = $formatter->getPrettyTimeFromSeconds($table, true);
}
return $table;
}
/**
* @param $period
* @param $metric
* @throws \Exception
*/
private function checkUniqueIsEnabledOrFail($period, $metric)
{
if (!SettingsPiwik::isUniqueVisitorsEnabled($period)) {
throw new \Exception(
"The metric " . $metric . " is not enabled for the requested period. " .
"Please see this FAQ: http://piwik.org/faq/how-to/faq_113/"
);
}
}
}