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:
-rw-r--r--core/DataTable/Renderer/Csv.php1
-rw-r--r--lang/de.php18
-rw-r--r--lang/en.php8
-rw-r--r--plugins/CoreHome/templates/jqplot.js4
-rw-r--r--plugins/Referers/API.php55
-rw-r--r--plugins/Referers/Controller.php58
-rw-r--r--plugins/VisitFrequency/API.php36
-rw-r--r--plugins/VisitFrequency/Controller.php46
-rw-r--r--plugins/VisitFrequency/VisitFrequency.php2
-rw-r--r--plugins/VisitsSummary/API.php2
-rw-r--r--tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_VisitFrequency.get_firstSite_lastN__API.getProcessedReport_day.xml15
-rw-r--r--tests/integration/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml14
-rw-r--r--tests/integration/expected/test_apiGetReportMetadata__API.get_day.xml6
-rw-r--r--tests/integration/expected/test_apiGetReportMetadata_year__API.getReportMetadata_year.xml14
14 files changed, 190 insertions, 89 deletions
diff --git a/core/DataTable/Renderer/Csv.php b/core/DataTable/Renderer/Csv.php
index 57285fb3ea..6a383ec815 100644
--- a/core/DataTable/Renderer/Csv.php
+++ b/core/DataTable/Renderer/Csv.php
@@ -408,7 +408,6 @@ class Piwik_DataTable_Renderer_Csv extends Piwik_DataTable_Renderer
'bounce_count_returning' => 'VisitFrequency_ColumnBounceCountForReturningVisits',
'max_actions' => 'General_ColumnMaxActions',
'max_actions_returning' => 'VisitFrequency_ColumnMaxActionsInReturningVisit',
- 'nb_uniq_visitors_returning' => 'VisitFrequency_ColumnUniqueReturningVisitors',
'nb_visits_converted_returning' => 'VisitFrequency_ColumnNbReturningVisitsConverted',
'sum_visit_length_returning' => 'VisitFrequency_ColumnSumVisitLengthReturning',
'nb_visits_converted' => 'General_ColumnVisitsWithConversions',
diff --git a/lang/de.php b/lang/de.php
index 0899464ca1..722db44a72 100644
--- a/lang/de.php
+++ b/lang/de.php
@@ -580,7 +580,7 @@ $translations = array(
'Goals_ColumnQuantityDocumentation' => 'Quantität ist die Gesamtzahl der Produkte die von %s verkauft wurden.',
'Goals_ColumnOrdersDocumentation' => 'Die Gesamtzahl aller Ecommerce Bestellungen welche %s mindestens einmal enthielten.',
'Goals_ColumnAveragePriceDocumentation' => 'Der Durchschnittsertrag für %s.',
- 'Goals_ColumnAverageQuantityDocumentation' => 'Die Durschnittliche Anzahl von %s verkauft durch Ecommerce Bestellungen.',
+ 'Goals_ColumnAverageQuantityDocumentation' => 'Die durchschnittliche Anzahl von %s verkauft durch Ecommerce Bestellungen.',
'Goals_ColumnVisits' => 'Die Gesamtanzahl an Besuchen, unabhängig davon ob dabei ein Ziel erreicht wurde oder nicht.',
'Goals_GoalX' => 'Ziel %s',
'Goals_GoalConversion' => 'Ziel-Konversion',
@@ -841,12 +841,12 @@ $translations = array(
'Referers_TypeSearchEngines' => '%s von Suchmaschinen',
'Referers_TypeWebsites' => '%s von Webseiten',
'Referers_TypeCampaigns' => '%s von Kampagnen',
- 'Referers_Distinct' => 'Vermittler nach Verweisart unterscheiden',
- 'Referers_DistinctSearchEngines' => 'Suchmaschinen unterscheiden',
- 'Referers_DistinctKeywords' => 'Stichwörter unterscheiden',
- 'Referers_DistinctCampaigns' => 'Kampagnen unterscheiden',
- 'Referers_DistinctWebsites' => 'Webseiten unterscheiden',
- 'Referers_UsingNDistinctUrls' => '(%s zum URL unterscheiden werden verwendet)',
+ 'Referers_Distinct' => 'Unterschiedliche Verweise nach Verweisart',
+ 'Referers_DistinctSearchEngines' => 'verschiedene Suchmaschinen',
+ 'Referers_DistinctKeywords' => 'verschiedene Suchbegriffe',
+ 'Referers_DistinctCampaigns' => 'verschiedene Kampagnen',
+ 'Referers_DistinctWebsites' => 'verschiedene Webseiten',
+ 'Referers_UsingNDistinctUrls' => '(mit %s verschiedenen URLs)',
'Referers_SubmenuOverview' => 'Übersicht',
'Referers_SubmenuSearchEngines' => 'Suchmaschinen und Suchbegriffe',
'Referers_SubmenuWebsites' => 'Webseiten',
@@ -1315,10 +1315,10 @@ $translations = array(
'VisitFrequency_ReturningVisitsDocumentation' => 'Dies ist eine Übersicht über die wiederkehrenden Besuche.',
'VisitFrequency_ReturningVisitDocumentation' => 'Ein wiederkehrender Besuch wird (im Vergleich zu einem neuen Besuch) von jemandem gemacht, der bereits mindestens einmal die Webseite besucht hat.',
'VisitFrequency_ColumnActionsByReturningVisits' => 'Aktionen bei wiederkehrenden Besuchen',
- 'VisitFrequency_ColumnAverageVisitDurationForReturningVisitors' => 'Durchschnittliche Aufenthaltszeit bei wiederkehrenden Besuchen (in Sekunden)',
+ 'VisitFrequency_ColumnAverageVisitDurationForReturningVisitors' => 'Durchschnittszeit von wiederkehrenden Besuchen',
'VisitFrequency_ColumnBounceRateForReturningVisits' => 'Absprungsrate bei wiederkehrenden Besuchen',
'VisitFrequency_ColumnBounceCountForReturningVisits' => 'Absprünge von wiederkehrenden Besuchen',
- 'VisitFrequency_ColumnAvgActionsPerReturningVisit' => 'Durchschnittliche Anzahl an Aktionen bei wiederkehrenden Besuchen',
+ 'VisitFrequency_ColumnAvgActionsPerReturningVisit' => 'Aktionen pro wiederkehrender Besuch',
'VisitFrequency_ColumnMaxActionsInReturningVisit' => 'Maximale Aktionen bei einem wiederkehrenden Besuch',
'VisitFrequency_ColumnUniqueReturningVisitors' => 'Eindeutige wiederkehrende Besucher',
'VisitFrequency_ColumnNbReturningVisitsConverted' => 'Anzahl wiederkehrende Besuche mit Konversion',
diff --git a/lang/en.php b/lang/en.php
index f105d90ce0..0585e94507 100644
--- a/lang/en.php
+++ b/lang/en.php
@@ -1378,10 +1378,10 @@ Note: this token will expire in 24 hrs.',
'VisitFrequency_ReturningVisitsDocumentation' => 'This is an overview of the returning visits.',
'VisitFrequency_ReturningVisitDocumentation' => 'A returning visit is (as opposed to a new visit) made by someone who has visited the website at least once before.',
'VisitFrequency_ColumnActionsByReturningVisits' => 'Actions by Returning Visits',
- 'VisitFrequency_ColumnAverageVisitDurationForReturningVisitors' => 'Avg. Visit Duration for Returning Visitors (in seconds)',
- 'VisitFrequency_ColumnBounceRateForReturningVisits' => 'Bounce rate for returning visits',
- 'VisitFrequency_ColumnBounceCountForReturningVisits' => 'Bounce count for returning visits',
- 'VisitFrequency_ColumnAvgActionsPerReturningVisit' => 'Avg. actions per returning visit',
+ 'VisitFrequency_ColumnAverageVisitDurationForReturningVisitors' => 'Avg. Duration of a Returning Visit (in sec)',
+ 'VisitFrequency_ColumnBounceRateForReturningVisits' => 'Bounce Rate for Returning Visits',
+ 'VisitFrequency_ColumnBounceCountForReturningVisits' => 'Bounce Count for Returning Visits',
+ 'VisitFrequency_ColumnAvgActionsPerReturningVisit' => 'Avg. Actions per Returning Visit',
'VisitFrequency_ColumnMaxActionsInReturningVisit' => 'Maximum actions in one returning visit',
'VisitFrequency_ColumnUniqueReturningVisitors' => 'Unique returning visitors',
'VisitFrequency_ColumnNbReturningVisitsConverted' => 'Number of converted returning visits',
diff --git a/plugins/CoreHome/templates/jqplot.js b/plugins/CoreHome/templates/jqplot.js
index 83c36dacb7..c238d34575 100644
--- a/plugins/CoreHome/templates/jqplot.js
+++ b/plugins/CoreHome/templates/jqplot.js
@@ -947,7 +947,9 @@ JQPlot.prototype = {
// try to display popover to the right
var margin = (parseInt(pickerLink.css('marginLeft'), 10) - 4);
- if (margin + neededSpace < plotWidth) {
+ if (margin + neededSpace < plotWidth
+ // make sure it's not too far to the left
+ || margin - neededSpace + 60 < 0) {
pickerPopover.css('marginLeft', margin + 'px').show();
} else {
// display to the left
diff --git a/plugins/Referers/API.php b/plugins/Referers/API.php
index b61d2b151a..fc23849a32 100644
--- a/plugins/Referers/API.php
+++ b/plugins/Referers/API.php
@@ -54,6 +54,61 @@ class Piwik_Referers_API
return $dataTable;
}
+ /**
+ * This is a combined report that contains one row with the visits per referrer
+ * as columns. It is used internally to make comparing the referrers with the
+ * metrics picker possible.
+ */
+ public function getVisitsPerRefererType($idSite, $period, $date, $segment=false)
+ {
+ $dataTable = $this->getRefererType($idSite, $period, $date, $segment);
+
+ $isDataTableArray = $dataTable instanceof Piwik_DataTable_Array;
+ $result = new Piwik_DataTable_Array;
+
+ if ($isDataTableArray)
+ {
+ $array = $dataTable->getArray();
+ $result->metadata = $dataTable->metadata;
+ }
+ else
+ {
+ $array = array($dataTable);
+ }
+
+ $rowBase = array(
+ 'nb_visits_'.Piwik_Common::REFERER_TYPE_DIRECT_ENTRY => 0,
+ 'nb_visits_'.Piwik_Common::REFERER_TYPE_SEARCH_ENGINE => 0,
+ 'nb_visits_'.Piwik_Common::REFERER_TYPE_WEBSITE => 0,
+ 'nb_visits_'.Piwik_Common::REFERER_TYPE_CAMPAIGN => 0
+ );
+
+ foreach ($array as $tableIndex => $dataTable)
+ {
+ $newTable = new Piwik_DataTable;
+ $columns = $rowBase;
+ foreach ($dataTable->getRows() as $row)
+ {
+ $visits = $row->getColumn(Piwik_Archive::INDEX_NB_VISITS);
+ $refType = $row->getColumn('label');
+ $label = 'nb_visits_'.$refType;
+ $columns[$label] = $visits;
+ }
+ $newTable->addRowFromArray(array(
+ Piwik_DataTable_Row::COLUMNS => $columns
+ ));
+ $result->addTable($newTable, $tableIndex);
+ }
+
+ if (!$isDataTableArray)
+ {
+ $array = $result->getArray();
+ $result = $array[0];
+ }
+
+ return $result;
+ }
+
public function getKeywords($idSite, $period, $date, $segment = false, $expanded = false)
{
$dataTable = $this->getDataTable('Referers_searchEngineByKeyword', $idSite, $period, $date, $segment, $expanded);
diff --git a/plugins/Referers/Controller.php b/plugins/Referers/Controller.php
index 5451744b0f..453feb504d 100644
--- a/plugins/Referers/Controller.php
+++ b/plugins/Referers/Controller.php
@@ -20,7 +20,7 @@ class Piwik_Referers_Controller extends Piwik_Controller
{
$view = Piwik_View::factory('index');
- $view->graphEvolutionReferers = $this->getEvolutionGraph(true, Piwik_Common::REFERER_TYPE_DIRECT_ENTRY, array('nb_visits'));
+ $view->graphEvolutionReferers = $this->getEvolutionGraph(true, Piwik_Common::REFERER_TYPE_DIRECT_ENTRY);
$view->nameGraphEvolutionReferers = 'ReferersgetEvolutionGraph';
$view->numberDistinctSearchEngines = $this->getNumberOfDistinctSearchEngines(true);
@@ -38,10 +38,10 @@ class Piwik_Referers_Controller extends Piwik_Controller
$view->$name = $value;
}
// sparkline for the historical data of the above values
- $view->urlSparklineSearchEngines = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('nb_visits'), 'typeReferer' => Piwik_Common::REFERER_TYPE_SEARCH_ENGINE));
- $view->urlSparklineDirectEntry = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('nb_visits'), 'typeReferer' => Piwik_Common::REFERER_TYPE_DIRECT_ENTRY));
- $view->urlSparklineWebsites = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('nb_visits'), 'typeReferer' => Piwik_Common::REFERER_TYPE_WEBSITE));
- $view->urlSparklineCampaigns = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('nb_visits'), 'typeReferer' => Piwik_Common::REFERER_TYPE_CAMPAIGN));
+ $view->urlSparklineSearchEngines = $this->getUrlSparkline('getEvolutionGraph', array('typeReferer' => Piwik_Common::REFERER_TYPE_SEARCH_ENGINE));
+ $view->urlSparklineDirectEntry = $this->getUrlSparkline('getEvolutionGraph', array('typeReferer' => Piwik_Common::REFERER_TYPE_DIRECT_ENTRY));
+ $view->urlSparklineWebsites = $this->getUrlSparkline('getEvolutionGraph', array('typeReferer' => Piwik_Common::REFERER_TYPE_WEBSITE));
+ $view->urlSparklineCampaigns = $this->getUrlSparkline('getEvolutionGraph', array('typeReferer' => Piwik_Common::REFERER_TYPE_CAMPAIGN));
// sparklines for the evolution of the distinct keywords count/websites count/ etc
$view->urlSparklineDistinctSearchEngines = $this->getUrlSparkline('getLastDistinctSearchEnginesGraph');
@@ -246,36 +246,48 @@ class Piwik_Referers_Controller extends Piwik_Controller
Piwik_Common::REFERER_TYPE_CAMPAIGN => 'Referers_Campaigns',
);
- public function getEvolutionGraph( $fetch = false, $typeReferer = false, $columns = false)
+ public function getEvolutionGraph( $fetch = false, $typeReferer = false, $columns = array() )
{
- $view = $this->getLastUnitGraph($this->pluginName, __FUNCTION__, 'Referers.getRefererType');
- if(empty($typeReferer))
+ $view = $this->getLastUnitGraph($this->pluginName, __FUNCTION__, 'Referers.getVisitsPerRefererType');
+
+ $typeReferrerRequest = Piwik_Common::getRequestVar('typeReferer', false);
+ if ($typeReferrerRequest !== false)
{
- $typeReferer = Piwik_Common::getRequestVar('typeReferer');
+ $typeReferer = $typeReferrerRequest;
}
+
if(empty($columns))
{
- $columns = Piwik_Common::getRequestVar('columns');
+ $columns = Piwik_Common::getRequestVar('columns', false);
+ $columns = Piwik::getArrayFromApiParameter($columns);
+ }
+
+ // if referrer type is set, transform it into the corresponding column name
+ if ($typeReferer !== false)
+ {
+ $columns[] = 'nb_visits_'.$typeReferer;
}
- $columns = !is_array($columns) ? array($columns) : $columns;
+
$view->setColumnsToDisplay($columns);
- $view->setParametersToModify(array('typeReferer' => $typeReferer));
- foreach($columns as $columnName)
+
+ $translations = array();
+ $selectableColumns = array();
+ foreach ($this->referrerTypeToLabel as $id => $langString)
{
- $columnTranslation = $view->getColumnTranslation($columnName);
- $referrerTypeTranslation = $this->referrerTypeToLabel[$typeReferer];
- $view->setColumnTranslation(
- $columnName,
- Piwik_Translate('Referers_MetricsFromRefererTypeGraphLegend',
- array( Piwik_Translate($columnTranslation),
- Piwik_Translate($referrerTypeTranslation)
- )
- )
- );
+ $label = 'nb_visits_'.$id;
+ $selectableColumns[] = $label;
+
+ $translations[$label] = Piwik_Translate('Referers_MetricsFromRefererTypeGraphLegend',
+ array(Piwik_Translate('General_ColumnNbVisits'), Piwik_Translate($langString)));
}
+
+ $view->setColumnsTranslations($translations);
+ $view->setSelectableColumns($selectableColumns);
+
$view->setReportDocumentation(Piwik_Translate('Referers_EvolutionDocumentation').'<br />'
.Piwik_Translate('General_BrokenDownReportDocumentation').'<br />'
.Piwik_Translate('Referers_EvolutionDocumentationMoreInfo', '&quot;'.Piwik_Translate('Referers_DetailsByRefererType').'&quot;'));
+
return $this->renderView($view, $fetch);
}
diff --git a/plugins/VisitFrequency/API.php b/plugins/VisitFrequency/API.php
index d6212b4793..30e909de47 100644
--- a/plugins/VisitFrequency/API.php
+++ b/plugins/VisitFrequency/API.php
@@ -31,24 +31,35 @@ class Piwik_VisitFrequency_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();
$bounceRateReturningRequested = $averageVisitDurationReturningRequested = $actionsPerVisitReturningRequested = false;
if(!empty($columns))
{
- if(($bounceRateReturningRequested = array_search('bounce_rate_returning', $columns)) !== false)
+ // make sure base metrics are there for processed metrics
+ if(false !== ($bounceRateReturningRequested = array_search('bounce_rate_returning', $columns)))
{
- $columns = array('nb_visits_returning', 'bounce_count_returning');
+ if (!in_array('nb_visits_returning', $columns)) $tempColumns[] = 'nb_visits_returning';
+ if (!in_array('bounce_count_returning', $columns)) $tempColumns[] = 'bounce_count_returning';
+ unset($columns[$bounceRateReturningRequested]);
}
- elseif(($actionsPerVisitReturningRequested = array_search('nb_actions_per_visit_returning', $columns)) !== false)
+ if(false !== ($actionsPerVisitReturningRequested = array_search('nb_actions_per_visit_returning', $columns)))
{
- $columns = array('nb_actions_returning', 'nb_visits_returning');
+ if (!in_array('nb_actions_returning', $columns)) $tempColumns[] = 'nb_actions_returning';
+ if (!in_array('nb_visits_returning', $columns)) $tempColumns[] = 'nb_visits_returning';
+ unset($columns[$actionsPerVisitReturningRequested]);
}
- elseif(($averageVisitDurationReturningRequested = array_search('avg_time_on_site_returning', $columns)) !== false)
+ if(false !== ($averageVisitDurationReturningRequested = array_search('avg_time_on_site_returning', $columns)))
{
- $columns = array('sum_visit_length_returning', 'nb_visits_returning');
+ if (!in_array('sum_visit_length_returning', $columns)) $tempColumns[] = 'sum_visit_length_returning';
+ if (!in_array('nb_visits_returning', $columns)) $tempColumns[] = 'nb_visits_returning';
+ unset($columns[$averageVisitDurationReturningRequested]);
}
+
+ $tempColumns = array_unique($tempColumns);
+ $columns = array_merge($columns, $tempColumns);
}
else
{
@@ -83,14 +94,9 @@ class Piwik_VisitFrequency_API
$dataTable->filter('ColumnCallbackAddColumnQuotient', array('avg_time_on_site_returning', 'sum_visit_length_returning', 'nb_visits_returning', 0));
}
- // If only a computed metrics was requested, we delete other metrics
- // that we selected only to process this one metric
- if($countColumnsRequested == 1
- && ($bounceRateReturningRequested || $averageVisitDurationReturningRequested || $actionsPerVisitReturningRequested)
- )
- {
- $dataTable->deleteColumns($columns);
- }
+ // remove temporary metrics that were used to compute processed metrics
+ $dataTable->deleteColumns($tempColumns);
+
return $dataTable;
}
diff --git a/plugins/VisitFrequency/Controller.php b/plugins/VisitFrequency/Controller.php
index 526dd9076b..d8339176ab 100644
--- a/plugins/VisitFrequency/Controller.php
+++ b/plugins/VisitFrequency/Controller.php
@@ -33,25 +33,45 @@ class Piwik_VisitFrequency_Controller extends Piwik_Controller
public function getEvolutionGraph( $fetch = false, $columns = false)
{
- $view = $this->getLastUnitGraph($this->pluginName, __FUNCTION__, "VisitFrequency.get");
if(empty($columns))
{
$columns = Piwik_Common::getRequestVar('columns');
+ $columns = Piwik::getArrayFromApiParameter($columns);
}
- $view->setColumnsToDisplay($columns);
- $view->setColumnsTranslations(array(
- 'nb_visits_returning' => Piwik_Translate('VisitFrequency_ColumnReturningVisits'),
- 'nb_actions_returning' => Piwik_Translate('VisitFrequency_ColumnActionsByReturningVisits'),
- 'avg_time_on_site_returning' => Piwik_Translate('VisitFrequency_ColumnAverageVisitDurationForReturningVisitors'),
- 'bounce_rate_returning' => Piwik_Translate('VisitFrequency_ColumnBounceRateForReturningVisits'),
- 'nb_actions_per_visit_returning' => Piwik_Translate('VisitFrequency_ColumnAvgActionsPerReturningVisit'),
- ));
- $doc = Piwik_Translate('VisitFrequency_ReturningVisitsDocumentation').'<br />'
- . Piwik_Translate('General_BrokenDownReportDocumentation').'<br />'
- . Piwik_Translate('VisitFrequency_ReturningVisitDocumentation');
+ $documentation = Piwik_Translate('VisitFrequency_ReturningVisitsDocumentation').'<br />'
+ . Piwik_Translate('General_BrokenDownReportDocumentation').'<br />'
+ . Piwik_Translate('VisitFrequency_ReturningVisitDocumentation');
- $view->setReportDocumentation($doc);
+ $selectableColumns = array(
+ // columns from VisitFrequency.get
+ 'nb_visits_returning',
+ 'nb_actions_returning',
+ 'nb_actions_per_visit_returning',
+ 'bounce_rate_returning',
+ 'avg_time_on_site_returning',
+ // columns from VisitsSummary.get
+ 'nb_visits',
+ 'nb_actions',
+ 'nb_actions_per_visit',
+ 'bounce_rate',
+ 'avg_time_on_site'
+ );
+
+ $period = Piwik_Common::getRequestVar('period', false);
+ if ($period == 'day')
+ {
+ // add number of unique (returning) visitors for period=day
+ $selectableColumns = array_merge(
+ array($selectableColumns[0]),
+ array('nb_uniq_visitors_returning'),
+ array_slice($selectableColumns, 1, -4),
+ array('nb_uniq_visitors'),
+ array_slice($selectableColumns, -4));
+ }
+
+ $view = $this->getLastUnitGraphAcrossPlugins($this->pluginName, __FUNCTION__, $columns,
+ $selectableColumns, $documentation);
return $this->renderView($view, $fetch);
}
diff --git a/plugins/VisitFrequency/VisitFrequency.php b/plugins/VisitFrequency/VisitFrequency.php
index d731a428be..74b5d54435 100644
--- a/plugins/VisitFrequency/VisitFrequency.php
+++ b/plugins/VisitFrequency/VisitFrequency.php
@@ -53,8 +53,8 @@ class Piwik_VisitFrequency extends Piwik_Plugin
'avg_time_on_site_returning' => Piwik_Translate('VisitFrequency_ColumnAverageVisitDurationForReturningVisitors'),
'bounce_rate_returning' => Piwik_Translate('VisitFrequency_ColumnBounceRateForReturningVisits'),
'nb_actions_per_visit_returning' => Piwik_Translate('VisitFrequency_ColumnAvgActionsPerReturningVisit'),
+ 'nb_uniq_visitors_returning' => Piwik_Translate('VisitFrequency_ColumnUniqueReturningVisitors'),
// Not displayed
-// 'nb_uniq_visitors_returning',
// 'nb_visits_converted_returning',
// 'sum_visit_length_returning',
// 'max_actions_returning',
diff --git a/plugins/VisitsSummary/API.php b/plugins/VisitsSummary/API.php
index 1063c29e7b..28495d9a45 100644
--- a/plugins/VisitsSummary/API.php
+++ b/plugins/VisitsSummary/API.php
@@ -41,7 +41,7 @@ class Piwik_VisitsSummary_API
$tempColumns = array();
$bounceRateRequested = $actionsPerVisitRequested = $averageVisitDurationRequested = false;
- if($subsetOfColumns = !empty($columns))
+ if(!empty($columns))
{
// make sure base metrics are there for processed metrics
if(false !== ($bounceRateRequested = array_search('bounce_rate', $columns)))
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_VisitFrequency.get_firstSite_lastN__API.getProcessedReport_day.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_VisitFrequency.get_firstSite_lastN__API.getProcessedReport_day.xml
index 1023c67df1..db9bad0898 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_VisitFrequency.get_firstSite_lastN__API.getProcessedReport_day.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_VisitFrequency.get_firstSite_lastN__API.getProcessedReport_day.xml
@@ -10,9 +10,10 @@
<metrics>
<nb_visits_returning>Returning Visits</nb_visits_returning>
<nb_actions_returning>Actions by Returning Visits</nb_actions_returning>
- <avg_time_on_site_returning>Avg. Visit Duration for Returning Visitors (in seconds)</avg_time_on_site_returning>
- <bounce_rate_returning>Bounce rate for returning visits</bounce_rate_returning>
- <nb_actions_per_visit_returning>Avg. actions per returning visit</nb_actions_per_visit_returning>
+ <avg_time_on_site_returning>Avg. Duration of a Returning Visit (in sec)</avg_time_on_site_returning>
+ <bounce_rate_returning>Bounce Rate for Returning Visits</bounce_rate_returning>
+ <nb_actions_per_visit_returning>Avg. Actions per Returning Visit</nb_actions_per_visit_returning>
+ <nb_uniq_visitors_returning>Unique returning visitors</nb_uniq_visitors_returning>
</metrics>
<metricsDocumentation>
@@ -35,9 +36,10 @@
<columns>
<nb_visits_returning>Returning Visits</nb_visits_returning>
<nb_actions_returning>Actions by Returning Visits</nb_actions_returning>
- <avg_time_on_site_returning>Avg. Visit Duration for Returning Visitors (in seconds)</avg_time_on_site_returning>
- <bounce_rate_returning>Bounce rate for returning visits</bounce_rate_returning>
- <nb_actions_per_visit_returning>Avg. actions per returning visit</nb_actions_per_visit_returning>
+ <avg_time_on_site_returning>Avg. Duration of a Returning Visit (in sec)</avg_time_on_site_returning>
+ <bounce_rate_returning>Bounce Rate for Returning Visits</bounce_rate_returning>
+ <nb_actions_per_visit_returning>Avg. Actions per Returning Visit</nb_actions_per_visit_returning>
+ <nb_uniq_visitors_returning>Unique returning visitors</nb_uniq_visitors_returning>
</columns>
<reportData>
@@ -45,6 +47,7 @@
<result prettyDate="Monday 4 January 2010" />
<result prettyDate="Tuesday 5 January 2010">
<nb_actions_returning>5</nb_actions_returning>
+ <nb_uniq_visitors_returning>1</nb_uniq_visitors_returning>
<nb_visits_returning>1</nb_visits_returning>
<bounce_rate_returning>0%</bounce_rate_returning>
<nb_actions_per_visit_returning>5</nb_actions_per_visit_returning>
diff --git a/tests/integration/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml b/tests/integration/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml
index 822ca90736..99af9c8995 100644
--- a/tests/integration/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml
+++ b/tests/integration/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml
@@ -21,9 +21,10 @@
<max_actions>Maximum actions in one visit</max_actions>
<nb_visits_returning>Returning Visits</nb_visits_returning>
<nb_actions_returning>Actions by Returning Visits</nb_actions_returning>
- <avg_time_on_site_returning>Avg. Visit Duration for Returning Visitors (in seconds)</avg_time_on_site_returning>
- <bounce_rate_returning>Bounce rate for returning visits</bounce_rate_returning>
- <nb_actions_per_visit_returning>Avg. actions per returning visit</nb_actions_per_visit_returning>
+ <avg_time_on_site_returning>Avg. Duration of a Returning Visit (in sec)</avg_time_on_site_returning>
+ <bounce_rate_returning>Bounce Rate for Returning Visits</bounce_rate_returning>
+ <nb_actions_per_visit_returning>Avg. Actions per Returning Visit</nb_actions_per_visit_returning>
+ <nb_uniq_visitors_returning>Unique returning visitors</nb_uniq_visitors_returning>
<nb_conversions>Abandoned Carts</nb_conversions>
<nb_visits_converted>Visits with Conversions</nb_visits_converted>
<conversion_rate>Conversion Rate</conversion_rate>
@@ -1191,9 +1192,10 @@
<metrics>
<nb_visits_returning>Returning Visits</nb_visits_returning>
<nb_actions_returning>Actions by Returning Visits</nb_actions_returning>
- <avg_time_on_site_returning>Avg. Visit Duration for Returning Visitors (in seconds)</avg_time_on_site_returning>
- <bounce_rate_returning>Bounce rate for returning visits</bounce_rate_returning>
- <nb_actions_per_visit_returning>Avg. actions per returning visit</nb_actions_per_visit_returning>
+ <avg_time_on_site_returning>Avg. Duration of a Returning Visit (in sec)</avg_time_on_site_returning>
+ <bounce_rate_returning>Bounce Rate for Returning Visits</bounce_rate_returning>
+ <nb_actions_per_visit_returning>Avg. Actions per Returning Visit</nb_actions_per_visit_returning>
+ <nb_uniq_visitors_returning>Unique returning visitors</nb_uniq_visitors_returning>
</metrics>
<metricsDocumentation>
diff --git a/tests/integration/expected/test_apiGetReportMetadata__API.get_day.xml b/tests/integration/expected/test_apiGetReportMetadata__API.get_day.xml
index 724e8459e4..9bde2b3b80 100644
--- a/tests/integration/expected/test_apiGetReportMetadata__API.get_day.xml
+++ b/tests/integration/expected/test_apiGetReportMetadata__API.get_day.xml
@@ -18,9 +18,9 @@
<conversion_rate>100</conversion_rate>
<revenue>42.26</revenue>
<nb_visits_returning>0</nb_visits_returning>
- <bounce_count_returning>0</bounce_count_returning>
- <bounce_rate_returning>0%</bounce_rate_returning>
<nb_actions_returning>0</nb_actions_returning>
- <avg_time_on_site_returning>0</avg_time_on_site_returning>
+ <nb_uniq_visitors_returning>0</nb_uniq_visitors_returning>
+ <bounce_rate_returning>0%</bounce_rate_returning>
<nb_actions_per_visit_returning>0</nb_actions_per_visit_returning>
+ <avg_time_on_site_returning>0</avg_time_on_site_returning>
</result> \ No newline at end of file
diff --git a/tests/integration/expected/test_apiGetReportMetadata_year__API.getReportMetadata_year.xml b/tests/integration/expected/test_apiGetReportMetadata_year__API.getReportMetadata_year.xml
index 7f2494c98e..f0640715a3 100644
--- a/tests/integration/expected/test_apiGetReportMetadata_year__API.getReportMetadata_year.xml
+++ b/tests/integration/expected/test_apiGetReportMetadata_year__API.getReportMetadata_year.xml
@@ -21,9 +21,10 @@
<max_actions>Maximum actions in one visit</max_actions>
<nb_visits_returning>Returning Visits</nb_visits_returning>
<nb_actions_returning>Actions by Returning Visits</nb_actions_returning>
- <avg_time_on_site_returning>Avg. Visit Duration for Returning Visitors (in seconds)</avg_time_on_site_returning>
- <bounce_rate_returning>Bounce rate for returning visits</bounce_rate_returning>
- <nb_actions_per_visit_returning>Avg. actions per returning visit</nb_actions_per_visit_returning>
+ <avg_time_on_site_returning>Avg. Duration of a Returning Visit (in sec)</avg_time_on_site_returning>
+ <bounce_rate_returning>Bounce Rate for Returning Visits</bounce_rate_returning>
+ <nb_actions_per_visit_returning>Avg. Actions per Returning Visit</nb_actions_per_visit_returning>
+ <nb_uniq_visitors_returning>Unique returning visitors</nb_uniq_visitors_returning>
<nb_conversions>Conversions</nb_conversions>
<nb_visits_converted>Visits with Conversions</nb_visits_converted>
<conversion_rate>Conversion Rate</conversion_rate>
@@ -839,9 +840,10 @@
<metrics>
<nb_visits_returning>Returning Visits</nb_visits_returning>
<nb_actions_returning>Actions by Returning Visits</nb_actions_returning>
- <avg_time_on_site_returning>Avg. Visit Duration for Returning Visitors (in seconds)</avg_time_on_site_returning>
- <bounce_rate_returning>Bounce rate for returning visits</bounce_rate_returning>
- <nb_actions_per_visit_returning>Avg. actions per returning visit</nb_actions_per_visit_returning>
+ <avg_time_on_site_returning>Avg. Duration of a Returning Visit (in sec)</avg_time_on_site_returning>
+ <bounce_rate_returning>Bounce Rate for Returning Visits</bounce_rate_returning>
+ <nb_actions_per_visit_returning>Avg. Actions per Returning Visit</nb_actions_per_visit_returning>
+ <nb_uniq_visitors_returning>Unique returning visitors</nb_uniq_visitors_returning>
</metrics>
<metricsDocumentation>