Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/global.ini.php1
-rw-r--r--core/Updates/2.10.0-b10.php49
-rw-r--r--core/Version.php2
-rw-r--r--plugins/DevicePlugins/API.php90
-rw-r--r--plugins/DevicePlugins/Archiver.php75
-rw-r--r--plugins/DevicePlugins/Columns/Plugin.php (renamed from plugins/UserSettings/Columns/Plugin.php)2
-rw-r--r--plugins/DevicePlugins/Columns/PluginCookie.php (renamed from plugins/UserSettings/Columns/PluginCookie.php)2
-rw-r--r--plugins/DevicePlugins/Columns/PluginDirector.php (renamed from plugins/UserSettings/Columns/PluginDirector.php)2
-rw-r--r--plugins/DevicePlugins/Columns/PluginFlash.php (renamed from plugins/UserSettings/Columns/PluginFlash.php)2
-rw-r--r--plugins/DevicePlugins/Columns/PluginGears.php (renamed from plugins/UserSettings/Columns/PluginGears.php)2
-rw-r--r--plugins/DevicePlugins/Columns/PluginJava.php (renamed from plugins/UserSettings/Columns/PluginJava.php)2
-rw-r--r--plugins/DevicePlugins/Columns/PluginPdf.php (renamed from plugins/UserSettings/Columns/PluginPdf.php)2
-rw-r--r--plugins/DevicePlugins/Columns/PluginQuickTime.php (renamed from plugins/UserSettings/Columns/PluginQuickTime.php)2
-rw-r--r--plugins/DevicePlugins/Columns/PluginRealPlayer.php (renamed from plugins/UserSettings/Columns/PluginRealPlayer.php)2
-rw-r--r--plugins/DevicePlugins/Columns/PluginSilverlight.php (renamed from plugins/UserSettings/Columns/PluginSilverlight.php)2
-rw-r--r--plugins/DevicePlugins/Columns/PluginWindowsMedia.php (renamed from plugins/UserSettings/Columns/PluginWindowsMedia.php)2
-rw-r--r--plugins/DevicePlugins/DevicePlugins.php48
-rw-r--r--plugins/DevicePlugins/Reports/Base.php32
-rw-r--r--plugins/DevicePlugins/Reports/GetPlugin.php (renamed from plugins/UserSettings/Reports/GetPlugin.php)14
-rw-r--r--plugins/DevicePlugins/Visitor.php (renamed from plugins/UserSettings/Visitor.php)4
-rw-r--r--plugins/DevicePlugins/functions.php20
-rw-r--r--plugins/DevicePlugins/images/plugins/cookie.gif (renamed from plugins/UserSettings/images/plugins/cookie.gif)bin211 -> 211 bytes
-rw-r--r--plugins/DevicePlugins/images/plugins/director.gif (renamed from plugins/UserSettings/images/plugins/director.gif)bin198 -> 198 bytes
-rw-r--r--plugins/DevicePlugins/images/plugins/flash.gif (renamed from plugins/UserSettings/images/plugins/flash.gif)bin1018 -> 1018 bytes
-rw-r--r--plugins/DevicePlugins/images/plugins/gears.gif (renamed from plugins/UserSettings/images/plugins/gears.gif)bin558 -> 558 bytes
-rw-r--r--plugins/DevicePlugins/images/plugins/java.gif (renamed from plugins/UserSettings/images/plugins/java.gif)bin565 -> 565 bytes
-rw-r--r--plugins/DevicePlugins/images/plugins/pdf.gif (renamed from plugins/UserSettings/images/plugins/pdf.gif)bin1021 -> 1021 bytes
-rw-r--r--plugins/DevicePlugins/images/plugins/quicktime.gif (renamed from plugins/UserSettings/images/plugins/quicktime.gif)bin1003 -> 1003 bytes
-rw-r--r--plugins/DevicePlugins/images/plugins/realplayer.gif (renamed from plugins/UserSettings/images/plugins/realplayer.gif)bin1025 -> 1025 bytes
-rw-r--r--plugins/DevicePlugins/images/plugins/silverlight.gif (renamed from plugins/UserSettings/images/plugins/silverlight.gif)bin1012 -> 1012 bytes
-rw-r--r--plugins/DevicePlugins/images/plugins/windowsmedia.gif (renamed from plugins/UserSettings/images/plugins/windowsmedia.gif)bin1026 -> 1026 bytes
-rw-r--r--plugins/DevicePlugins/lang/en.json10
-rw-r--r--plugins/Live/templates/_dataTableViz_visitorLog.twig4
-rw-r--r--plugins/Live/templates/getSingleVisitSummary.twig2
-rw-r--r--plugins/UserSettings/API.php50
-rw-r--r--plugins/UserSettings/Archiver.php25
-rw-r--r--plugins/UserSettings/Controller.php2
-rw-r--r--plugins/UserSettings/UserSettings.php11
-rw-r--r--plugins/UserSettings/functions.php8
-rw-r--r--plugins/UserSettings/lang/en.json7
-rw-r--r--tests/PHPUnit/Unit/DeprecatedMethodsTest.php1
41 files changed, 359 insertions, 118 deletions
diff --git a/config/global.ini.php b/config/global.ini.php
index 5f6626ee63..c140cf21c9 100644
--- a/config/global.ini.php
+++ b/config/global.ini.php
@@ -754,6 +754,7 @@ Plugins[] = Contents
Plugins[] = TestRunner
Plugins[] = BulkTracking
Plugins[] = Resolution
+Plugins[] = DevicePlugins
[PluginsInstalled]
PluginsInstalled[] = Login
diff --git a/core/Updates/2.10.0-b10.php b/core/Updates/2.10.0-b10.php
new file mode 100644
index 0000000000..3628719ccd
--- /dev/null
+++ b/core/Updates/2.10.0-b10.php
@@ -0,0 +1,49 @@
+<?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\Updates;
+
+use Piwik\DataAccess\ArchiveTableCreator;
+use Piwik\Updater;
+use Piwik\Updates;
+
+class Updates_2_10_0_b10 extends Updates
+{
+
+ static function getSql()
+ {
+ $sqls = array();
+
+ $archiveTables = ArchiveTableCreator::getTablesArchivesInstalled();
+
+ $archiveBlobTables = array_filter($archiveTables, function($name) {
+ return ArchiveTableCreator::getTypeFromTableName($name) == ArchiveTableCreator::BLOB_TABLE;
+ });
+
+ foreach ($archiveBlobTables as $table) {
+
+ $sqls["UPDATE " . $table . " SET name = 'DevicePlugins_plugin' WHERE name = 'UserSettings_plugin'"] = false;
+ }
+
+ return $sqls;
+ }
+
+ static function update()
+ {
+ $pluginManager = \Piwik\Plugin\Manager::getInstance();
+
+ try {
+ $pluginManager->activatePlugin('DevicePlugins');
+ } catch(\Exception $e) {
+ }
+
+ Updater::updateDatabase(__FILE__, self::getSql());
+ }
+
+}
diff --git a/core/Version.php b/core/Version.php
index 5edf0e5dba..334d7bf818 100644
--- a/core/Version.php
+++ b/core/Version.php
@@ -20,5 +20,5 @@ final class Version
* The current Piwik version.
* @var string
*/
- const VERSION = '2.10.0-b9';
+ const VERSION = '2.10.0-b10';
}
diff --git a/plugins/DevicePlugins/API.php b/plugins/DevicePlugins/API.php
new file mode 100644
index 0000000000..c49839e8ae
--- /dev/null
+++ b/plugins/DevicePlugins/API.php
@@ -0,0 +1,90 @@
+<?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->filter('Sort', array(Metrics::INDEX_NB_VISITS));
+ $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);
+ $browserTypes = $this->getDataTable(DDArchiver::BROWSER_ENGINE_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();
+ $browserTypesArray = $browserTypes->getDataTables();
+ $visitSumsArray = $visitsSums->getDataTables();
+ } else {
+ $dataTableMap = array($dataTable);
+ $browserTypesArray = array($browserTypes);
+ $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;
+
+ $ieStats = $browserTypesArray[$key]->getRowFromLabel('Trident');
+ 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'));
+
+ return $dataTable;
+ }
+}
diff --git a/plugins/DevicePlugins/Archiver.php b/plugins/DevicePlugins/Archiver.php
new file mode 100644
index 0000000000..1b4b92213e
--- /dev/null
+++ b/plugins/DevicePlugins/Archiver.php
@@ -0,0 +1,75 @@
+<?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,
+ );
+ $this->getProcessor()->aggregateDataTableRecords($dataTableRecords, $this->maximumRows);
+ }
+
+ 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);
+ }
+
+}
+
diff --git a/plugins/UserSettings/Columns/Plugin.php b/plugins/DevicePlugins/Columns/Plugin.php
index a6ecef0c29..0066c5ce19 100644
--- a/plugins/UserSettings/Columns/Plugin.php
+++ b/plugins/DevicePlugins/Columns/Plugin.php
@@ -6,7 +6,7 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
-namespace Piwik\Plugins\UserSettings\Columns;
+namespace Piwik\Plugins\DevicePlugins\Columns;
use Piwik\Columns\Dimension;
use Piwik\Piwik;
diff --git a/plugins/UserSettings/Columns/PluginCookie.php b/plugins/DevicePlugins/Columns/PluginCookie.php
index 8af841ca52..935bd24333 100644
--- a/plugins/UserSettings/Columns/PluginCookie.php
+++ b/plugins/DevicePlugins/Columns/PluginCookie.php
@@ -6,7 +6,7 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
-namespace Piwik\Plugins\UserSettings\Columns;
+namespace Piwik\Plugins\DevicePlugins\Columns;
use Piwik\Common;
use Piwik\Plugin\Dimension\VisitDimension;
diff --git a/plugins/UserSettings/Columns/PluginDirector.php b/plugins/DevicePlugins/Columns/PluginDirector.php
index 58019826ce..4e5b82d2fd 100644
--- a/plugins/UserSettings/Columns/PluginDirector.php
+++ b/plugins/DevicePlugins/Columns/PluginDirector.php
@@ -6,7 +6,7 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
-namespace Piwik\Plugins\UserSettings\Columns;
+namespace Piwik\Plugins\DevicePlugins\Columns;
use Piwik\Common;
use Piwik\Plugin\Dimension\VisitDimension;
diff --git a/plugins/UserSettings/Columns/PluginFlash.php b/plugins/DevicePlugins/Columns/PluginFlash.php
index d691d200a4..70d9bbfe83 100644
--- a/plugins/UserSettings/Columns/PluginFlash.php
+++ b/plugins/DevicePlugins/Columns/PluginFlash.php
@@ -6,7 +6,7 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
-namespace Piwik\Plugins\UserSettings\Columns;
+namespace Piwik\Plugins\DevicePlugins\Columns;
use Piwik\Common;
use Piwik\Plugin\Dimension\VisitDimension;
diff --git a/plugins/UserSettings/Columns/PluginGears.php b/plugins/DevicePlugins/Columns/PluginGears.php
index edf024877e..8d0584a937 100644
--- a/plugins/UserSettings/Columns/PluginGears.php
+++ b/plugins/DevicePlugins/Columns/PluginGears.php
@@ -6,7 +6,7 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
-namespace Piwik\Plugins\UserSettings\Columns;
+namespace Piwik\Plugins\DevicePlugins\Columns;
use Piwik\Common;
use Piwik\Plugin\Dimension\VisitDimension;
diff --git a/plugins/UserSettings/Columns/PluginJava.php b/plugins/DevicePlugins/Columns/PluginJava.php
index 0db9b81778..9b316fda83 100644
--- a/plugins/UserSettings/Columns/PluginJava.php
+++ b/plugins/DevicePlugins/Columns/PluginJava.php
@@ -6,7 +6,7 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
-namespace Piwik\Plugins\UserSettings\Columns;
+namespace Piwik\Plugins\DevicePlugins\Columns;
use Piwik\Common;
use Piwik\Plugin\Dimension\VisitDimension;
diff --git a/plugins/UserSettings/Columns/PluginPdf.php b/plugins/DevicePlugins/Columns/PluginPdf.php
index c50f92c53e..4f637e6d79 100644
--- a/plugins/UserSettings/Columns/PluginPdf.php
+++ b/plugins/DevicePlugins/Columns/PluginPdf.php
@@ -6,7 +6,7 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
-namespace Piwik\Plugins\UserSettings\Columns;
+namespace Piwik\Plugins\DevicePlugins\Columns;
use Piwik\Common;
use Piwik\Plugin\Dimension\VisitDimension;
diff --git a/plugins/UserSettings/Columns/PluginQuickTime.php b/plugins/DevicePlugins/Columns/PluginQuickTime.php
index ea2f85ad0b..9f74f0191d 100644
--- a/plugins/UserSettings/Columns/PluginQuickTime.php
+++ b/plugins/DevicePlugins/Columns/PluginQuickTime.php
@@ -6,7 +6,7 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
-namespace Piwik\Plugins\UserSettings\Columns;
+namespace Piwik\Plugins\DevicePlugins\Columns;
use Piwik\Common;
use Piwik\Plugin\Dimension\VisitDimension;
diff --git a/plugins/UserSettings/Columns/PluginRealPlayer.php b/plugins/DevicePlugins/Columns/PluginRealPlayer.php
index b8e17c605c..902bac086b 100644
--- a/plugins/UserSettings/Columns/PluginRealPlayer.php
+++ b/plugins/DevicePlugins/Columns/PluginRealPlayer.php
@@ -6,7 +6,7 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
-namespace Piwik\Plugins\UserSettings\Columns;
+namespace Piwik\Plugins\DevicePlugins\Columns;
use Piwik\Common;
use Piwik\Plugin\Dimension\VisitDimension;
diff --git a/plugins/UserSettings/Columns/PluginSilverlight.php b/plugins/DevicePlugins/Columns/PluginSilverlight.php
index f917c3d296..a9381a35ee 100644
--- a/plugins/UserSettings/Columns/PluginSilverlight.php
+++ b/plugins/DevicePlugins/Columns/PluginSilverlight.php
@@ -6,7 +6,7 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
-namespace Piwik\Plugins\UserSettings\Columns;
+namespace Piwik\Plugins\DevicePlugins\Columns;
use Piwik\Common;
use Piwik\Plugin\Dimension\VisitDimension;
diff --git a/plugins/UserSettings/Columns/PluginWindowsMedia.php b/plugins/DevicePlugins/Columns/PluginWindowsMedia.php
index 02e7088ce0..3ae32f8ab3 100644
--- a/plugins/UserSettings/Columns/PluginWindowsMedia.php
+++ b/plugins/DevicePlugins/Columns/PluginWindowsMedia.php
@@ -6,7 +6,7 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
-namespace Piwik\Plugins\UserSettings\Columns;
+namespace Piwik\Plugins\DevicePlugins\Columns;
use Piwik\Common;
use Piwik\Plugin\Dimension\VisitDimension;
diff --git a/plugins/DevicePlugins/DevicePlugins.php b/plugins/DevicePlugins/DevicePlugins.php
new file mode 100644
index 0000000000..afe8abf950
--- /dev/null
+++ b/plugins/DevicePlugins/DevicePlugins.php
@@ -0,0 +1,48 @@
+<?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::getListHooksRegistered
+ */
+ public function getListHooksRegistered()
+ {
+ return array(
+ 'Metrics.getDefaultMetricTranslations' => 'addMetricTranslations',
+ 'Live.getAllVisitorDetails' => 'extendVisitorDetails',
+ );
+ }
+
+ 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);
+ }
+
+}
diff --git a/plugins/DevicePlugins/Reports/Base.php b/plugins/DevicePlugins/Reports/Base.php
new file mode 100644
index 0000000000..cb075958be
--- /dev/null
+++ b/plugins/DevicePlugins/Reports/Base.php
@@ -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 = 'UserSettings_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;
+ }
+ }
+}
diff --git a/plugins/UserSettings/Reports/GetPlugin.php b/plugins/DevicePlugins/Reports/GetPlugin.php
index e9512c4256..151bf3e1a6 100644
--- a/plugins/UserSettings/Reports/GetPlugin.php
+++ b/plugins/DevicePlugins/Reports/GetPlugin.php
@@ -6,11 +6,11 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
-namespace Piwik\Plugins\UserSettings\Reports;
+namespace Piwik\Plugins\DevicePlugins\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
-use Piwik\Plugins\UserSettings\Columns\Plugin;
+use Piwik\Plugins\DevicePlugins\Columns\Plugin;
class GetPlugin extends Base
{
@@ -18,18 +18,18 @@ class GetPlugin extends Base
{
parent::init();
$this->dimension = new Plugin();
- $this->name = Piwik::translate('UserSettings_WidgetPlugins');
- $this->documentation = Piwik::translate('UserSettings_WidgetPluginsDocumentation', '<br />');
+ $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 = 'UserSettings_WidgetPlugins';
+ $this->widgetTitle = 'DevicePlugins_WidgetPlugins';
}
public function configureView(ViewDataTable $view)
{
- $this->getBasicUserSettingsDisplayProperties($view);
+ $this->getBasicDevicePluginsDisplayProperties($view);
$view->config->addTranslations(array(
'label' => $this->dimension->getName(),
@@ -43,7 +43,7 @@ class GetPlugin extends Base
$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('UserSettings_PluginDetectionDoesNotWorkInIE');
+ $view->config->show_footer_message = Piwik::translate('DevicePlugins_PluginDetectionDoesNotWorkInIE');
$view->requestConfig->filter_sort_column = 'nb_visits_percentage';
$view->requestConfig->filter_sort_order = 'desc';
diff --git a/plugins/UserSettings/Visitor.php b/plugins/DevicePlugins/Visitor.php
index e399cba3ac..501e241a50 100644
--- a/plugins/UserSettings/Visitor.php
+++ b/plugins/DevicePlugins/Visitor.php
@@ -6,9 +6,9 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
-namespace Piwik\Plugins\UserSettings;
+namespace Piwik\Plugins\DevicePlugins;
-require_once PIWIK_INCLUDE_PATH . '/plugins/UserSettings/functions.php';
+require_once PIWIK_INCLUDE_PATH . '/plugins/DevicePlugins/functions.php';
class Visitor
{
diff --git a/plugins/DevicePlugins/functions.php b/plugins/DevicePlugins/functions.php
new file mode 100644
index 0000000000..4cf77ab120
--- /dev/null
+++ b/plugins/DevicePlugins/functions.php
@@ -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';
+}
diff --git a/plugins/UserSettings/images/plugins/cookie.gif b/plugins/DevicePlugins/images/plugins/cookie.gif
index b2dba70a34..b2dba70a34 100644
--- a/plugins/UserSettings/images/plugins/cookie.gif
+++ b/plugins/DevicePlugins/images/plugins/cookie.gif
Binary files differ
diff --git a/plugins/UserSettings/images/plugins/director.gif b/plugins/DevicePlugins/images/plugins/director.gif
index aa77c91cdc..aa77c91cdc 100644
--- a/plugins/UserSettings/images/plugins/director.gif
+++ b/plugins/DevicePlugins/images/plugins/director.gif
Binary files differ
diff --git a/plugins/UserSettings/images/plugins/flash.gif b/plugins/DevicePlugins/images/plugins/flash.gif
index d96f58166e..d96f58166e 100644
--- a/plugins/UserSettings/images/plugins/flash.gif
+++ b/plugins/DevicePlugins/images/plugins/flash.gif
Binary files differ
diff --git a/plugins/UserSettings/images/plugins/gears.gif b/plugins/DevicePlugins/images/plugins/gears.gif
index 4767112184..4767112184 100644
--- a/plugins/UserSettings/images/plugins/gears.gif
+++ b/plugins/DevicePlugins/images/plugins/gears.gif
Binary files differ
diff --git a/plugins/UserSettings/images/plugins/java.gif b/plugins/DevicePlugins/images/plugins/java.gif
index 1606c5f2f7..1606c5f2f7 100644
--- a/plugins/UserSettings/images/plugins/java.gif
+++ b/plugins/DevicePlugins/images/plugins/java.gif
Binary files differ
diff --git a/plugins/UserSettings/images/plugins/pdf.gif b/plugins/DevicePlugins/images/plugins/pdf.gif
index 810f75d2bc..810f75d2bc 100644
--- a/plugins/UserSettings/images/plugins/pdf.gif
+++ b/plugins/DevicePlugins/images/plugins/pdf.gif
Binary files differ
diff --git a/plugins/UserSettings/images/plugins/quicktime.gif b/plugins/DevicePlugins/images/plugins/quicktime.gif
index cefbbafbb6..cefbbafbb6 100644
--- a/plugins/UserSettings/images/plugins/quicktime.gif
+++ b/plugins/DevicePlugins/images/plugins/quicktime.gif
Binary files differ
diff --git a/plugins/UserSettings/images/plugins/realplayer.gif b/plugins/DevicePlugins/images/plugins/realplayer.gif
index 2ed04565ab..2ed04565ab 100644
--- a/plugins/UserSettings/images/plugins/realplayer.gif
+++ b/plugins/DevicePlugins/images/plugins/realplayer.gif
Binary files differ
diff --git a/plugins/UserSettings/images/plugins/silverlight.gif b/plugins/DevicePlugins/images/plugins/silverlight.gif
index 2a3a35cacb..2a3a35cacb 100644
--- a/plugins/UserSettings/images/plugins/silverlight.gif
+++ b/plugins/DevicePlugins/images/plugins/silverlight.gif
Binary files differ
diff --git a/plugins/UserSettings/images/plugins/windowsmedia.gif b/plugins/DevicePlugins/images/plugins/windowsmedia.gif
index 92e72c9006..92e72c9006 100644
--- a/plugins/UserSettings/images/plugins/windowsmedia.gif
+++ b/plugins/DevicePlugins/images/plugins/windowsmedia.gif
Binary files differ
diff --git a/plugins/DevicePlugins/lang/en.json b/plugins/DevicePlugins/lang/en.json
new file mode 100644
index 0000000000..0e8b452a8a
--- /dev/null
+++ b/plugins/DevicePlugins/lang/en.json
@@ -0,0 +1,10 @@
+{
+ "DevicePlugins": {
+ "BrowserWithNoPluginsEnabled": "%1$s with no plugins enabled",
+ "BrowserWithPluginsEnabled": "%1$s with plugins %2$s enabled",
+ "PluginDescription": "Reports browser plugins",
+ "PluginDetectionDoesNotWorkInIE": "Note: Plugins detection doesn't work in Internet Explorer. This report is only based on non-IE browsers.",
+ "WidgetPlugins": "Browser Plugins",
+ "WidgetPluginsDocumentation": "This report shows which browser plugins your visitors had enabled. This information might be important for choosing the right way to deliver your content."
+ }
+} \ No newline at end of file
diff --git a/plugins/Live/templates/_dataTableViz_visitorLog.twig b/plugins/Live/templates/_dataTableViz_visitorLog.twig
index 535fd2a1ce..74a2c4ab04 100644
--- a/plugins/Live/templates/_dataTableViz_visitorLog.twig
+++ b/plugins/Live/templates/_dataTableViz_visitorLog.twig
@@ -31,9 +31,9 @@
{% if visitor.getColumn('countryFlag') %}<img src="{{ visitor.getColumn('countryFlag') }}" title="{{ visitor.getColumn('location') }}, Provider {{ visitor.getColumn('providerName') }}"/>{% endif %}
&nbsp;
{% if visitor.getColumn('plugins') %}
- {% if visitor.getColumn('browserIcon') %}<img src="{{ visitor.getColumn('browserIcon') }}" title="{{ 'UserSettings_BrowserWithPluginsEnabled'|translate(visitor.getColumn('browserName'),visitor.getColumn('plugins')) }}"/>{% endif %}
+ {% if visitor.getColumn('browserIcon') %}<img src="{{ visitor.getColumn('browserIcon') }}" title="{{ 'DevicePlugins_BrowserWithPluginsEnabled'|translate(visitor.getColumn('browserName'),visitor.getColumn('plugins')) }}"/>{% endif %}
{% else %}
- {% if visitor.getColumn('browserIcon') %}<img src="{{ visitor.getColumn('browserIcon') }}" title="{{ 'UserSettings_BrowserWithNoPluginsEnabled'|translate(visitor.getColumn('browserName')) }}"/>{% endif %}
+ {% if visitor.getColumn('browserIcon') %}<img src="{{ visitor.getColumn('browserIcon') }}" title="{{ 'DevicePlugins_BrowserWithNoPluginsEnabled'|translate(visitor.getColumn('browserName')) }}"/>{% endif %}
{% endif %}
{% if visitor.getColumn('operatingSystemIcon') %}&nbsp;
<img src="{{ visitor.getColumn('operatingSystemIcon') }}"
diff --git a/plugins/Live/templates/getSingleVisitSummary.twig b/plugins/Live/templates/getSingleVisitSummary.twig
index a515b0dff6..c35c6ef09b 100644
--- a/plugins/Live/templates/getSingleVisitSummary.twig
+++ b/plugins/Live/templates/getSingleVisitSummary.twig
@@ -25,7 +25,7 @@
</li>
<li>
{% if visitData.browserName is defined %}
- <div class="visitor-profile-browser" title="{% if visitData.plugins is defined %}{{ 'UserSettings_BrowserWithPluginsEnabled'|translate(visitData.browserName, visitData.plugins) }}{% else %}{{ 'UserSettings_BrowserWithNoPluginsEnabled'|translate(visitData.browserName) }}{% endif %}">
+ <div class="visitor-profile-browser" title="{% if visitData.plugins is defined %}{{ 'DevicePlugins_BrowserWithPluginsEnabled'|translate(visitData.browserName, visitData.plugins) }}{% else %}{{ 'DevicePlugins_BrowserWithNoPluginsEnabled'|translate(visitData.browserName) }}{% endif %}">
{% if visitData.browserIcon is defined %}<img src="{{ visitData.browserIcon }}"/>{% endif %}<span>{{ visitData.browserName|split(' ')[0] }}</span>
</div>
{% endif %}
diff --git a/plugins/UserSettings/API.php b/plugins/UserSettings/API.php
index 9f3649d3ba..d2703489a4 100644
--- a/plugins/UserSettings/API.php
+++ b/plugins/UserSettings/API.php
@@ -109,54 +109,12 @@ class API extends \Piwik\Plugin\API
return $this->getDevicesDetectorApi()->getBrowserEngines($idSite, $period, $date, $segment);
}
+ /**
+ * @deprecated since 2.10.0 See {@link Piwik\Plugins\DevicePlugins\API} for new implementation.
+ */
public function getPlugin($idSite, $period, $date, $segment = false)
{
- // fetch all archive data required
- $dataTable = $this->getDataTable(Archiver::PLUGIN_RECORD_NAME, $idSite, $period, $date, $segment);
- $browserTypes = $this->getDataTable(DDArchiver::BROWSER_ENGINE_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();
- $browserTypesArray = $browserTypes->getDataTables();
- $visitSumsArray = $visitsSums->getDataTables();
- } else {
- $dataTableMap = array($dataTable);
- $browserTypesArray = array($browserTypes);
- $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;
-
- $ieStats = $browserTypesArray[$key]->getRowFromLabel('Trident');
- 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'));
-
- return $dataTable;
+ return \Piwik\Plugins\DevicePlugins\API::getInstance()->getPlugin($idSite, $period, $date, $segment);
}
public function getLanguage($idSite, $period, $date, $segment = false)
diff --git a/plugins/UserSettings/Archiver.php b/plugins/UserSettings/Archiver.php
index a9b67a135c..54f0034c41 100644
--- a/plugins/UserSettings/Archiver.php
+++ b/plugins/UserSettings/Archiver.php
@@ -25,7 +25,6 @@ require_once PIWIK_INCLUDE_PATH . '/plugins/UserSettings/functions.php';
class Archiver extends \Piwik\Plugin\Archiver
{
const LANGUAGE_RECORD_NAME = 'UserSettings_language';
- const PLUGIN_RECORD_NAME = 'UserSettings_plugin';
const LANGUAGE_DIMENSION = "log_visit.location_browser_lang";
@@ -35,7 +34,6 @@ class Archiver extends \Piwik\Plugin\Archiver
*/
public function aggregateDayReport()
{
- $this->aggregateByPlugin();
$this->aggregateByLanguage();
}
@@ -45,34 +43,11 @@ class Archiver extends \Piwik\Plugin\Archiver
public function aggregateMultipleReports()
{
$dataTableRecords = array(
- self::PLUGIN_RECORD_NAME,
self::LANGUAGE_RECORD_NAME,
);
$this->getProcessor()->aggregateDataTableRecords($dataTableRecords, $this->maximumRows);
}
- 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 aggregateByLanguage()
{
$query = $this->getLogAggregator()->queryVisitsByDimension(array("label" => self::LANGUAGE_DIMENSION));
diff --git a/plugins/UserSettings/Controller.php b/plugins/UserSettings/Controller.php
index 8c64ede3da..bb21c40fd2 100644
--- a/plugins/UserSettings/Controller.php
+++ b/plugins/UserSettings/Controller.php
@@ -10,7 +10,7 @@ namespace Piwik\Plugins\UserSettings;
use Piwik\Plugins\Resolution\Reports\GetConfiguration;
use Piwik\Plugins\UserSettings\Reports\GetLanguage;
-use Piwik\Plugins\UserSettings\Reports\GetPlugin;
+use Piwik\Plugins\DevicePlugins\Reports\GetPlugin;
use Piwik\Plugins\Resolution\Reports\GetResolution;
use Piwik\View;
diff --git a/plugins/UserSettings/UserSettings.php b/plugins/UserSettings/UserSettings.php
index 7596227de5..cb034c7d94 100644
--- a/plugins/UserSettings/UserSettings.php
+++ b/plugins/UserSettings/UserSettings.php
@@ -24,7 +24,6 @@ class UserSettings extends \Piwik\Plugin
{
return array(
'Metrics.getDefaultMetricTranslations' => 'addMetricTranslations',
- 'Live.getAllVisitorDetails' => 'extendVisitorDetails',
'Request.getRenamedModuleAndAction' => 'renameDeprecatedModuleAndAction',
);
}
@@ -55,14 +54,10 @@ class UserSettings extends \Piwik\Plugin
if ($module == 'UserSettings' && ($action == 'getResolution' || $action == 'getConfiguration')) {
$module = 'Resolution';
}
- }
-
- public function extendVisitorDetails(&$visitor, $details)
- {
- $instance = new Visitor($details);
- $visitor['plugins'] = $instance->getPlugins();
- $visitor['pluginsIcons'] = $instance->getPluginIcons();
+ if ($module == 'UserSettings' && $action == 'getPlugin') {
+ $module = 'DevicePlugins';
+ }
}
public function addMetricTranslations(&$translations)
diff --git a/plugins/UserSettings/functions.php b/plugins/UserSettings/functions.php
index c50e84146e..f00f717ea3 100644
--- a/plugins/UserSettings/functions.php
+++ b/plugins/UserSettings/functions.php
@@ -12,14 +12,6 @@ namespace Piwik\Plugins\UserSettings;
use Piwik\Piwik;
use Piwik\Tracker\Request;
-function getPluginsLogo($oldLabel)
-{
- if ($oldLabel == Piwik::translate('General_Others')) {
- return false;
- }
- return 'plugins/UserSettings/images/plugins/' . $oldLabel . '.gif';
-}
-
/**
* Returns the given language code to translated language name
*
diff --git a/plugins/UserSettings/lang/en.json b/plugins/UserSettings/lang/en.json
index f5240dc9e2..de1005438b 100644
--- a/plugins/UserSettings/lang/en.json
+++ b/plugins/UserSettings/lang/en.json
@@ -1,8 +1,6 @@
{
"UserSettings": {
"BrowserLanguage": "Browser language",
- "BrowserWithNoPluginsEnabled": "%1$s with no plugins enabled",
- "BrowserWithPluginsEnabled": "%1$s with plugins %2$s enabled",
"Language_aa": "Afar",
"Language_ab": "Abkhazian",
"Language_ae": "Avestan",
@@ -189,9 +187,6 @@
"Language_zu": "Zulu",
"LanguageCode": "Language code",
"PluginDescription": "Reports various User Settings: Browser, Browser Family, Operating System, Plugins, Resolution, Global Settings.",
- "PluginDetectionDoesNotWorkInIE": "Note: Plugins detection doesn't work in Internet Explorer. This report is only based on non-IE browsers.",
- "VisitorSettings": "Visitor Settings",
- "WidgetPlugins": "Browser Plugins",
- "WidgetPluginsDocumentation": "This report shows which browser plugins your visitors had enabled. This information might be important for choosing the right way to deliver your content."
+ "VisitorSettings": "Visitor Settings"
}
} \ No newline at end of file
diff --git a/tests/PHPUnit/Unit/DeprecatedMethodsTest.php b/tests/PHPUnit/Unit/DeprecatedMethodsTest.php
index 4cbb8e0b08..94e265c9a1 100644
--- a/tests/PHPUnit/Unit/DeprecatedMethodsTest.php
+++ b/tests/PHPUnit/Unit/DeprecatedMethodsTest.php
@@ -64,6 +64,7 @@ class DeprecatedMethodsTest extends \PHPUnit_Framework_TestCase
$this->assertDeprecatedMethodIsRemoved('Piwik\Plugins\UserSettings\API', 'getMobileVsDesktop', $validTill);
$this->assertDeprecatedMethodIsRemoved('Piwik\Plugins\UserSettings\API', 'getResolution', $validTill);
$this->assertDeprecatedMethodIsRemoved('Piwik\Plugins\UserSettings\API', 'getConfiguration', $validTill);
+ $this->assertDeprecatedMethodIsRemoved('Piwik\Plugins\UserSettings\API', 'getPlugin', $validTill);
$this->assertDeprecatedMethodIsRemoved('Piwik\Plugins\UserSettings\UserSettings', 'renameDeprecatedModuleAndAction', $validTill);
$this->assertDeprecatedMethodIsRemovedInPiwik3('\Piwik\Menu\MenuAbstract', 'add');