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:
authormattab <matthieu.aubry@gmail.com>2013-03-28 03:42:39 +0400
committermattab <matthieu.aubry@gmail.com>2013-03-28 03:42:40 +0400
commitae4b03163792f0b6e933933e5d37df87dc3fd566 (patch)
treed1d7510a9728f587d3d63ebd03e4ecf3d904838b /plugins/VisitsSummary
parent158c2150f5f2e13ece459b8d131244c11b763997 (diff)
Mass conversion of all files to the newly agreed coding standard: PSR 1/2
Converting Piwik core source files, PHP, JS, TPL, CSS More info: http://piwik.org/participate/coding-standards/
Diffstat (limited to 'plugins/VisitsSummary')
-rw-r--r--plugins/VisitsSummary/API.php274
-rw-r--r--plugins/VisitsSummary/Controller.php301
-rw-r--r--plugins/VisitsSummary/VisitsSummary.php112
-rw-r--r--plugins/VisitsSummary/templates/sparklines.tpl102
4 files changed, 388 insertions, 401 deletions
diff --git a/plugins/VisitsSummary/API.php b/plugins/VisitsSummary/API.php
index 9294e03b74..0864c517b5 100644
--- a/plugins/VisitsSummary/API.php
+++ b/plugins/VisitsSummary/API.php
@@ -17,146 +17,136 @@
*/
class Piwik_VisitsSummary_API
{
- static private $instance = null;
- /**
- * @return Piwik_VisitsSummary_API
- */
- static public function getInstance()
- {
- if (self::$instance == null)
- {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
- public function get( $idSite, $period, $date, $segment = false, $columns = false)
- {
- Piwik::checkUserHasViewAccess( $idSite );
- $archive = Piwik_Archive::build($idSite, $period, $date, $segment );
-
- // array values are comma separated
- $columns = Piwik::getArrayFromApiParameter($columns);
- $tempColumns = array();
-
- $bounceRateRequested = $actionsPerVisitRequested = $averageVisitDurationRequested = false;
- if(!empty($columns))
- {
- // make sure base metrics are there for processed metrics
- if(false !== ($bounceRateRequested = array_search('bounce_rate', $columns)))
- {
- if (!in_array('nb_visits', $columns)) $tempColumns[] = 'nb_visits';
- if (!in_array('bounce_count', $columns)) $tempColumns[] = 'bounce_count';
- unset($columns[$bounceRateRequested]);
- }
- if(false !== ($actionsPerVisitRequested = array_search('nb_actions_per_visit', $columns)))
- {
- if (!in_array('nb_visits', $columns)) $tempColumns[] = 'nb_visits';
- if (!in_array('nb_actions', $columns)) $tempColumns[] = 'nb_actions';
- unset($columns[$actionsPerVisitRequested]);
- }
- if(false !== ($averageVisitDurationRequested = array_search('avg_time_on_site', $columns)))
- {
- if (!in_array('nb_visits', $columns)) $tempColumns[] = 'nb_visits';
- if (!in_array('sum_visit_length', $columns)) $tempColumns[] = 'sum_visit_length';
- unset($columns[$averageVisitDurationRequested]);
- }
- $tempColumns = array_unique($tempColumns);
- rsort($tempColumns);
- $columns = array_merge($columns, $tempColumns);
- }
- else
- {
- $bounceRateRequested = $actionsPerVisitRequested = $averageVisitDurationRequested = true;
- $columns = array(
- 'nb_visits',
- 'nb_actions',
- 'nb_visits_converted',
- 'bounce_count',
- 'sum_visit_length',
- 'max_actions'
- );
- if(Piwik::isUniqueVisitorsEnabled($period))
- {
- $columns = array_merge(array('nb_uniq_visitors'), $columns);
- }
- // Force reindex from 0 to N otherwise the SQL bind will fail
- $columns = array_values($columns);
- }
-
- $dataTable = $archive->getDataTableFromNumeric($columns);
-
- // Process ratio metrics from base metrics, when requested
- if($bounceRateRequested !== false)
- {
- $dataTable->filter('ColumnCallbackAddColumnPercentage', array('bounce_rate', 'bounce_count', 'nb_visits', 0));
- }
- if($actionsPerVisitRequested !== false)
- {
- $dataTable->filter('ColumnCallbackAddColumnQuotient', array('nb_actions_per_visit', 'nb_actions', 'nb_visits', 1));
- }
- if($averageVisitDurationRequested !== false)
- {
- $dataTable->filter('ColumnCallbackAddColumnQuotient', array('avg_time_on_site', 'sum_visit_length', 'nb_visits', 0));
- }
-
- // remove temp metrics that were used to compute processed metrics
- $dataTable->deleteColumns($tempColumns);
-
- return $dataTable;
- }
-
- protected function getNumeric( $idSite, $period, $date, $segment, $toFetch )
- {
- Piwik::checkUserHasViewAccess( $idSite );
- $archive = Piwik_Archive::build($idSite, $period, $date, $segment );
- $dataTable = $archive->getNumeric($toFetch);
- return $dataTable;
- }
-
- public function getVisits( $idSite, $period, $date, $segment = false )
- {
- return $this->getNumeric( $idSite, $period, $date, $segment, 'nb_visits');
- }
-
- public function getUniqueVisitors( $idSite, $period, $date, $segment = false )
- {
- return $this->getNumeric( $idSite, $period, $date, $segment, 'nb_uniq_visitors');
- }
-
- public function getActions( $idSite, $period, $date, $segment = false )
- {
- return $this->getNumeric( $idSite, $period, $date, $segment, 'nb_actions');
- }
-
- public function getMaxActions( $idSite, $period, $date, $segment = false )
- {
- return $this->getNumeric( $idSite, $period, $date, $segment, 'max_actions');
- }
-
- public function getBounceCount( $idSite, $period, $date, $segment = false )
- {
- return $this->getNumeric( $idSite, $period, $date, $segment, 'bounce_count');
- }
-
- public function getVisitsConverted( $idSite, $period, $date, $segment = false )
- {
- return $this->getNumeric( $idSite, $period, $date, $segment, 'nb_visits_converted');
- }
-
- public function getSumVisitsLength( $idSite, $period, $date, $segment = false )
- {
- return $this->getNumeric( $idSite, $period, $date, $segment, 'sum_visit_length');
- }
-
- public function getSumVisitsLengthPretty( $idSite, $period, $date, $segment = false )
- {
- $table = $this->getSumVisitsLength( $idSite, $period, $date, $segment );
- if($table instanceof Piwik_DataTable_Array) {
- $table->filter('ColumnCallbackReplace', array(0, array('Piwik', 'getPrettyTimeFromSeconds')));
- } else {
- $table = Piwik::getPrettyTimeFromSeconds($table);
- }
- return $table;
- }
+ static private $instance = null;
+
+ /**
+ * @return Piwik_VisitsSummary_API
+ */
+ static public function getInstance()
+ {
+ if (self::$instance == null) {
+ self::$instance = new self;
+ }
+ return self::$instance;
+ }
+
+ public function get($idSite, $period, $date, $segment = false, $columns = false)
+ {
+ Piwik::checkUserHasViewAccess($idSite);
+ $archive = Piwik_Archive::build($idSite, $period, $date, $segment);
+
+ // array values are comma separated
+ $columns = Piwik::getArrayFromApiParameter($columns);
+ $tempColumns = array();
+
+ $bounceRateRequested = $actionsPerVisitRequested = $averageVisitDurationRequested = false;
+ if (!empty($columns)) {
+ // make sure base metrics are there for processed metrics
+ if (false !== ($bounceRateRequested = array_search('bounce_rate', $columns))) {
+ if (!in_array('nb_visits', $columns)) $tempColumns[] = 'nb_visits';
+ if (!in_array('bounce_count', $columns)) $tempColumns[] = 'bounce_count';
+ unset($columns[$bounceRateRequested]);
+ }
+ if (false !== ($actionsPerVisitRequested = array_search('nb_actions_per_visit', $columns))) {
+ if (!in_array('nb_visits', $columns)) $tempColumns[] = 'nb_visits';
+ if (!in_array('nb_actions', $columns)) $tempColumns[] = 'nb_actions';
+ unset($columns[$actionsPerVisitRequested]);
+ }
+ if (false !== ($averageVisitDurationRequested = array_search('avg_time_on_site', $columns))) {
+ if (!in_array('nb_visits', $columns)) $tempColumns[] = 'nb_visits';
+ if (!in_array('sum_visit_length', $columns)) $tempColumns[] = 'sum_visit_length';
+ unset($columns[$averageVisitDurationRequested]);
+ }
+ $tempColumns = array_unique($tempColumns);
+ rsort($tempColumns);
+ $columns = array_merge($columns, $tempColumns);
+ } else {
+ $bounceRateRequested = $actionsPerVisitRequested = $averageVisitDurationRequested = true;
+ $columns = array(
+ 'nb_visits',
+ 'nb_actions',
+ 'nb_visits_converted',
+ 'bounce_count',
+ 'sum_visit_length',
+ 'max_actions'
+ );
+ if (Piwik::isUniqueVisitorsEnabled($period)) {
+ $columns = array_merge(array('nb_uniq_visitors'), $columns);
+ }
+ // Force reindex from 0 to N otherwise the SQL bind will fail
+ $columns = array_values($columns);
+ }
+
+ $dataTable = $archive->getDataTableFromNumeric($columns);
+
+ // Process ratio metrics from base metrics, when requested
+ if ($bounceRateRequested !== false) {
+ $dataTable->filter('ColumnCallbackAddColumnPercentage', array('bounce_rate', 'bounce_count', 'nb_visits', 0));
+ }
+ if ($actionsPerVisitRequested !== false) {
+ $dataTable->filter('ColumnCallbackAddColumnQuotient', array('nb_actions_per_visit', 'nb_actions', 'nb_visits', 1));
+ }
+ if ($averageVisitDurationRequested !== false) {
+ $dataTable->filter('ColumnCallbackAddColumnQuotient', array('avg_time_on_site', 'sum_visit_length', 'nb_visits', 0));
+ }
+
+ // remove temp metrics that were used to compute processed metrics
+ $dataTable->deleteColumns($tempColumns);
+
+ return $dataTable;
+ }
+
+ protected function getNumeric($idSite, $period, $date, $segment, $toFetch)
+ {
+ Piwik::checkUserHasViewAccess($idSite);
+ $archive = Piwik_Archive::build($idSite, $period, $date, $segment);
+ $dataTable = $archive->getNumeric($toFetch);
+ return $dataTable;
+ }
+
+ public function getVisits($idSite, $period, $date, $segment = false)
+ {
+ return $this->getNumeric($idSite, $period, $date, $segment, 'nb_visits');
+ }
+
+ public function getUniqueVisitors($idSite, $period, $date, $segment = false)
+ {
+ return $this->getNumeric($idSite, $period, $date, $segment, 'nb_uniq_visitors');
+ }
+
+ public function getActions($idSite, $period, $date, $segment = false)
+ {
+ return $this->getNumeric($idSite, $period, $date, $segment, 'nb_actions');
+ }
+
+ public function getMaxActions($idSite, $period, $date, $segment = false)
+ {
+ return $this->getNumeric($idSite, $period, $date, $segment, 'max_actions');
+ }
+
+ public function getBounceCount($idSite, $period, $date, $segment = false)
+ {
+ return $this->getNumeric($idSite, $period, $date, $segment, 'bounce_count');
+ }
+
+ public function getVisitsConverted($idSite, $period, $date, $segment = false)
+ {
+ return $this->getNumeric($idSite, $period, $date, $segment, 'nb_visits_converted');
+ }
+
+ public function getSumVisitsLength($idSite, $period, $date, $segment = false)
+ {
+ return $this->getNumeric($idSite, $period, $date, $segment, 'sum_visit_length');
+ }
+
+ public function getSumVisitsLengthPretty($idSite, $period, $date, $segment = false)
+ {
+ $table = $this->getSumVisitsLength($idSite, $period, $date, $segment);
+ if ($table instanceof Piwik_DataTable_Array) {
+ $table->filter('ColumnCallbackReplace', array(0, array('Piwik', 'getPrettyTimeFromSeconds')));
+ } else {
+ $table = Piwik::getPrettyTimeFromSeconds($table);
+ }
+ return $table;
+ }
}
diff --git a/plugins/VisitsSummary/Controller.php b/plugins/VisitsSummary/Controller.php
index dec6a70957..86ebf7b5ac 100644
--- a/plugins/VisitsSummary/Controller.php
+++ b/plugins/VisitsSummary/Controller.php
@@ -15,156 +15,153 @@
*/
class Piwik_VisitsSummary_Controller extends Piwik_Controller
{
- public function index()
- {
- $view = Piwik_View::factory('index');
- $this->setPeriodVariablesView($view);
- $view->graphEvolutionVisitsSummary = $this->getEvolutionGraph( true, array('nb_visits') );
- $this->setSparklinesAndNumbers($view);
- echo $view->render();
- }
-
- public function getSparklines()
- {
- $view = Piwik_View::factory('sparklines');
- $this->setPeriodVariablesView($view);
- $this->setSparklinesAndNumbers($view);
- echo $view->render();
- }
-
- public function getEvolutionGraph( $fetch = false, array $columns = array())
- {
- if(empty($columns))
- {
- $columns = Piwik_Common::getRequestVar('columns');
- $columns = Piwik::getArrayFromApiParameter($columns);
- }
-
- $documentation = Piwik_Translate('VisitsSummary_VisitsSummaryDocumentation').'<br />'
- . Piwik_Translate('General_BrokenDownReportDocumentation').'<br /><br />'
-
- . '<b>'.Piwik_Translate('General_ColumnNbVisits').':</b> '
- . Piwik_Translate('General_ColumnNbVisitsDocumentation').'<br />'
-
- . '<b>'.Piwik_Translate('General_ColumnNbUniqVisitors').':</b> '
- . Piwik_Translate('General_ColumnNbUniqVisitorsDocumentation').'<br />'
-
- . '<b>'.Piwik_Translate('General_ColumnNbActions').':</b> '
- . Piwik_Translate('General_ColumnNbActionsDocumentation').'<br />'
-
- . '<b>'.Piwik_Translate('General_ColumnActionsPerVisit').':</b> '
- . Piwik_Translate('General_ColumnActionsPerVisitDocumentation');
-
- $selectableColumns = array(
- // columns from VisitsSummary.get
- 'nb_visits',
- 'nb_uniq_visitors',
- 'avg_time_on_site',
- 'bounce_rate',
- 'nb_actions_per_visit',
- 'max_actions',
- 'nb_visits_converted',
- // columns from Actions.get
- 'nb_pageviews',
- 'nb_uniq_pageviews',
- 'nb_downloads',
- 'nb_uniq_downloads',
- 'nb_outlinks',
- 'nb_uniq_outlinks'
- );
-
- $idSite = Piwik_Common::getRequestVar('idSite');
- $displaySiteSearch = Piwik_Site::isSiteSearchEnabledFor($idSite);
-
- if($displaySiteSearch) {
- $selectableColumns[] = 'nb_searches';
- $selectableColumns[] = 'nb_keywords';
- }
- $view = $this->getLastUnitGraphAcrossPlugins($this->pluginName, __FUNCTION__, $columns,
- $selectableColumns, $documentation);
-
- return $this->renderView($view, $fetch);
- }
-
- static public function getVisitsSummary()
- {
- $requestString = "method=VisitsSummary.get".
- "&format=original".
- // we disable filters for example "search for pattern", in the case this method is called
- // by a method that already calls the API with some generic filters applied
- "&disable_generic_filters=1";
- $request = new Piwik_API_Request($requestString);
- $result = $request->process();
- return empty($result) ? new Piwik_DataTable() : $result;
- }
-
- static public function getVisits()
- {
- $requestString = "method=VisitsSummary.getVisits".
- "&format=original".
- "&disable_generic_filters=1";
- $request = new Piwik_API_Request($requestString);
- return $request->process();
- }
-
- protected function setSparklinesAndNumbers($view)
- {
- $view->urlSparklineNbVisits = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => $view->displayUniqueVisitors ? array('nb_visits', 'nb_uniq_visitors') : array('nb_visits')));
- $view->urlSparklineNbPageviews = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('nb_pageviews', 'nb_uniq_pageviews')));
- $view->urlSparklineNbDownloads = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('nb_downloads', 'nb_uniq_downloads')));
- $view->urlSparklineNbOutlinks = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('nb_outlinks', 'nb_uniq_outlinks')));
- $view->urlSparklineAvgVisitDuration = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('avg_time_on_site')));
- $view->urlSparklineMaxActions = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('max_actions')));
- $view->urlSparklineActionsPerVisit = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('nb_actions_per_visit')));
- $view->urlSparklineBounceRate = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('bounce_rate')));
-
- $idSite = Piwik_Common::getRequestVar('idSite');
- $displaySiteSearch = Piwik_Site::isSiteSearchEnabledFor($idSite);
- if($displaySiteSearch)
- {
- $view->urlSparklineNbSearches = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('nb_searches', 'nb_keywords')));
- }
- $view->displaySiteSearch = $displaySiteSearch;
-
- $dataTableVisit = self::getVisitsSummary();
- $dataRow = $dataTableVisit->getRowsCount() == 0 ? new Piwik_DataTable_Row() : $dataTableVisit->getFirstRow();
-
- $dataTableActions = Piwik_Actions_API::getInstance()->get($idSite, Piwik_Common::getRequestVar('period'), Piwik_Common::getRequestVar('date'), Piwik_Common::getRequestVar('segment',false));
- $dataActionsRow =
- $dataTableActions->getRowsCount() == 0 ? new Piwik_DataTable_Row() : $dataTableActions->getFirstRow();
-
- $view->nbUniqVisitors = (int)$dataRow->getColumn('nb_uniq_visitors');
- $nbVisits = (int)$dataRow->getColumn('nb_visits');
- $view->nbVisits = $nbVisits;
- $view->nbPageviews = (int)$dataActionsRow->getColumn('nb_pageviews');
- $view->nbUniquePageviews = (int)$dataActionsRow->getColumn('nb_uniq_pageviews');
- $view->nbDownloads = (int)$dataActionsRow->getColumn('nb_downloads');
- $view->nbUniqueDownloads = (int)$dataActionsRow->getColumn('nb_uniq_downloads');
- $view->nbOutlinks = (int)$dataActionsRow->getColumn('nb_outlinks');
- $view->nbUniqueOutlinks = (int)$dataActionsRow->getColumn('nb_uniq_outlinks');
- $view->averageVisitDuration = $dataRow->getColumn('avg_time_on_site');
- $nbBouncedVisits = $dataRow->getColumn('bounce_count');
- $view->bounceRate = Piwik::getPercentageSafe($nbBouncedVisits, $nbVisits);
- $view->maxActions = (int)$dataRow->getColumn('max_actions');
- $view->nbActionsPerVisit = $dataRow->getColumn('nb_actions_per_visit');
-
- if($displaySiteSearch)
- {
- $view->nbSearches = (int)$dataActionsRow->getColumn('nb_searches');
- $view->nbKeywords = (int)$dataActionsRow->getColumn('nb_keywords');
- }
-
- // backward compatibility:
- // show actions if the finer metrics are not archived
- $view->showOnlyActions = false;
- if ( $dataActionsRow->getColumn('nb_pageviews')
- + $dataActionsRow->getColumn('nb_downloads')
- + $dataActionsRow->getColumn('nb_outlinks') == 0
- && $dataRow->getColumn('nb_actions') > 0)
- {
- $view->showOnlyActions = true;
- $view->nbActions = $dataRow->getColumn('nb_actions');
- $view->urlSparklineNbActions = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('nb_actions')));
- }
- }
+ public function index()
+ {
+ $view = Piwik_View::factory('index');
+ $this->setPeriodVariablesView($view);
+ $view->graphEvolutionVisitsSummary = $this->getEvolutionGraph(true, array('nb_visits'));
+ $this->setSparklinesAndNumbers($view);
+ echo $view->render();
+ }
+
+ public function getSparklines()
+ {
+ $view = Piwik_View::factory('sparklines');
+ $this->setPeriodVariablesView($view);
+ $this->setSparklinesAndNumbers($view);
+ echo $view->render();
+ }
+
+ public function getEvolutionGraph($fetch = false, array $columns = array())
+ {
+ if (empty($columns)) {
+ $columns = Piwik_Common::getRequestVar('columns');
+ $columns = Piwik::getArrayFromApiParameter($columns);
+ }
+
+ $documentation = Piwik_Translate('VisitsSummary_VisitsSummaryDocumentation') . '<br />'
+ . Piwik_Translate('General_BrokenDownReportDocumentation') . '<br /><br />'
+
+ . '<b>' . Piwik_Translate('General_ColumnNbVisits') . ':</b> '
+ . Piwik_Translate('General_ColumnNbVisitsDocumentation') . '<br />'
+
+ . '<b>' . Piwik_Translate('General_ColumnNbUniqVisitors') . ':</b> '
+ . Piwik_Translate('General_ColumnNbUniqVisitorsDocumentation') . '<br />'
+
+ . '<b>' . Piwik_Translate('General_ColumnNbActions') . ':</b> '
+ . Piwik_Translate('General_ColumnNbActionsDocumentation') . '<br />'
+
+ . '<b>' . Piwik_Translate('General_ColumnActionsPerVisit') . ':</b> '
+ . Piwik_Translate('General_ColumnActionsPerVisitDocumentation');
+
+ $selectableColumns = array(
+ // columns from VisitsSummary.get
+ 'nb_visits',
+ 'nb_uniq_visitors',
+ 'avg_time_on_site',
+ 'bounce_rate',
+ 'nb_actions_per_visit',
+ 'max_actions',
+ 'nb_visits_converted',
+ // columns from Actions.get
+ 'nb_pageviews',
+ 'nb_uniq_pageviews',
+ 'nb_downloads',
+ 'nb_uniq_downloads',
+ 'nb_outlinks',
+ 'nb_uniq_outlinks'
+ );
+
+ $idSite = Piwik_Common::getRequestVar('idSite');
+ $displaySiteSearch = Piwik_Site::isSiteSearchEnabledFor($idSite);
+
+ if ($displaySiteSearch) {
+ $selectableColumns[] = 'nb_searches';
+ $selectableColumns[] = 'nb_keywords';
+ }
+ $view = $this->getLastUnitGraphAcrossPlugins($this->pluginName, __FUNCTION__, $columns,
+ $selectableColumns, $documentation);
+
+ return $this->renderView($view, $fetch);
+ }
+
+ static public function getVisitsSummary()
+ {
+ $requestString = "method=VisitsSummary.get" .
+ "&format=original" .
+ // we disable filters for example "search for pattern", in the case this method is called
+ // by a method that already calls the API with some generic filters applied
+ "&disable_generic_filters=1";
+ $request = new Piwik_API_Request($requestString);
+ $result = $request->process();
+ return empty($result) ? new Piwik_DataTable() : $result;
+ }
+
+ static public function getVisits()
+ {
+ $requestString = "method=VisitsSummary.getVisits" .
+ "&format=original" .
+ "&disable_generic_filters=1";
+ $request = new Piwik_API_Request($requestString);
+ return $request->process();
+ }
+
+ protected function setSparklinesAndNumbers($view)
+ {
+ $view->urlSparklineNbVisits = $this->getUrlSparkline('getEvolutionGraph', array('columns' => $view->displayUniqueVisitors ? array('nb_visits', 'nb_uniq_visitors') : array('nb_visits')));
+ $view->urlSparklineNbPageviews = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('nb_pageviews', 'nb_uniq_pageviews')));
+ $view->urlSparklineNbDownloads = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('nb_downloads', 'nb_uniq_downloads')));
+ $view->urlSparklineNbOutlinks = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('nb_outlinks', 'nb_uniq_outlinks')));
+ $view->urlSparklineAvgVisitDuration = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('avg_time_on_site')));
+ $view->urlSparklineMaxActions = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('max_actions')));
+ $view->urlSparklineActionsPerVisit = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('nb_actions_per_visit')));
+ $view->urlSparklineBounceRate = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('bounce_rate')));
+
+ $idSite = Piwik_Common::getRequestVar('idSite');
+ $displaySiteSearch = Piwik_Site::isSiteSearchEnabledFor($idSite);
+ if ($displaySiteSearch) {
+ $view->urlSparklineNbSearches = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('nb_searches', 'nb_keywords')));
+ }
+ $view->displaySiteSearch = $displaySiteSearch;
+
+ $dataTableVisit = self::getVisitsSummary();
+ $dataRow = $dataTableVisit->getRowsCount() == 0 ? new Piwik_DataTable_Row() : $dataTableVisit->getFirstRow();
+
+ $dataTableActions = Piwik_Actions_API::getInstance()->get($idSite, Piwik_Common::getRequestVar('period'), Piwik_Common::getRequestVar('date'), Piwik_Common::getRequestVar('segment', false));
+ $dataActionsRow =
+ $dataTableActions->getRowsCount() == 0 ? new Piwik_DataTable_Row() : $dataTableActions->getFirstRow();
+
+ $view->nbUniqVisitors = (int)$dataRow->getColumn('nb_uniq_visitors');
+ $nbVisits = (int)$dataRow->getColumn('nb_visits');
+ $view->nbVisits = $nbVisits;
+ $view->nbPageviews = (int)$dataActionsRow->getColumn('nb_pageviews');
+ $view->nbUniquePageviews = (int)$dataActionsRow->getColumn('nb_uniq_pageviews');
+ $view->nbDownloads = (int)$dataActionsRow->getColumn('nb_downloads');
+ $view->nbUniqueDownloads = (int)$dataActionsRow->getColumn('nb_uniq_downloads');
+ $view->nbOutlinks = (int)$dataActionsRow->getColumn('nb_outlinks');
+ $view->nbUniqueOutlinks = (int)$dataActionsRow->getColumn('nb_uniq_outlinks');
+ $view->averageVisitDuration = $dataRow->getColumn('avg_time_on_site');
+ $nbBouncedVisits = $dataRow->getColumn('bounce_count');
+ $view->bounceRate = Piwik::getPercentageSafe($nbBouncedVisits, $nbVisits);
+ $view->maxActions = (int)$dataRow->getColumn('max_actions');
+ $view->nbActionsPerVisit = $dataRow->getColumn('nb_actions_per_visit');
+
+ if ($displaySiteSearch) {
+ $view->nbSearches = (int)$dataActionsRow->getColumn('nb_searches');
+ $view->nbKeywords = (int)$dataActionsRow->getColumn('nb_keywords');
+ }
+
+ // backward compatibility:
+ // show actions if the finer metrics are not archived
+ $view->showOnlyActions = false;
+ if ($dataActionsRow->getColumn('nb_pageviews')
+ + $dataActionsRow->getColumn('nb_downloads')
+ + $dataActionsRow->getColumn('nb_outlinks') == 0
+ && $dataRow->getColumn('nb_actions') > 0
+ ) {
+ $view->showOnlyActions = true;
+ $view->nbActions = $dataRow->getColumn('nb_actions');
+ $view->urlSparklineNbActions = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('nb_actions')));
+ }
+ }
}
diff --git a/plugins/VisitsSummary/VisitsSummary.php b/plugins/VisitsSummary/VisitsSummary.php
index 816472455b..87b320c947 100644
--- a/plugins/VisitsSummary/VisitsSummary.php
+++ b/plugins/VisitsSummary/VisitsSummary.php
@@ -19,66 +19,66 @@
*/
class Piwik_VisitsSummary extends Piwik_Plugin
{
- public function getInformation()
- {
- $info = array(
- 'description' => Piwik_Translate('VisitsSummary_PluginDescription'),
- 'author' => 'Piwik',
- 'author_homepage' => 'http://piwik.org/',
- 'version' => Piwik_Version::VERSION,
- );
- return $info;
- }
-
- function getListHooksRegistered()
- {
- return array(
- 'API.getReportMetadata' => 'getReportMetadata',
- 'WidgetsList.add' => 'addWidgets',
- 'Menu.add' => 'addMenu',
- );
- }
+ public function getInformation()
+ {
+ $info = array(
+ 'description' => Piwik_Translate('VisitsSummary_PluginDescription'),
+ 'author' => 'Piwik',
+ 'author_homepage' => 'http://piwik.org/',
+ 'version' => Piwik_Version::VERSION,
+ );
+ return $info;
+ }
- /**
- * @param Piwik_Event_Notification $notification notification object
- */
- public function getReportMetadata($notification)
- {
- $reports = &$notification->getNotificationObject();
- $reports[] = array(
- 'category' => Piwik_Translate('VisitsSummary_VisitsSummary'),
- 'name' => Piwik_Translate('VisitsSummary_VisitsSummary'),
- 'module' => 'VisitsSummary',
- 'action' => 'get',
- 'metrics' => array(
- 'nb_uniq_visitors',
- 'nb_visits',
- 'nb_actions',
- 'nb_actions_per_visit',
- 'bounce_rate',
- 'avg_time_on_site' => Piwik_Translate('General_VisitDuration'),
- 'max_actions' => Piwik_Translate('General_ColumnMaxActions'),
+ function getListHooksRegistered()
+ {
+ return array(
+ 'API.getReportMetadata' => 'getReportMetadata',
+ 'WidgetsList.add' => 'addWidgets',
+ 'Menu.add' => 'addMenu',
+ );
+ }
+
+ /**
+ * @param Piwik_Event_Notification $notification notification object
+ */
+ public function getReportMetadata($notification)
+ {
+ $reports = & $notification->getNotificationObject();
+ $reports[] = array(
+ 'category' => Piwik_Translate('VisitsSummary_VisitsSummary'),
+ 'name' => Piwik_Translate('VisitsSummary_VisitsSummary'),
+ 'module' => 'VisitsSummary',
+ 'action' => 'get',
+ 'metrics' => array(
+ 'nb_uniq_visitors',
+ 'nb_visits',
+ 'nb_actions',
+ 'nb_actions_per_visit',
+ 'bounce_rate',
+ 'avg_time_on_site' => Piwik_Translate('General_VisitDuration'),
+ 'max_actions' => Piwik_Translate('General_ColumnMaxActions'),
// Used to process metrics, not displayed/used directly
// 'sum_visit_length',
// 'nb_visits_converted',
- ),
- 'processedMetrics' => false,
- 'order' => 1
- );
- }
-
- function addWidgets()
- {
- Piwik_AddWidget( 'VisitsSummary_VisitsSummary', 'VisitsSummary_WidgetLastVisits', 'VisitsSummary', 'getEvolutionGraph', array('columns' => array('nb_visits')));
- Piwik_AddWidget( 'VisitsSummary_VisitsSummary', 'VisitsSummary_WidgetVisits', 'VisitsSummary', 'getSparklines');
- Piwik_AddWidget( 'VisitsSummary_VisitsSummary', 'VisitsSummary_WidgetOverviewGraph', 'VisitsSummary', 'index');
- }
-
- function addMenu()
- {
- Piwik_AddMenu('General_Visitors', '', array('module' => 'VisitsSummary', 'action' => 'index'), true, 10);
- Piwik_AddMenu('General_Visitors', 'VisitsSummary_SubmenuOverview', array('module' => 'VisitsSummary', 'action' => 'index'), true, 1);
- }
+ ),
+ 'processedMetrics' => false,
+ 'order' => 1
+ );
+ }
+
+ function addWidgets()
+ {
+ Piwik_AddWidget('VisitsSummary_VisitsSummary', 'VisitsSummary_WidgetLastVisits', 'VisitsSummary', 'getEvolutionGraph', array('columns' => array('nb_visits')));
+ Piwik_AddWidget('VisitsSummary_VisitsSummary', 'VisitsSummary_WidgetVisits', 'VisitsSummary', 'getSparklines');
+ Piwik_AddWidget('VisitsSummary_VisitsSummary', 'VisitsSummary_WidgetOverviewGraph', 'VisitsSummary', 'index');
+ }
+
+ function addMenu()
+ {
+ Piwik_AddMenu('General_Visitors', '', array('module' => 'VisitsSummary', 'action' => 'index'), true, 10);
+ Piwik_AddMenu('General_Visitors', 'VisitsSummary_SubmenuOverview', array('module' => 'VisitsSummary', 'action' => 'index'), true, 1);
+ }
}
diff --git a/plugins/VisitsSummary/templates/sparklines.tpl b/plugins/VisitsSummary/templates/sparklines.tpl
index 907e58e918..a0302f407a 100644
--- a/plugins/VisitsSummary/templates/sparklines.tpl
+++ b/plugins/VisitsSummary/templates/sparklines.tpl
@@ -1,58 +1,58 @@
<div id='leftcolumn'>
- <div class="sparkline">
- {sparkline src=$urlSparklineNbVisits}
- {'VisitsSummary_NbVisits'|translate:"<strong>$nbVisits</strong>"}{if $displayUniqueVisitors},
- {'VisitsSummary_NbUniqueVisitors'|translate:"<strong>$nbUniqVisitors</strong>"}{/if}
- </div>
- <div class="sparkline">
- {sparkline src=$urlSparklineAvgVisitDuration}
- {assign var=averageVisitDuration value=$averageVisitDuration|sumtime}
- {'VisitsSummary_AverageVisitDuration'|translate:"<strong>$averageVisitDuration</strong>"}
- </div>
- <div class="sparkline">
- {sparkline src=$urlSparklineBounceRate}
- {'VisitsSummary_NbVisitsBounced'|translate:"<strong>$bounceRate%</strong>"}
- </div>
- <div class="sparkline">
- {sparkline src=$urlSparklineActionsPerVisit}
- {'VisitsSummary_NbActionsPerVisit'|translate:"<strong>$nbActionsPerVisit</strong>"}
- </div>
+ <div class="sparkline">
+ {sparkline src=$urlSparklineNbVisits}
+ {'VisitsSummary_NbVisits'|translate:"<strong>$nbVisits</strong>"}{if $displayUniqueVisitors},
+ {'VisitsSummary_NbUniqueVisitors'|translate:"<strong>$nbUniqVisitors</strong>"}{/if}
+ </div>
+ <div class="sparkline">
+ {sparkline src=$urlSparklineAvgVisitDuration}
+ {assign var=averageVisitDuration value=$averageVisitDuration|sumtime}
+ {'VisitsSummary_AverageVisitDuration'|translate:"<strong>$averageVisitDuration</strong>"}
+ </div>
+ <div class="sparkline">
+ {sparkline src=$urlSparklineBounceRate}
+ {'VisitsSummary_NbVisitsBounced'|translate:"<strong>$bounceRate%</strong>"}
+ </div>
+ <div class="sparkline">
+ {sparkline src=$urlSparklineActionsPerVisit}
+ {'VisitsSummary_NbActionsPerVisit'|translate:"<strong>$nbActionsPerVisit</strong>"}
+ </div>
</div>
<div id='rightcolumn'>
- {if $showOnlyActions}
- <div class="sparkline">
- {sparkline src=$urlSparklineNbActions}
- {'VisitsSummary_NbActionsDescription'|translate:"<strong>$nbActions</strong>"}
- </div>
- {else}
- <div class="sparkline">
- {sparkline src=$urlSparklineNbPageviews}
- {'VisitsSummary_NbPageviewsDescription'|translate:"<strong>$nbPageviews</strong>"|trim},
- {'VisitsSummary_NbUniquePageviewsDescription'|translate:"<strong>$nbUniquePageviews</strong>"}
- </div>
- {if $displaySiteSearch}
- <div class="sparkline">
- {sparkline src=$urlSparklineNbSearches}
- {'VisitsSummary_NbSearchesDescription'|translate:"<strong>$nbSearches</strong>"|trim},
- {'VisitsSummary_NbKeywordsDescription'|translate:"<strong>$nbKeywords</strong>"}
- </div>
- {/if}
- <div class="sparkline">
- {sparkline src=$urlSparklineNbDownloads}
- {'VisitsSummary_NbDownloadsDescription'|translate:"<strong>$nbDownloads</strong>"|trim},
- {'VisitsSummary_NbUniqueDownloadsDescription'|translate:"<strong>$nbUniqueDownloads</strong>"}
- </div>
- <div class="sparkline">
- {sparkline src=$urlSparklineNbOutlinks}
- {'VisitsSummary_NbOutlinksDescription'|translate:"<strong>$nbOutlinks</strong>"|trim},
- {'VisitsSummary_NbUniqueOutlinksDescription'|translate:"<strong>$nbUniqueOutlinks</strong>"}
- </div>
- {/if}
- <div class="sparkline">
- {sparkline src=$urlSparklineMaxActions}
- {'VisitsSummary_MaxNbActions'|translate:"<strong>$maxActions</strong>"}
- </div>
+ {if $showOnlyActions}
+ <div class="sparkline">
+ {sparkline src=$urlSparklineNbActions}
+ {'VisitsSummary_NbActionsDescription'|translate:"<strong>$nbActions</strong>"}
+ </div>
+ {else}
+ <div class="sparkline">
+ {sparkline src=$urlSparklineNbPageviews}
+ {'VisitsSummary_NbPageviewsDescription'|translate:"<strong>$nbPageviews</strong>"|trim},
+ {'VisitsSummary_NbUniquePageviewsDescription'|translate:"<strong>$nbUniquePageviews</strong>"}
+ </div>
+ {if $displaySiteSearch}
+ <div class="sparkline">
+ {sparkline src=$urlSparklineNbSearches}
+ {'VisitsSummary_NbSearchesDescription'|translate:"<strong>$nbSearches</strong>"|trim},
+ {'VisitsSummary_NbKeywordsDescription'|translate:"<strong>$nbKeywords</strong>"}
+ </div>
+ {/if}
+ <div class="sparkline">
+ {sparkline src=$urlSparklineNbDownloads}
+ {'VisitsSummary_NbDownloadsDescription'|translate:"<strong>$nbDownloads</strong>"|trim},
+ {'VisitsSummary_NbUniqueDownloadsDescription'|translate:"<strong>$nbUniqueDownloads</strong>"}
+ </div>
+ <div class="sparkline">
+ {sparkline src=$urlSparklineNbOutlinks}
+ {'VisitsSummary_NbOutlinksDescription'|translate:"<strong>$nbOutlinks</strong>"|trim},
+ {'VisitsSummary_NbUniqueOutlinksDescription'|translate:"<strong>$nbUniqueOutlinks</strong>"}
+ </div>
+ {/if}
+ <div class="sparkline">
+ {sparkline src=$urlSparklineMaxActions}
+ {'VisitsSummary_MaxNbActions'|translate:"<strong>$maxActions</strong>"}
+ </div>
</div>
<div style="clear:both;"></div>