update Piwik to version 2.16 (fixes #91)
This commit is contained in:
parent
9abe039dc8
commit
47263617c5
75 changed files with 418860 additions and 226988 deletions
99
www/analytics/plugins/DevicePlugins/API.php
Normal file
99
www/analytics/plugins/DevicePlugins/API.php
Normal 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;
|
||||
}
|
||||
}
|
||||
84
www/analytics/plugins/DevicePlugins/Archiver.php
Normal file
84
www/analytics/plugins/DevicePlugins/Archiver.php
Normal 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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
20
www/analytics/plugins/DevicePlugins/Columns/Plugin.php
Normal file
20
www/analytics/plugins/DevicePlugins/Columns/Plugin.php
Normal 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');
|
||||
}
|
||||
}
|
||||
32
www/analytics/plugins/DevicePlugins/Columns/PluginCookie.php
Normal file
32
www/analytics/plugins/DevicePlugins/Columns/PluginCookie.php
Normal 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());
|
||||
}
|
||||
}
|
||||
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
32
www/analytics/plugins/DevicePlugins/Columns/PluginFlash.php
Normal file
32
www/analytics/plugins/DevicePlugins/Columns/PluginFlash.php
Normal 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());
|
||||
}
|
||||
}
|
||||
32
www/analytics/plugins/DevicePlugins/Columns/PluginGears.php
Normal file
32
www/analytics/plugins/DevicePlugins/Columns/PluginGears.php
Normal 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());
|
||||
}
|
||||
}
|
||||
32
www/analytics/plugins/DevicePlugins/Columns/PluginJava.php
Normal file
32
www/analytics/plugins/DevicePlugins/Columns/PluginJava.php
Normal 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());
|
||||
}
|
||||
}
|
||||
32
www/analytics/plugins/DevicePlugins/Columns/PluginPdf.php
Normal file
32
www/analytics/plugins/DevicePlugins/Columns/PluginPdf.php
Normal 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());
|
||||
}
|
||||
}
|
||||
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
55
www/analytics/plugins/DevicePlugins/DevicePlugins.php
Normal file
55
www/analytics/plugins/DevicePlugins/DevicePlugins.php
Normal 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';
|
||||
}
|
||||
}
|
||||
}
|
||||
32
www/analytics/plugins/DevicePlugins/Reports/Base.php
Normal file
32
www/analytics/plugins/DevicePlugins/Reports/Base.php
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
53
www/analytics/plugins/DevicePlugins/Reports/GetPlugin.php
Normal file
53
www/analytics/plugins/DevicePlugins/Reports/GetPlugin.php
Normal 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(' ', ' ', 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;
|
||||
}
|
||||
|
||||
}
|
||||
65
www/analytics/plugins/DevicePlugins/Visitor.php
Normal file
65
www/analytics/plugins/DevicePlugins/Visitor.php
Normal 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;
|
||||
}
|
||||
}
|
||||
20
www/analytics/plugins/DevicePlugins/functions.php
Normal file
20
www/analytics/plugins/DevicePlugins/functions.php
Normal 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';
|
||||
}
|
||||
BIN
www/analytics/plugins/DevicePlugins/images/plugins/cookie.gif
Normal file
BIN
www/analytics/plugins/DevicePlugins/images/plugins/cookie.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 211 B |
BIN
www/analytics/plugins/DevicePlugins/images/plugins/director.gif
Normal file
BIN
www/analytics/plugins/DevicePlugins/images/plugins/director.gif
Normal file
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
Loading…
Reference in a new issue