diff options
Diffstat (limited to 'plugins/ImageGraph/ImageGraph.php')
-rw-r--r-- | plugins/ImageGraph/ImageGraph.php | 273 |
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); + } + } + } } |