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:
Diffstat (limited to 'plugins/ImageGraph/ImageGraph.php')
-rw-r--r--plugins/ImageGraph/ImageGraph.php273
1 files changed, 128 insertions, 145 deletions
diff --git a/plugins/ImageGraph/ImageGraph.php b/plugins/ImageGraph/ImageGraph.php
index 1494dc79e6..f149150d23 100644
--- a/plugins/ImageGraph/ImageGraph.php
+++ b/plugins/ImageGraph/ImageGraph.php
@@ -1,157 +1,140 @@
<?php
/**
* Piwik - Open source web analytics
- *
+ *
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- *
+ *
* @category Piwik_Plugins
* @package Piwik_ImageGraph
*/
class Piwik_ImageGraph extends Piwik_Plugin
{
- static private $CONSTANT_ROW_COUNT_REPORT_EXCEPTIONS = array(
- 'Referers_getRefererType',
- );
-
- public function getInformation()
- {
- return array(
- 'description' => Piwik_Translate('ImageGraph_PluginDescription')
- . ' Debug: <a href="'.Piwik_Url::getCurrentQueryStringWithParametersModified(
- array('module'=> 'ImageGraph', 'action' => 'index'))
- . '">All images</a>',
- 'author' => 'Piwik',
- 'author_homepage' => 'http://piwik.org/',
- 'version' => Piwik_Version::VERSION
- );
- }
-
- function getListHooksRegistered()
- {
- $hooks = array(
- 'API.getReportMetadata.end.end' => 'getReportMetadata',
- );
- return $hooks;
- }
-
- // Number of periods to plot on an evolution graph
- const GRAPH_EVOLUTION_LAST_PERIODS = 30;
-
- /**
- * @param Piwik_Event_Notification $notification notification object
- * @return mixed
- */
- public function getReportMetadata($notification)
- {
- $info = $notification->getNotificationInfo();
- $reports = &$notification->getNotificationObject();
- $idSites = $info['idSites'];
-
- // If only one website is selected, we add the Graph URL
- if(count($idSites) != 1)
- {
- return;
- }
- $idSite = reset($idSites);
-
- // in case API.getReportMetadata was not called with date/period we use sane defaults
- if(empty($info['period']))
- {
- $info['period'] = 'day';
- }
- if(empty($info['date']))
- {
- $info['date'] = 'today';
- }
-
- // need two sets of period & date, one for single period graphs, one for multiple periods graphs
- if(Piwik_Archive::isMultiplePeriod($info['date'], $info['period']))
- {
- $periodForMultiplePeriodGraph = $info['period'];
- $dateForMultiplePeriodGraph = $info['date'];
-
- $periodForSinglePeriodGraph = 'range';
- $dateForSinglePeriodGraph = $info['date'];
- }
- else
- {
- $periodForSinglePeriodGraph = $info['period'];
- $dateForSinglePeriodGraph = $info['date'];
-
- $piwikSite = new Piwik_Site($idSite);
- if($periodForSinglePeriodGraph == 'range')
- {
- $periodForMultiplePeriodGraph = Piwik_Config::getInstance()->General['graphs_default_period_to_plot_when_period_range'];
- $dateForMultiplePeriodGraph = $dateForSinglePeriodGraph;
- }
- else
- {
- $periodForMultiplePeriodGraph = $periodForSinglePeriodGraph;
- $dateForMultiplePeriodGraph = Piwik_Controller::getDateRangeRelativeToEndDate(
- $periodForSinglePeriodGraph,
- 'last' . self::GRAPH_EVOLUTION_LAST_PERIODS,
- $dateForSinglePeriodGraph,
- $piwikSite
- );
- }
- }
-
- $token_auth = Piwik_Common::getRequestVar('token_auth', false);
-
- $urlPrefix = "index.php?";
- foreach($reports as &$report)
- {
- $reportModule = $report['module'];
- $reportAction = $report['action'];
- $reportUniqueId = $reportModule.'_'.$reportAction;
-
- $parameters = array();
- $parameters['module'] = 'API';
- $parameters['method'] = 'ImageGraph.get';
- $parameters['idSite'] = $idSite;
- $parameters['apiModule'] = $reportModule;
- $parameters['apiAction'] = $reportAction;
- if(!empty($token_auth))
- {
- $parameters['token_auth'] = $token_auth;
- }
-
- // Forward custom Report parameters to the graph URL
- if(!empty($report['parameters']))
- {
- $parameters = array_merge($parameters, $report['parameters']);
- }
- if(empty($report['dimension']))
- {
- $parameters['period'] = $periodForMultiplePeriodGraph;
- $parameters['date'] = $dateForMultiplePeriodGraph;
- }
- else
- {
- $parameters['period'] = $periodForSinglePeriodGraph;
- $parameters['date'] = $dateForSinglePeriodGraph;
- }
-
- // add the idSubtable if it exists
- $idSubtable = Piwik_Common::getRequestVar('idSubtable', false);
- if ($idSubtable !== false)
- {
- $parameters['idSubtable'] = $idSubtable;
- }
-
- $report['imageGraphUrl'] = $urlPrefix . Piwik_Url::getQueryStringFromParameters($parameters);
-
- // thanks to API.getRowEvolution, reports with dimensions can now be plotted using an evolution graph
- // however, most reports with a fixed set of dimension values are excluded
- // this is done so Piwik Mobile and Scheduled Reports do not display them
- if(empty($report['constantRowsCount']) || in_array($reportUniqueId,self::$CONSTANT_ROW_COUNT_REPORT_EXCEPTIONS))
- {
- $parameters['period'] = $periodForMultiplePeriodGraph;
- $parameters['date'] = $dateForMultiplePeriodGraph;
- $report['imageGraphEvolutionUrl'] = $urlPrefix . Piwik_Url::getQueryStringFromParameters($parameters);
- }
- }
- }
+ static private $CONSTANT_ROW_COUNT_REPORT_EXCEPTIONS = array(
+ 'Referers_getRefererType',
+ );
+
+ public function getInformation()
+ {
+ return array(
+ 'description' => Piwik_Translate('ImageGraph_PluginDescription')
+ . ' Debug: <a href="' . Piwik_Url::getCurrentQueryStringWithParametersModified(
+ array('module' => 'ImageGraph', 'action' => 'index'))
+ . '">All images</a>',
+ 'author' => 'Piwik',
+ 'author_homepage' => 'http://piwik.org/',
+ 'version' => Piwik_Version::VERSION
+ );
+ }
+
+ function getListHooksRegistered()
+ {
+ $hooks = array(
+ 'API.getReportMetadata.end.end' => 'getReportMetadata',
+ );
+ return $hooks;
+ }
+
+ // Number of periods to plot on an evolution graph
+ const GRAPH_EVOLUTION_LAST_PERIODS = 30;
+
+ /**
+ * @param Piwik_Event_Notification $notification notification object
+ * @return mixed
+ */
+ public function getReportMetadata($notification)
+ {
+ $info = $notification->getNotificationInfo();
+ $reports = & $notification->getNotificationObject();
+ $idSites = $info['idSites'];
+
+ // If only one website is selected, we add the Graph URL
+ if (count($idSites) != 1) {
+ return;
+ }
+ $idSite = reset($idSites);
+
+ // in case API.getReportMetadata was not called with date/period we use sane defaults
+ if (empty($info['period'])) {
+ $info['period'] = 'day';
+ }
+ if (empty($info['date'])) {
+ $info['date'] = 'today';
+ }
+
+ // need two sets of period & date, one for single period graphs, one for multiple periods graphs
+ if (Piwik_Archive::isMultiplePeriod($info['date'], $info['period'])) {
+ $periodForMultiplePeriodGraph = $info['period'];
+ $dateForMultiplePeriodGraph = $info['date'];
+
+ $periodForSinglePeriodGraph = 'range';
+ $dateForSinglePeriodGraph = $info['date'];
+ } else {
+ $periodForSinglePeriodGraph = $info['period'];
+ $dateForSinglePeriodGraph = $info['date'];
+
+ $piwikSite = new Piwik_Site($idSite);
+ if ($periodForSinglePeriodGraph == 'range') {
+ $periodForMultiplePeriodGraph = Piwik_Config::getInstance()->General['graphs_default_period_to_plot_when_period_range'];
+ $dateForMultiplePeriodGraph = $dateForSinglePeriodGraph;
+ } else {
+ $periodForMultiplePeriodGraph = $periodForSinglePeriodGraph;
+ $dateForMultiplePeriodGraph = Piwik_Controller::getDateRangeRelativeToEndDate(
+ $periodForSinglePeriodGraph,
+ 'last' . self::GRAPH_EVOLUTION_LAST_PERIODS,
+ $dateForSinglePeriodGraph,
+ $piwikSite
+ );
+ }
+ }
+
+ $token_auth = Piwik_Common::getRequestVar('token_auth', false);
+
+ $urlPrefix = "index.php?";
+ foreach ($reports as &$report) {
+ $reportModule = $report['module'];
+ $reportAction = $report['action'];
+ $reportUniqueId = $reportModule . '_' . $reportAction;
+
+ $parameters = array();
+ $parameters['module'] = 'API';
+ $parameters['method'] = 'ImageGraph.get';
+ $parameters['idSite'] = $idSite;
+ $parameters['apiModule'] = $reportModule;
+ $parameters['apiAction'] = $reportAction;
+ if (!empty($token_auth)) {
+ $parameters['token_auth'] = $token_auth;
+ }
+
+ // Forward custom Report parameters to the graph URL
+ if (!empty($report['parameters'])) {
+ $parameters = array_merge($parameters, $report['parameters']);
+ }
+ if (empty($report['dimension'])) {
+ $parameters['period'] = $periodForMultiplePeriodGraph;
+ $parameters['date'] = $dateForMultiplePeriodGraph;
+ } else {
+ $parameters['period'] = $periodForSinglePeriodGraph;
+ $parameters['date'] = $dateForSinglePeriodGraph;
+ }
+
+ // add the idSubtable if it exists
+ $idSubtable = Piwik_Common::getRequestVar('idSubtable', false);
+ if ($idSubtable !== false) {
+ $parameters['idSubtable'] = $idSubtable;
+ }
+
+ $report['imageGraphUrl'] = $urlPrefix . Piwik_Url::getQueryStringFromParameters($parameters);
+
+ // thanks to API.getRowEvolution, reports with dimensions can now be plotted using an evolution graph
+ // however, most reports with a fixed set of dimension values are excluded
+ // this is done so Piwik Mobile and Scheduled Reports do not display them
+ if (empty($report['constantRowsCount']) || in_array($reportUniqueId, self::$CONSTANT_ROW_COUNT_REPORT_EXCEPTIONS)) {
+ $parameters['period'] = $periodForMultiplePeriodGraph;
+ $parameters['date'] = $dateForMultiplePeriodGraph;
+ $report['imageGraphEvolutionUrl'] = $urlPrefix . Piwik_Url::getQueryStringFromParameters($parameters);
+ }
+ }
+ }
}