diff options
author | mattpiwik <matthieu.aubry@gmail.com> | 2010-07-13 19:44:42 +0400 |
---|---|---|
committer | mattpiwik <matthieu.aubry@gmail.com> | 2010-07-13 19:44:42 +0400 |
commit | 957d02819f50396696cdf9098fa2e8b362e2757a (patch) | |
tree | f88fedbe52f9e92b4263cc141803c18bca0ed2e8 /plugins/VisitsSummary | |
parent | 0b7b2d3f61400b4ac3299dbb6c2cd5210179c12f (diff) |
Fixes #1297
* now reporting Actions per visit
* reporting Average Visit duration instead of total visit duration
* removed api getMaxActionsReturning() as it doesn't sound like a useful metric
* udpated tests to test the new metrics
git-svn-id: http://dev.piwik.org/svn/trunk@2494 59fd770c-687e-43c8-a1e3-f5a4ff64c105
Diffstat (limited to 'plugins/VisitsSummary')
-rw-r--r-- | plugins/VisitsSummary/API.php | 31 | ||||
-rw-r--r-- | plugins/VisitsSummary/Controller.php | 6 | ||||
-rw-r--r-- | plugins/VisitsSummary/VisitsSummary.php | 6 | ||||
-rw-r--r-- | plugins/VisitsSummary/templates/sparklines.tpl | 5 |
4 files changed, 42 insertions, 6 deletions
diff --git a/plugins/VisitsSummary/API.php b/plugins/VisitsSummary/API.php index e3ea62e02c..7f4f3dcd80 100644 --- a/plugins/VisitsSummary/API.php +++ b/plugins/VisitsSummary/API.php @@ -32,7 +32,8 @@ class Piwik_VisitsSummary_API Piwik::checkUserHasViewAccess( $idSite ); $archive = Piwik_Archive::build($idSite, $period, $date ); - $bounceRateRequested = false; + $bounceRateRequested = $actionsPerVisitRequested = $averageVisitDurationRequested = false; + $countColumnsRequested = count($columns); if(!empty($columns)) { $toFetch = $columns; @@ -40,9 +41,18 @@ class Piwik_VisitsSummary_API { $toFetch = array('nb_visits', 'bounce_count'); } + elseif(($actionsPerVisitRequested = array_search('nb_actions_per_visit', $toFetch)) !== false) + { + $toFetch = array('nb_actions', 'nb_visits'); + } + elseif(($averageVisitDurationRequested = array_search('avg_visit_length', $toFetch)) !== false) + { + $toFetch = array('sum_visit_length', 'nb_visits'); + } } else { + $bounceRateRequested = $actionsPerVisitRequested = $averageVisitDurationRequested = true; $toFetch = array( 'max_actions', 'nb_uniq_visitors', 'nb_visits', @@ -52,10 +62,29 @@ class Piwik_VisitsSummary_API 'nb_visits_converted', ); } + $dataTable = $archive->getDataTableFromNumeric($toFetch); + + // 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_visit_length', 'sum_visit_length', 'nb_visits', 0)); + } + + // If only a computed metrics was requested, we delete other metrics + // that we selected only to process this one metric + if($countColumnsRequested == 1 + && ($bounceRateRequested || $actionsPerVisitRequested || $averageVisitDurationRequested) + ) + { $dataTable->deleteColumns($toFetch); } return $dataTable; diff --git a/plugins/VisitsSummary/Controller.php b/plugins/VisitsSummary/Controller.php index 80742152ff..bc8549da70 100644 --- a/plugins/VisitsSummary/Controller.php +++ b/plugins/VisitsSummary/Controller.php @@ -67,8 +67,9 @@ class Piwik_VisitsSummary_Controller extends Piwik_Controller { $view->urlSparklineNbVisits = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('nb_visits'))); $view->urlSparklineNbActions = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('nb_actions'))); - $view->urlSparklineSumVisitLength = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('sum_visit_length'))); + $view->urlSparklineAvgVisitDuration = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('avg_visit_length'))); $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'))); $dataTableVisit = self::getVisitsSummary(); @@ -78,9 +79,10 @@ class Piwik_VisitsSummary_Controller extends Piwik_Controller $nbVisits = $dataRow->getColumn('nb_visits'); $view->nbVisits = $nbVisits; $view->nbActions = $dataRow->getColumn('nb_actions'); - $view->sumVisitLength = $dataRow->getColumn('sum_visit_length'); + $view->averageVisitDuration = $dataRow->getColumn('avg_visit_length'); $nbBouncedVisits = $dataRow->getColumn('bounce_count'); $view->bounceRate = Piwik::getPercentageSafe($nbBouncedVisits, $nbVisits); $view->maxActions = $dataRow->getColumn('max_actions'); + $view->nbActionsPerVisit = $dataRow->getColumn('nb_actions_per_visit'); } } diff --git a/plugins/VisitsSummary/VisitsSummary.php b/plugins/VisitsSummary/VisitsSummary.php index a499f7ee65..b95d140c64 100644 --- a/plugins/VisitsSummary/VisitsSummary.php +++ b/plugins/VisitsSummary/VisitsSummary.php @@ -11,7 +11,11 @@ */ /** - * + * Note: This plugin does not hook on Daily and Period Archiving like other Plugins because it reports the + * very core metrics (visits, actions, visit duration, etc.) which are processed in the Core + * Piwik_ArchiveProcessing_Day class directly. + * These metrics can be used by other Plugins so they need to be processed up front. + * * @package Piwik_VisitsSummary */ class Piwik_VisitsSummary extends Piwik_Plugin diff --git a/plugins/VisitsSummary/templates/sparklines.tpl b/plugins/VisitsSummary/templates/sparklines.tpl index 27a629d59d..9ca3776784 100644 --- a/plugins/VisitsSummary/templates/sparklines.tpl +++ b/plugins/VisitsSummary/templates/sparklines.tpl @@ -2,11 +2,12 @@ <div class="sparkline">{sparkline src=$urlSparklineNbVisits} {'VisitsSummary_NbVisits'|translate:"<strong>$nbVisits</strong>"}</div> <div class="sparkline">{sparkline src=$urlSparklineNbUniqVisitors} {'VisitsSummary_NbUniqueVisitors'|translate:"<strong>$nbUniqVisitors</strong>"}</div> <div class="sparkline">{sparkline src=$urlSparklineNbActions} {'VisitsSummary_NbActionsDescription'|translate:"<strong>$nbActions</strong>"}</div> + <div class="sparkline">{sparkline src=$urlSparklineActionsPerVisit} {'VisitsSummary_NbActionsPerVisit'|translate:"<strong>$nbActionsPerVisit</strong>"}</div> </div> <div id='rightcolumn'> - <div class="sparkline">{sparkline src=$urlSparklineSumVisitLength} {assign var=sumtimeVisitLength value=$sumVisitLength|sumtime} {'VisitsSummary_TotalTime'|translate:"<strong>$sumtimeVisitLength</strong>"}</div> - <div class="sparkline">{sparkline src=$urlSparklineMaxActions} {'VisitsSummary_MaxNbActions'|translate:"<strong>$maxActions</strong>"}</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=$urlSparklineMaxActions} {'VisitsSummary_MaxNbActions'|translate:"<strong>$maxActions</strong>"}</div> </div> <div style="clear:both;"></div> |