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:
authormattpiwik <matthieu.aubry@gmail.com>2010-07-13 19:44:42 +0400
committermattpiwik <matthieu.aubry@gmail.com>2010-07-13 19:44:42 +0400
commit957d02819f50396696cdf9098fa2e8b362e2757a (patch)
treef88fedbe52f9e92b4263cc141803c18bca0ed2e8 /plugins/VisitsSummary
parent0b7b2d3f61400b4ac3299dbb6c2cd5210179c12f (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.php31
-rw-r--r--plugins/VisitsSummary/Controller.php6
-rw-r--r--plugins/VisitsSummary/VisitsSummary.php6
-rw-r--r--plugins/VisitsSummary/templates/sparklines.tpl5
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>