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:
authorBeezyT <timo@ezdesign.de>2011-11-04 18:03:56 +0400
committerBeezyT <timo@ezdesign.de>2011-11-04 18:03:56 +0400
commitf7a2ffc3daae339b3d7bdcb6fb477cc8d3ff5600 (patch)
treead34e24d200f54e94f15edeb8d485ba624a49608 /plugins/VisitsSummary
parent460264a9003701acce15251c52867a63fa021a7a (diff)
refs #1820 metrics picker, refs #1454 using Api.get for cross-plugin evolution graphs
git-svn-id: http://dev.piwik.org/svn/trunk@5408 59fd770c-687e-43c8-a1e3-f5a4ff64c105
Diffstat (limited to 'plugins/VisitsSummary')
-rw-r--r--plugins/VisitsSummary/API.php88
-rw-r--r--plugins/VisitsSummary/Controller.php30
-rw-r--r--plugins/VisitsSummary/VisitsSummary.php6
3 files changed, 37 insertions, 87 deletions
diff --git a/plugins/VisitsSummary/API.php b/plugins/VisitsSummary/API.php
index f4b2c8228c..1063c29e7b 100644
--- a/plugins/VisitsSummary/API.php
+++ b/plugins/VisitsSummary/API.php
@@ -35,28 +35,36 @@ class Piwik_VisitsSummary_API
{
Piwik::checkUserHasViewAccess( $idSite );
$archive = Piwik_Archive::build($idSite, $period, $date, $segment );
-
+
// array values are comma separated
$columns = Piwik::getArrayFromApiParameter($columns);
- $countColumnsRequested = count($columns);
+ $tempColumns = array();
- $allColumns = true;
$bounceRateRequested = $actionsPerVisitRequested = $averageVisitDurationRequested = false;
- if(!empty($columns))
+ if($subsetOfColumns = !empty($columns))
{
- $allColumns = false;
- if(($bounceRateRequested = array_search('bounce_rate', $columns)) !== false)
+ // make sure base metrics are there for processed metrics
+ if(false !== ($bounceRateRequested = array_search('bounce_rate', $columns)))
{
- $columns = array('nb_visits', 'bounce_count');
+ if (!in_array('nb_visits', $columns)) $tempColumns[] = 'nb_visits';
+ if (!in_array('bounce_count', $columns)) $tempColumns[] = 'bounce_count';
+ unset($columns[$bounceRateRequested]);
}
- elseif(($actionsPerVisitRequested = array_search('nb_actions_per_visit', $columns)) !== false)
+ if(false !== ($actionsPerVisitRequested = array_search('nb_actions_per_visit', $columns)))
{
- $columns = array('nb_actions', 'nb_visits');
+ if (!in_array('nb_actions', $columns)) $tempColumns[] = 'nb_actions';
+ if (!in_array('nb_visits', $columns)) $tempColumns[] = 'nb_visits';
+ unset($columns[$actionsPerVisitRequested]);
}
- elseif(($averageVisitDurationRequested = array_search('avg_time_on_site', $columns)) !== false)
+ if(false !== ($averageVisitDurationRequested = array_search('avg_time_on_site', $columns)))
{
- $columns = array('sum_visit_length', 'nb_visits');
+ if (!in_array('sum_visit_length', $columns)) $tempColumns[] = 'sum_visit_length';
+ if (!in_array('nb_visits', $columns)) $tempColumns[] = 'nb_visits';
+ unset($columns[$averageVisitDurationRequested]);
}
+
+ $tempColumns = array_unique($tempColumns);
+ $columns = array_merge($columns, $tempColumns);
}
else
{
@@ -77,7 +85,7 @@ class Piwik_VisitsSummary_API
// 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
@@ -94,60 +102,10 @@ class Piwik_VisitsSummary_API
$dataTable->filter('ColumnCallbackAddColumnQuotient', array('avg_time_on_site', '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($columns);
- }
- return $dataTable;
- }
-
- /**
- * merge the columns of two data tables
- * used to add the action counts to the visits summary
- * manipulates the first table
- */
- private function mergeDataTables($table1, $table2, $allColumns=true, $columns=array())
- {
- // handle table arrays
- if ($table1 instanceof Piwik_DataTable_Array && $table2 instanceof Piwik_DataTable_Array)
- {
- $subTables2 = $table2->getArray();
- foreach ($table1->getArray() as $index => $subTable1)
- {
- $subTable2 = $subTables2[$index];
- $this->mergeDataTables($subTable1, $subTable2);
- }
- return;
- }
-
- $firstRow2 = $table2->getFirstRow();
- if (!$firstRow2)
- {
- // nothing to add
- return;
- }
+ // remove temp metrics that were used to compute processed metrics
+ $dataTable->deleteColumns($tempColumns);
- $firstRow1 = $table1->getFirstRow();
- if (!$firstRow1)
- {
- // first table has no row yet
- $firstRow1 = new Piwik_DataTable_Row;
- $table1->addRow($firstRow1);
- }
-
- foreach ($firstRow2->getColumns() as $metric => $value)
- {
- if (!$allColumns && !in_array($metric, $columns))
- {
- // only add the columns that have been requested
- continue;
- }
- $firstRow1->setColumn($metric, $value);
- }
+ return $dataTable;
}
protected function getNumeric( $idSite, $period, $date, $segment, $toFetch )
diff --git a/plugins/VisitsSummary/Controller.php b/plugins/VisitsSummary/Controller.php
index fb634addb0..8465be2e19 100644
--- a/plugins/VisitsSummary/Controller.php
+++ b/plugins/VisitsSummary/Controller.php
@@ -20,7 +20,8 @@ class Piwik_VisitsSummary_Controller extends Piwik_Controller
{
$view = Piwik_View::factory('index');
$this->setPeriodVariablesView($view);
- $view->graphEvolutionVisitsSummary = $this->getEvolutionGraph( true, array('nb_visits', 'nb_uniq_visitors') );
+ $view->graphEvolutionVisitsSummary = $this->getEvolutionGraph( true,
+ array('VisitsSummary.nb_visits', 'VisitsSummary.nb_uniq_visitors') );
$this->setSparklinesAndNumbers($view);
echo $view->render();
}
@@ -33,17 +34,13 @@ class Piwik_VisitsSummary_Controller extends Piwik_Controller
echo $view->render();
}
- public function getEvolutionGraph( $fetch = false, $columns = false)
+ public function getEvolutionGraph( $fetch = false, $columns = false )
{
- $view = $this->getLastUnitGraph($this->pluginName, __FUNCTION__, "VisitsSummary.get");
if(empty($columns))
{
$columns = Piwik_Common::getRequestVar('columns');
+ $columns = Piwik::getArrayFromApiParameter($columns);
}
- $view->setColumnsToDisplay($columns);
-
- $meta = Piwik_API_API::getInstance()->getMetadata(false, 'VisitsSummary', 'get');
- $view->setColumnsTranslations($meta[0]['metrics']);
$doc = Piwik_Translate('VisitsSummary_VisitsSummaryDocumentation').'<br />'
. Piwik_Translate('General_BrokenDownReportDocumentation').'<br /><br />'
@@ -60,7 +57,8 @@ class Piwik_VisitsSummary_Controller extends Piwik_Controller
. '<b>'.Piwik_Translate('General_ColumnActionsPerVisit').':</b> '
. Piwik_Translate('General_ColumnActionsPerVisitDocumentation');
- $view->setReportDocumentation($doc);
+ $view = $this->getLastUnitGraphAcrossPlugins($this->pluginName, __FUNCTION__, $columns,
+ $selectableColumns = array('VisitsSummary.*', 'Actions.*'), $doc);
return $this->renderView($view, $fetch);
}
@@ -87,14 +85,14 @@ class Piwik_VisitsSummary_Controller extends Piwik_Controller
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')));
+ $view->urlSparklineNbVisits = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => $view->displayUniqueVisitors ? array('VisitsSummary.nb_visits', 'VisitsSummary.nb_uniq_visitors') : array('VisitsSummary.nb_visits')));
+ $view->urlSparklineNbPageviews = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('Actions.nb_pageviews', 'Actions.nb_uniq_pageviews')));
+ $view->urlSparklineNbDownloads = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('Actions.nb_downloads', 'Actions.nb_uniq_downloads')));
+ $view->urlSparklineNbOutlinks = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('Actions.nb_outlinks', 'Actions.nb_uniq_outlinks')));
+ $view->urlSparklineAvgVisitDuration = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('VisitsSummary.avg_time_on_site')));
+ $view->urlSparklineMaxActions = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('VisitsSummary.max_actions')));
+ $view->urlSparklineActionsPerVisit = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('VisitsSummary.nb_actions_per_visit')));
+ $view->urlSparklineBounceRate = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('VisitsSummary.bounce_rate')));
$dataTableVisit = self::getVisitsSummary();
$dataRow = $dataTableVisit->getFirstRow();
diff --git a/plugins/VisitsSummary/VisitsSummary.php b/plugins/VisitsSummary/VisitsSummary.php
index 9d8cd04872..20303a27da 100644
--- a/plugins/VisitsSummary/VisitsSummary.php
+++ b/plugins/VisitsSummary/VisitsSummary.php
@@ -54,12 +54,6 @@ class Piwik_VisitsSummary extends Piwik_Plugin
'nb_actions',
'nb_actions_per_visit',
'bounce_rate',
- 'nb_pageviews' => Piwik_Translate('General_ColumnPageviews'),
- 'nb_uniq_pageviews' => Piwik_Translate('General_ColumnUniquePageviews'),
- 'nb_downloads' => Piwik_Translate('Actions_ColumnDownloads'),
- 'nb_uniq_downloads' => Piwik_Translate('Actions_ColumnUniqueDownloads'),
- 'nb_outlinks' => Piwik_Translate('Actions_ColumnOutlinks'),
- 'nb_uniq_outlinks' => Piwik_Translate('Actions_ColumnUniqueOutlinks'),
'avg_time_on_site' => Piwik_Translate('General_VisitDuration'),
'max_actions' => Piwik_Translate('General_ColumnMaxActions'),
// Used to process metrics, not displayed/used directly