update Piwik to version 2.16 (fixes #91)

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

View file

@ -0,0 +1,50 @@
<?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\Resolution;
use Piwik\Archive;
use Piwik\DataTable;
use Piwik\Metrics;
use Piwik\Piwik;
/**
* @see plugins/Resolution/functions.php
*/
require_once PIWIK_INCLUDE_PATH . '/plugins/Resolution/functions.php';
/**
* @method static \Piwik\Plugins\Resolution\API getInstance()
*/
class API extends \Piwik\Plugin\API
{
protected function getDataTable($name, $idSite, $period, $date, $segment)
{
Piwik::checkUserHasViewAccess($idSite);
$archive = Archive::build($idSite, $period, $date, $segment);
$dataTable = $archive->getDataTable($name);
$dataTable->queueFilter('ReplaceColumnNames');
$dataTable->queueFilter('ReplaceSummaryRowLabel');
return $dataTable;
}
public function getResolution($idSite, $period, $date, $segment = false)
{
$dataTable = $this->getDataTable(Archiver::RESOLUTION_RECORD_NAME, $idSite, $period, $date, $segment);
$dataTable->filter('AddSegmentValue');
return $dataTable;
}
public function getConfiguration($idSite, $period, $date, $segment = false)
{
$dataTable = $this->getDataTable(Archiver::CONFIGURATION_RECORD_NAME, $idSite, $period, $date, $segment);
// use GroupBy filter to avoid duplicate rows if old reports are displayed
$dataTable->queueFilter('GroupBy', array('label', __NAMESPACE__ . '\getConfigurationLabel'));
return $dataTable;
}
}

View file

@ -0,0 +1,76 @@
<?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\Resolution;
use Piwik\DataTable;
use Piwik\Metrics;
/**
* Archiver for Resolution Plugin
*
* @see PluginsArchiver
*/
class Archiver extends \Piwik\Plugin\Archiver
{
const RESOLUTION_RECORD_NAME = 'Resolution_resolution';
const CONFIGURATION_RECORD_NAME = 'Resolution_configuration';
const RESOLUTION_DIMENSION = "log_visit.config_resolution";
const CONFIGURATION_DIMENSION = "CONCAT(log_visit.config_os, ';', log_visit.config_browser_name, ';', log_visit.config_resolution)";
public function aggregateDayReport()
{
$this->aggregateByResolution();
$this->aggregateByConfiguration();
}
/**
* Period archiving: simply sums up daily archives
*/
public function aggregateMultipleReports()
{
$dataTableRecords = array(
self::RESOLUTION_RECORD_NAME,
self::CONFIGURATION_RECORD_NAME,
);
$columnsAggregationOperation = null;
$this->getProcessor()->aggregateDataTableRecords(
$dataTableRecords,
$this->maximumRows,
$maximumRowsInSubDataTable = null,
$columnToSortByBeforeTruncation = null,
$columnsAggregationOperation,
$columnsToRenameAfterAggregation = null,
$countRowsRecursive = array());
}
protected function aggregateByConfiguration()
{
$metrics = $this->getLogAggregator()->getMetricsFromVisitByDimension(self::CONFIGURATION_DIMENSION)->asDataTable();
$this->insertTable(self::CONFIGURATION_RECORD_NAME, $metrics);
}
protected function aggregateByResolution()
{
$table = $this->getLogAggregator()->getMetricsFromVisitByDimension(self::RESOLUTION_DIMENSION)->asDataTable();
$table->filter('ColumnCallbackDeleteRow', array('label', function ($value) {
return strlen($value) <= 5;
}));
$this->insertTable(self::RESOLUTION_RECORD_NAME, $table);
return $table;
}
protected function insertTable($recordName, DataTable $table)
{
$report = $table->getSerialized($this->maximumRows, null, Metrics::INDEX_NB_VISITS);
return $this->getProcessor()->insertBlobRecord($recordName, $report);
}
}

View file

@ -0,0 +1,20 @@
<?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\Resolution\Columns;
use Piwik\Columns\Dimension;
use Piwik\Piwik;
class Configuration extends Dimension
{
public function getName()
{
return Piwik::translate('Resolution_ColumnConfiguration');
}
}

View file

@ -0,0 +1,53 @@
<?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\Resolution\Columns;
use Piwik\Piwik;
use Piwik\Plugin\Dimension\VisitDimension;
use Piwik\Plugins\Resolution\Segment;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
class Resolution extends VisitDimension
{
protected $columnName = 'config_resolution';
protected $columnType = 'VARCHAR(9) NOT NULL';
protected function configureSegments()
{
$segment = new Segment();
$segment->setSegment('resolution');
$segment->setName('Resolution_ColumnResolution');
$segment->setAcceptedValues('1280x1024, 800x600, etc.');
$this->addSegment($segment);
}
/**
* @param Request $request
* @param Visitor $visitor
* @param Action|null $action
* @return mixed
*/
public function onNewVisit(Request $request, Visitor $visitor, $action)
{
$resolution = $request->getParam('res');
if (!empty($resolution)) {
return substr($resolution, 0, 9);
}
return $resolution;
}
public function getName()
{
return Piwik::translate('Resolution_ColumnResolution');
}
}

View file

@ -0,0 +1,32 @@
<?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\Resolution\Reports;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
abstract class Base extends \Piwik\Plugin\Report
{
protected function init()
{
$this->category = 'General_VisitorSettings';
}
protected function getBasicResolutionDisplayProperties(ViewDataTable $view)
{
$view->config->show_search = false;
$view->config->show_exclude_low_population = false;
$view->requestConfig->filter_limit = 5;
if ($view->isViewDataTableId(Graph::ID)) {
$view->config->max_graph_elements = 5;
}
}
}

View file

@ -0,0 +1,42 @@
<?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\Resolution\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\Resolution\Columns\Configuration;
class GetConfiguration extends Base
{
protected function init()
{
parent::init();
$this->dimension = new Configuration();
$this->name = Piwik::translate('Resolution_WidgetGlobalVisitors');
$this->documentation = Piwik::translate('Resolution_WidgetGlobalVisitorsDocumentation', '<br />');
$this->order = 7;
$this->widgetTitle = 'Resolution_WidgetGlobalVisitors';
}
public function configureView(ViewDataTable $view)
{
$this->getBasicResolutionDisplayProperties($view);
$view->config->addTranslation('label', $this->dimension->getName());
$view->requestConfig->filter_limit = 3;
}
public function getRelatedReports()
{
return array(
self::factory('Resolution', 'getResolution'),
);
}
}

View file

@ -0,0 +1,40 @@
<?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\Resolution\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\Resolution\Columns\Resolution;
class GetResolution extends Base
{
protected function init()
{
parent::init();
$this->dimension = new Resolution();
$this->name = Piwik::translate('Resolution_WidgetResolutions');
$this->documentation = ''; // TODO
$this->order = 0;
$this->widgetTitle = 'Resolution_WidgetResolutions';
}
public function configureView(ViewDataTable $view)
{
$this->getBasicResolutionDisplayProperties($view);
$view->config->addTranslation('label', $this->dimension->getName());
}
public function getRelatedReports()
{
return array(
self::factory('Resolution', 'getConfiguration'),
);
}
}

View file

@ -0,0 +1,43 @@
<?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\Resolution;
use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
/**
*
*/
class Resolution extends \Piwik\Plugin
{
/**
* @see Piwik\Plugin::registerEvents
*/
public function registerEvents()
{
return array(
'Live.getAllVisitorDetails' => 'extendVisitorDetails',
'Request.getRenamedModuleAndAction' => 'renameUserSettingsModuleAndAction',
);
}
public function extendVisitorDetails(&$visitor, $details)
{
$instance = new Visitor($details);
$visitor['resolution'] = $instance->getResolution();
}
public function renameUserSettingsModuleAndAction(&$module, &$action)
{
if ($module == 'UserSettings' && ($action == 'getResolution' || $action == 'getConfiguration')) {
$module = 'Resolution';
}
}
}

View file

@ -0,0 +1,21 @@
<?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\Resolution;
/**
* Resolution segment base class.
*
*/
class Segment extends \Piwik\Plugin\Segment
{
protected function init()
{
$this->setCategory('General_Visit');
}
}

View file

@ -0,0 +1,28 @@
<?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\Resolution;
class Visitor
{
private $details = array();
public function __construct($details)
{
$this->details = $details;
}
function getResolution()
{
if (!array_key_exists('config_resolution', $this->details)) {
return null;
}
return $this->details['config_resolution'];
}
}

View file

@ -0,0 +1,29 @@
<?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\Resolution;
use Piwik\Piwik;
function getConfigurationLabel($str)
{
if (strpos($str, ';') === false) {
return $str;
}
$values = explode(";", $str);
$os = \Piwik\Plugins\DevicesDetection\getOsFullName($values[0]);
$name = $values[1];
$browser = \Piwik\Plugins\DevicesDetection\getBrowserName($name);
if ($browser === false) {
$browser = Piwik::translate('General_Unknown');
}
$resolution = $values[2];
return $os . " / " . $browser . " / " . $resolution;
}

View file

@ -0,0 +1,10 @@
{
"Resolution": {
"ColumnConfiguration": "ውቅረት",
"ColumnResolution": "ጥራት",
"Configurations": "ውቅረቶች",
"Resolutions": "ጥራቶች",
"WidgetGlobalVisitors": "የሁሉም ጎብኚዎች ውቅረት",
"WidgetResolutions": "የማያ ጥራቶች"
}
}

View file

@ -0,0 +1,10 @@
{
"Resolution": {
"ColumnConfiguration": "الإعداد",
"ColumnResolution": "الكثافة النقطية",
"Configurations": "الإعدادات",
"Resolutions": "الكثافات النقطية",
"WidgetGlobalVisitors": "الإعدادات العامة للزوار",
"WidgetResolutions": "كثافات الشاشة النقطية"
}
}

View file

@ -0,0 +1,11 @@
{
"Resolution": {
"ColumnConfiguration": "Канфігурацыя",
"ColumnResolution": "Дазвол",
"Configurations": "Па канфігурацыі",
"Resolutions": "Па дазволе манітораў",
"WidgetGlobalVisitors": "Глабальная канфігурацыя",
"WidgetGlobalVisitorsDocumentation": "Гэтая справаздача паказвае найбольш распаўсюджаныя агульныя канфігурацыі, якія мелі вашы наведвальнікі. Канфігурацыя - гэта спалучэнне аперацыйнай сістэмы, тыпу браўзэра і дазволу экрана.",
"WidgetResolutions": "Дазвол манітораў"
}
}

View file

@ -0,0 +1,11 @@
{
"Resolution": {
"ColumnConfiguration": "Обобщена конфигурация",
"ColumnResolution": "Разделителна способност на екрана",
"Configurations": "Конфигурации",
"Resolutions": "Разделителна способност",
"WidgetGlobalVisitors": "Конфигурация на гло",
"WidgetGlobalVisitorsDocumentation": "Този отчет показва повечето общопознати цялостни конфигурации, които вашите посетители са имали. Конфигурация е комбинацията от операционна система, тип на браузера и резолюция на екрана.",
"WidgetResolutions": "Разделителна способност"
}
}

View file

@ -0,0 +1,11 @@
{
"Resolution": {
"ColumnConfiguration": "Configuració",
"ColumnResolution": "Resolució",
"Configurations": "Configuracions",
"Resolutions": "Resolucions",
"WidgetGlobalVisitors": "Configuracions globals dels visitants",
"WidgetGlobalVisitorsDocumentation": "Aquest informe mostra les configuracions més comuns que tenen els vostres visitants. Una configuració es la combinació de Sistema Operatiu, tipus de navegador i resolució de pantalla.",
"WidgetResolutions": "Resolucions"
}
}

View file

@ -0,0 +1,12 @@
{
"Resolution": {
"ColumnConfiguration": "Konfigurace",
"ColumnResolution": "Rozlišení",
"Configurations": "Nastavení",
"PluginDescription": "Hlásí rozšlišení obrazovky návštěvníků.",
"Resolutions": "Rozlišení",
"WidgetGlobalVisitors": "Hlavní nastavení návštěvníků",
"WidgetGlobalVisitorsDocumentation": "Toto hlášení zobrazuje nejčastější konfigurace, které vaši návštěvníci měli. Konfigurace je kombinace operačního systému, prohlížeče a rozlišení.",
"WidgetResolutions": "Rozlišení obrazovky"
}
}

View file

@ -0,0 +1,12 @@
{
"Resolution": {
"ColumnConfiguration": "Konfiguration",
"ColumnResolution": "Opløsning",
"Configurations": "Indstillinger",
"PluginDescription": "Rapporter de besøgendes skærmopløsninger.",
"Resolutions": "Opløsninger",
"WidgetGlobalVisitors": "Besøgendes konfiguration",
"WidgetGlobalVisitorsDocumentation": "Rapporten viser de mest almindelige samlede konfigurationer, som de besøgende havde. En konfiguration er en kombination af et styresystem, en browsertype og en skærmopløsning.",
"WidgetResolutions": "Skærmopløsninger"
}
}

View file

@ -0,0 +1,12 @@
{
"Resolution": {
"ColumnConfiguration": "Konfiguration",
"ColumnResolution": "Auflösung",
"Configurations": "Konfigurationen",
"PluginDescription": "Berichte über Bildschirmauflösungen Ihrer Besucher.",
"Resolutions": "Auflösungen",
"WidgetGlobalVisitors": "Globale Besucherkonfiguration",
"WidgetGlobalVisitorsDocumentation": "Dieser Bericht zeigt Ihnen die häufigsten Gesamtkonfigurationen der Besucher. Eine Konfiguration ist die Kombination aus Betriebssystem, Browsertyp und Bildschirmauflösung.",
"WidgetResolutions": "Bildschirmauflösungen"
}
}

View file

@ -0,0 +1,12 @@
{
"Resolution": {
"ColumnConfiguration": "Ρύθμιση",
"ColumnResolution": "Ανάλυση",
"Configurations": "Ρυθμίσεις",
"PluginDescription": "Αναφέρει τις αναλύσεις οθόνης των επισκεπτών σας.",
"Resolutions": "Αναλύσεις οθόνης",
"WidgetGlobalVisitors": "Γενικές ρυθμίσεις χρηστών",
"WidgetGlobalVisitorsDocumentation": "Αυτή η αναφορά δείχνει τις πιο συχνές καθολικές ρυθμίσεις που έχουν οι επισκέπτες σας. Μια ρύθμιση είναι ο συνδυασμός του λειτουργικού συστήματος, του τύπου φυλλομετρητή και της ανάλυσης οθόνης.",
"WidgetResolutions": "Αναλύσεις οθόνης"
}
}

Some files were not shown because too many files have changed in this diff Show more