update Piwik to version 2.16 (fixes #91)

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

View file

@ -0,0 +1,99 @@
<?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\DevicePlugins;
use Piwik\Archive;
use Piwik\DataTable;
use Piwik\Metrics;
use Piwik\Piwik;
use Piwik\Plugins\DevicesDetection\Archiver AS DDArchiver;
use Piwik\Plugins\CoreHome\Columns\Metrics\VisitsPercent;
/**
* @see plugins/DevicePlugins/functions.php
*/
require_once PIWIK_INCLUDE_PATH . '/plugins/DevicePlugins/functions.php';
/**
* The DevicePlugins API lets you access reports about device plugins such as browser plugins.
*
* @method static \Piwik\Plugins\DevicePlugins\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 getPlugin($idSite, $period, $date, $segment = false)
{
// fetch all archive data required
$dataTable = $this->getDataTable(Archiver::PLUGIN_RECORD_NAME, $idSite, $period, $date, $segment);
$browserVersions = $this->getDataTable(DDArchiver::BROWSER_VERSION_RECORD_NAME, $idSite, $period, $date, $segment);
$archive = Archive::build($idSite, $period, $date, $segment);
$visitsSums = $archive->getDataTableFromNumeric('nb_visits');
// check whether given tables are arrays
if ($dataTable instanceof DataTable\Map) {
$dataTableMap = $dataTable->getDataTables();
$browserVersionsArray = $browserVersions->getDataTables();
$visitSumsArray = $visitsSums->getDataTables();
} else {
$dataTableMap = array($dataTable);
$browserVersionsArray = array($browserVersions);
$visitSumsArray = array($visitsSums);
}
// walk through the results and calculate the percentage
foreach ($dataTableMap as $key => $table) {
// Calculate percentage, but ignore IE users because plugin detection doesn't work on IE
$ieVisits = 0;
$browserVersionsToExclude = array(
'IE;10.0',
'IE;9.0',
'IE;8.0',
'IE;7.0',
'IE;6.0',
);
foreach ($browserVersionsToExclude as $browserVersionToExclude) {
$ieStats = $browserVersionsArray[$key]->getRowFromLabel($browserVersionToExclude);
if ($ieStats !== false) {
$ieVisits += $ieStats->getColumn(Metrics::INDEX_NB_VISITS);
}
}
// get according visitsSum
$visits = $visitSumsArray[$key];
if ($visits->getRowsCount() == 0) {
$visitsSumTotal = 0;
} else {
$visitsSumTotal = (float) $visits->getFirstRow()->getColumn('nb_visits');
}
$visitsSum = $visitsSumTotal - $ieVisits;
$extraProcessedMetrics = $table->getMetadata(DataTable::EXTRA_PROCESSED_METRICS_METADATA_NAME);
$extraProcessedMetrics[] = new VisitsPercent($visitsSum);
$table->setMetadata(DataTable::EXTRA_PROCESSED_METRICS_METADATA_NAME, $extraProcessedMetrics);
}
$dataTable->queueFilter('ColumnCallbackAddMetadata', array('label', 'logo', __NAMESPACE__ . '\getPluginsLogo'));
$dataTable->queueFilter('ColumnCallbackReplace', array('label', 'ucfirst'));
$dataTable->queueFilter('RangeCheck', array('nb_visits_percentage', 0, 1));
return $dataTable;
}
}

View file

@ -0,0 +1,84 @@
<?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\DevicePlugins;
use Piwik\DataAccess\LogAggregator;
use Piwik\DataTable;
use Piwik\Metrics;
require_once PIWIK_INCLUDE_PATH . '/plugins/DevicePlugins/functions.php';
/**
* Archiver for DevicePlugins Plugin
*
* @see PluginsArchiver
*/
class Archiver extends \Piwik\Plugin\Archiver
{
const PLUGIN_RECORD_NAME = 'DevicePlugins_plugin';
/**
* Daily archive of DevicePlugins report. Processes reports for Visits by plugins.
*/
public function aggregateDayReport()
{
$this->aggregateByPlugin();
}
/**
* Period archiving: simply sums up daily archives
*/
public function aggregateMultipleReports()
{
$dataTableRecords = array(
self::PLUGIN_RECORD_NAME,
);
$columnsAggregationOperation = null;
$this->getProcessor()->aggregateDataTableRecords(
$dataTableRecords,
$this->maximumRows,
$maximumRowsInSubDataTable = null,
$columnToSortByBeforeTruncation = null,
$columnsAggregationOperation,
$columnsToRenameAfterAggregation = null,
$countRowsRecursive = array()
);
}
protected function aggregateByPlugin()
{
$selects = array(
"sum(case log_visit.config_pdf when 1 then 1 else 0 end) as pdf",
"sum(case log_visit.config_flash when 1 then 1 else 0 end) as flash",
"sum(case log_visit.config_java when 1 then 1 else 0 end) as java",
"sum(case log_visit.config_director when 1 then 1 else 0 end) as director",
"sum(case log_visit.config_quicktime when 1 then 1 else 0 end) as quicktime",
"sum(case log_visit.config_realplayer when 1 then 1 else 0 end) as realplayer",
"sum(case log_visit.config_windowsmedia when 1 then 1 else 0 end) as windowsmedia",
"sum(case log_visit.config_gears when 1 then 1 else 0 end) as gears",
"sum(case log_visit.config_silverlight when 1 then 1 else 0 end) as silverlight",
"sum(case log_visit.config_cookie when 1 then 1 else 0 end) as cookie"
);
$query = $this->getLogAggregator()->queryVisitsByDimension(array(), false, $selects, $metrics = array());
$data = $query->fetch();
$cleanRow = LogAggregator::makeArrayOneColumn($data, Metrics::INDEX_NB_VISITS);
$table = DataTable::makeFromIndexedArray($cleanRow);
$this->insertTable(self::PLUGIN_RECORD_NAME, $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\DevicePlugins\Columns;
use Piwik\Columns\Dimension;
use Piwik\Piwik;
class Plugin extends Dimension
{
public function getName()
{
return Piwik::translate('General_Plugin');
}
}

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\DevicePlugins\Columns;
use Piwik\Common;
use Piwik\Plugin\Dimension\VisitDimension;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
use Piwik\Tracker\Action;
class PluginCookie extends VisitDimension
{
protected $columnName = 'config_cookie';
protected $columnType = 'TINYINT(1) NOT NULL';
/**
* @param Request $request
* @param Visitor $visitor
* @param Action|null $action
* @return mixed
*/
public function onNewVisit(Request $request, Visitor $visitor, $action)
{
return Common::getRequestVar('cookie', 0, 'int', $request->getParams());
}
}

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\DevicePlugins\Columns;
use Piwik\Common;
use Piwik\Plugin\Dimension\VisitDimension;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
use Piwik\Tracker\Action;
class PluginDirector extends VisitDimension
{
protected $columnName = 'config_director';
protected $columnType = 'TINYINT(1) NOT NULL';
/**
* @param Request $request
* @param Visitor $visitor
* @param Action|null $action
* @return mixed
*/
public function onNewVisit(Request $request, Visitor $visitor, $action)
{
return Common::getRequestVar('dir', 0, 'int', $request->getParams());
}
}

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\DevicePlugins\Columns;
use Piwik\Common;
use Piwik\Plugin\Dimension\VisitDimension;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
use Piwik\Tracker\Action;
class PluginFlash extends VisitDimension
{
protected $columnName = 'config_flash';
protected $columnType = 'TINYINT(1) NOT NULL';
/**
* @param Request $request
* @param Visitor $visitor
* @param Action|null $action
* @return mixed
*/
public function onNewVisit(Request $request, Visitor $visitor, $action)
{
return Common::getRequestVar('fla', 0, 'int', $request->getParams());
}
}

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\DevicePlugins\Columns;
use Piwik\Common;
use Piwik\Plugin\Dimension\VisitDimension;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
use Piwik\Tracker\Action;
class PluginGears extends VisitDimension
{
protected $columnName = 'config_gears';
protected $columnType = 'TINYINT(1) NOT NULL';
/**
* @param Request $request
* @param Visitor $visitor
* @param Action|null $action
* @return mixed
*/
public function onNewVisit(Request $request, Visitor $visitor, $action)
{
return Common::getRequestVar('gears', 0, 'int', $request->getParams());
}
}

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\DevicePlugins\Columns;
use Piwik\Common;
use Piwik\Plugin\Dimension\VisitDimension;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
use Piwik\Tracker\Action;
class PluginJava extends VisitDimension
{
protected $columnName = 'config_java';
protected $columnType = 'TINYINT(1) NOT NULL';
/**
* @param Request $request
* @param Visitor $visitor
* @param Action|null $action
* @return mixed
*/
public function onNewVisit(Request $request, Visitor $visitor, $action)
{
return Common::getRequestVar('java', 0, 'int', $request->getParams());
}
}

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\DevicePlugins\Columns;
use Piwik\Common;
use Piwik\Plugin\Dimension\VisitDimension;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
use Piwik\Tracker\Action;
class PluginPdf extends VisitDimension
{
protected $columnName = 'config_pdf';
protected $columnType = 'TINYINT(1) NOT NULL';
/**
* @param Request $request
* @param Visitor $visitor
* @param Action|null $action
* @return mixed
*/
public function onNewVisit(Request $request, Visitor $visitor, $action)
{
return Common::getRequestVar('pdf', 0, 'int', $request->getParams());
}
}

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\DevicePlugins\Columns;
use Piwik\Common;
use Piwik\Plugin\Dimension\VisitDimension;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
use Piwik\Tracker\Action;
class PluginQuickTime extends VisitDimension
{
protected $columnName = 'config_quicktime';
protected $columnType = 'TINYINT(1) NOT NULL';
/**
* @param Request $request
* @param Visitor $visitor
* @param Action|null $action
* @return mixed
*/
public function onNewVisit(Request $request, Visitor $visitor, $action)
{
return Common::getRequestVar('qt', 0, 'int', $request->getParams());
}
}

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\DevicePlugins\Columns;
use Piwik\Common;
use Piwik\Plugin\Dimension\VisitDimension;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
use Piwik\Tracker\Action;
class PluginRealPlayer extends VisitDimension
{
protected $columnName = 'config_realplayer';
protected $columnType = 'TINYINT(1) NOT NULL';
/**
* @param Request $request
* @param Visitor $visitor
* @param Action|null $action
* @return mixed
*/
public function onNewVisit(Request $request, Visitor $visitor, $action)
{
return Common::getRequestVar('realp', 0, 'int', $request->getParams());
}
}

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\DevicePlugins\Columns;
use Piwik\Common;
use Piwik\Plugin\Dimension\VisitDimension;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
use Piwik\Tracker\Action;
class PluginSilverlight extends VisitDimension
{
protected $columnName = 'config_silverlight';
protected $columnType = 'TINYINT(1) NOT NULL';
/**
* @param Request $request
* @param Visitor $visitor
* @param Action|null $action
* @return mixed
*/
public function onNewVisit(Request $request, Visitor $visitor, $action)
{
return Common::getRequestVar('ag', 0, 'int', $request->getParams());
}
}

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\DevicePlugins\Columns;
use Piwik\Common;
use Piwik\Plugin\Dimension\VisitDimension;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
use Piwik\Tracker\Action;
class PluginWindowsMedia extends VisitDimension
{
protected $columnName = 'config_windowsmedia';
protected $columnType = 'TINYINT(1) NOT NULL';
/**
* @param Request $request
* @param Visitor $visitor
* @param Action|null $action
* @return mixed
*/
public function onNewVisit(Request $request, Visitor $visitor, $action)
{
return Common::getRequestVar('wma', 0, 'int', $request->getParams());
}
}

View file

@ -0,0 +1,55 @@
<?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\DevicePlugins;
use Piwik\Piwik;
use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
/**
*
*/
class DevicePlugins extends \Piwik\Plugin
{
/**
* @see Piwik\Plugin::registerEvents
*/
public function registerEvents()
{
return array(
'Metrics.getDefaultMetricTranslations' => 'addMetricTranslations',
'Live.getAllVisitorDetails' => 'extendVisitorDetails',
'Request.getRenamedModuleAndAction' => 'renameUserSettingsModuleAndAction',
);
}
public function extendVisitorDetails(&$visitor, $details)
{
$instance = new Visitor($details);
$visitor['plugins'] = $instance->getPlugins();
$visitor['pluginsIcons'] = $instance->getPluginIcons();
}
public function addMetricTranslations(&$translations)
{
$metrics = array(
'nb_visits_percentage' => Piwik::translate('General_ColumnPercentageVisits')
);
$translations = array_merge($translations, $metrics);
}
public function renameUserSettingsModuleAndAction(&$module, &$action)
{
if ($module == 'UserSettings' && $action == 'getPlugin') {
$module = 'DevicePlugins';
}
}
}

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\DevicePlugins\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 getBasicDevicePluginsDisplayProperties(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,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\DevicePlugins\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\DevicePlugins\Columns\Plugin;
class GetPlugin extends Base
{
protected function init()
{
parent::init();
$this->dimension = new Plugin();
$this->name = Piwik::translate('DevicePlugins_WidgetPlugins');
$this->documentation = Piwik::translate('DevicePlugins_WidgetPluginsDocumentation', '<br />');
$this->metrics = array('nb_visits');
$this->constantRowsCount = true;
$this->processedMetrics = array('nb_visits_percentage');
$this->order = 4;
$this->widgetTitle = 'DevicePlugins_WidgetPlugins';
}
public function configureView(ViewDataTable $view)
{
$this->getBasicDevicePluginsDisplayProperties($view);
$view->config->addTranslations(array(
'label' => $this->dimension->getName(),
'nb_visits_percentage' =>
str_replace(' ', '&nbsp;', Piwik::translate('General_ColumnPercentageVisits'))
));
$view->config->show_offset_information = false;
$view->config->show_pagination_control = false;
$view->config->show_limit_control = false;
$view->config->show_all_views_icons = false;
$view->config->show_table_all_columns = false;
$view->config->columns_to_display = array('label', 'nb_visits_percentage', 'nb_visits');
$view->config->show_footer_message = Piwik::translate('DevicePlugins_PluginDetectionDoesNotWorkInIE');
$view->requestConfig->filter_sort_column = 'nb_visits_percentage';
$view->requestConfig->filter_sort_order = 'desc';
$view->requestConfig->filter_limit = 10;
}
}

View file

@ -0,0 +1,65 @@
<?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\DevicePlugins;
require_once PIWIK_INCLUDE_PATH . '/plugins/DevicePlugins/functions.php';
class Visitor
{
const DELIMITER_PLUGIN_NAME = ", ";
private $details = array();
public function __construct($details)
{
$this->details = $details;
}
function getPlugins()
{
$plugins = array(
'config_pdf',
'config_flash',
'config_java',
'config_director',
'config_quicktime',
'config_realplayer',
'config_windowsmedia',
'config_gears',
'config_silverlight',
);
$pluginShortNames = array();
foreach ($plugins as $plugin) {
if (array_key_exists($plugin, $this->details) && $this->details[$plugin] == 1) {
$pluginShortName = substr($plugin, 7);
$pluginShortNames[] = $pluginShortName;
}
}
return implode(self::DELIMITER_PLUGIN_NAME, $pluginShortNames);
}
function getPluginIcons()
{
$pluginNames = $this->getPlugins();
if (!empty($pluginNames)) {
$pluginNames = explode(self::DELIMITER_PLUGIN_NAME, $pluginNames);
$pluginIcons = array();
foreach ($pluginNames as $plugin) {
$pluginIcons[] = array("pluginIcon" => getPluginsLogo($plugin), "pluginName" => $plugin);
}
return $pluginIcons;
}
return null;
}
}

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\DevicePlugins;
use Piwik\Piwik;
function getPluginsLogo($label)
{
if ($label == Piwik::translate('General_Others')) {
return false;
}
return 'plugins/DevicePlugins/images/plugins/' . $label . '.gif';
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 B

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