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/API.php | |
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/API.php')
-rw-r--r-- | plugins/VisitsSummary/API.php | 31 |
1 files changed, 30 insertions, 1 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; |