From 56150c70bc63fe68d535ad45cad55872899aa3e4 Mon Sep 17 00:00:00 2001
From: mattpiwik <matthieu.aubry@gmail.com>
Date: Sat, 3 Dec 2011 04:19:43 +0000
Subject: [PATCH] Fixes #2811  * Ensuring column names stay in same order when
 idsites=all  * adding empty columns when they are not set

git-svn-id: http://dev.piwik.org/svn/trunk@5519 59fd770c-687e-43c8-a1e3-f5a4ff64c105
---
 core/Archive/Array/IndexedBySite.php            |   8 ++++++++
 core/DataTable/Row.php                          |   3 ++-
 plugins/VisitsSummary/API.php                   |  14 ++++++--------
 ...eVisitorTwoVisits__VisitsSummary.get_day.xml |   2 +-
 ...withCookieSupport__VisitsSummary.get_day.xml |   2 +-
 ...sCampaignTracking__VisitsSummary.get_day.xml |   2 +-
 ...led_disabledAfter__VisitsSummary.get_day.xml |   8 +++++---
 ...d_disabledAfter__VisitsSummary.get_month.xml |  13 ++++++++-----
 ...ed_disabledAfter__VisitsSummary.get_week.xml |   8 +++++---
 ...ed_disabledAfter__VisitsSummary.get_year.xml |  13 ++++++++-----
 ...gDisabled_enabled__VisitsSummary.get_day.xml |   8 +++++---
 ...isabled_enabled__VisitsSummary.get_month.xml |  13 ++++++++-----
 ...Disabled_enabled__VisitsSummary.get_week.xml |   8 +++++---
 ...Disabled_enabled__VisitsSummary.get_year.xml |  13 ++++++++-----
 ...s_NotLastNPeriods__VisitsSummary.get_day.xml |   7 ++++---
 ...NotLastNPeriods__VisitsSummary.get_month.xml |  11 ++++++-----
 ...s_NotLastNPeriods__VisitsSummary.get_day.xml |   8 +++++---
 ...NotLastNPeriods__VisitsSummary.get_month.xml |  13 ++++++++-----
 .../test_apiGetReportMetadata__API.get_day.xml  |   2 +-
 ...est_csvExport_xp0__VisitsSummary.get_day.csv | Bin 356 -> 356 bytes
 ...1_inner0_trans-en__VisitsSummary.get_day.csv | Bin 450 -> 450 bytes
 ...1_inner1_trans-de__VisitsSummary.get_day.csv | Bin 514 -> 514 bytes
 ...mentAbandonedCart__VisitsSummary.get_day.xml |   2 +-
 ...tConvertedGoalId1__VisitsSummary.get_day.xml |   2 +-
 ...ConvertedGoalId1__VisitsSummary.get_week.xml |   2 +-
 ...NotConvertGoalId1__VisitsSummary.get_day.xml |   2 +-
 ...gmentNewVisitors__VisitsSummary.get_week.xml |   2 +-
 ...egmentNoEcommerce__VisitsSummary.get_day.xml |   2 +-
 ...tOrderedSomething__VisitsSummary.get_day.xml |   2 +-
 ...entPageTitleMatch__VisitsSummary.get_day.xml |   2 +-
 ...turningCustomers__VisitsSummary.get_week.xml |   2 +-
 ...eturningVisitors__VisitsSummary.get_week.xml |   2 +-
 ...rceOrderWithItems__VisitsSummary.get_day.xml |   2 +-
 .../test_noVisit__VisitsSummary.get_day.xml     |   2 +-
 ...nversionsPerVisit__VisitsSummary.get_day.xml |   2 +-
 35 files changed, 108 insertions(+), 74 deletions(-)

diff --git a/core/Archive/Array/IndexedBySite.php b/core/Archive/Array/IndexedBySite.php
index 25f5202f04..6742d702cd 100644
--- a/core/Archive/Array/IndexedBySite.php
+++ b/core/Archive/Array/IndexedBySite.php
@@ -85,9 +85,17 @@ class Piwik_Archive_Array_IndexedBySite extends Piwik_Archive_Array
 
 	private function getValues($fields)
 	{
+		// Creating the default array, to ensure consistent order
+		$defaultValues = array();
+		foreach($fields as $field) { $defaultValues[$field] = null; }
+		
 		$arrayValues = array();
 		foreach($this->loadValuesFromDB($fields) as $value)
  		{
+ 			if(!isset($arrayValues[$value['idsite']]))
+ 			{
+ 				$arrayValues[$value['idsite']] = $defaultValues;
+ 			}
 			$arrayValues[$value['idsite']][$value['name']] = $value['value'];
  		}
 		return $arrayValues;
diff --git a/core/DataTable/Row.php b/core/DataTable/Row.php
index c6a0a173f3..ad524c71ef 100644
--- a/core/DataTable/Row.php
+++ b/core/DataTable/Row.php
@@ -147,8 +147,9 @@ class Piwik_DataTable_Row
 		if(isset($this->c[self::COLUMNS][$oldName]))
 		{
 			$this->c[self::COLUMNS][$newName] = $this->c[self::COLUMNS][$oldName];
-			unset($this->c[self::COLUMNS][$oldName]);
 		}
+		// outside the if() since we want to delete nulled columns
+		unset($this->c[self::COLUMNS][$oldName]);
 	}
 	
 	/**
diff --git a/plugins/VisitsSummary/API.php b/plugins/VisitsSummary/API.php
index 0f83a8d593..a0925db38e 100644
--- a/plugins/VisitsSummary/API.php
+++ b/plugins/VisitsSummary/API.php
@@ -52,36 +52,34 @@ class Piwik_VisitsSummary_API
 			}
 			if(false !== ($actionsPerVisitRequested = array_search('nb_actions_per_visit', $columns)))
 			{
-				if (!in_array('nb_actions', $columns)) $tempColumns[] = 'nb_actions';
 				if (!in_array('nb_visits', $columns)) $tempColumns[] = 'nb_visits';
+				if (!in_array('nb_actions', $columns)) $tempColumns[] = 'nb_actions';
 				unset($columns[$actionsPerVisitRequested]);
 			}
 			if(false !== ($averageVisitDurationRequested = array_search('avg_time_on_site', $columns)))
 			{
-				if (!in_array('sum_visit_length', $columns)) $tempColumns[] = 'sum_visit_length';
 				if (!in_array('nb_visits', $columns)) $tempColumns[] = 'nb_visits';
+				if (!in_array('sum_visit_length', $columns)) $tempColumns[] = 'sum_visit_length';
 				unset($columns[$averageVisitDurationRequested]);
 			}
-			
 			$tempColumns = array_unique($tempColumns);
+			rsort($tempColumns);
 			$columns = array_merge($columns, $tempColumns);
-			rsort($columns);
 		}
 		else
 		{
     		$bounceRateRequested = $actionsPerVisitRequested = $averageVisitDurationRequested = true;
 			$columns = array(
 								'nb_visits',
-								'nb_uniq_visitors',
 								'nb_actions',
 								'nb_visits_converted',
 								'bounce_count',
 								'sum_visit_length',
 								'max_actions'
 							);
-			if(!Piwik::isUniqueVisitorsEnabled($period))
+			if(Piwik::isUniqueVisitorsEnabled($period))
 			{
-				unset($columns[array_search('nb_uniq_visitors', $columns)]);
+				$columns = array_merge(array('nb_uniq_visitors'), $columns);
 			}
 			// Force reindex from 0 to N otherwise the SQL bind will fail
 			$columns = array_values($columns);
@@ -102,7 +100,7 @@ class Piwik_VisitsSummary_API
 		{
 			$dataTable->filter('ColumnCallbackAddColumnQuotient', array('avg_time_on_site', 'sum_visit_length', 'nb_visits', 0));
 		}
-		
+
 		// remove temp metrics that were used to compute processed metrics
 		$dataTable->deleteColumns($tempColumns);
 		
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits__VisitsSummary.get_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits__VisitsSummary.get_day.xml
index c99ffe940b..6437d492e5 100644
--- a/tests/integration/expected/test_OneVisitorTwoVisits__VisitsSummary.get_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits__VisitsSummary.get_day.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <result>
-	<nb_visits>2</nb_visits>
 	<nb_uniq_visitors>1</nb_uniq_visitors>
+	<nb_visits>2</nb_visits>
 	<nb_actions>6</nb_actions>
 	<nb_visits_converted>2</nb_visits_converted>
 	<bounce_count>1</bounce_count>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitsSummary.get_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitsSummary.get_day.xml
index c99ffe940b..6437d492e5 100644
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitsSummary.get_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitsSummary.get_day.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <result>
-	<nb_visits>2</nb_visits>
 	<nb_uniq_visitors>1</nb_uniq_visitors>
+	<nb_visits>2</nb_visits>
 	<nb_actions>6</nb_actions>
 	<nb_visits_converted>2</nb_visits_converted>
 	<bounce_count>1</bounce_count>
diff --git a/tests/integration/expected/test_PiwikTracker_trackForceUsingVisitId_insteadOfHeuristics_alsoTestsCampaignTracking__VisitsSummary.get_day.xml b/tests/integration/expected/test_PiwikTracker_trackForceUsingVisitId_insteadOfHeuristics_alsoTestsCampaignTracking__VisitsSummary.get_day.xml
index 09eda990f2..35fb370337 100644
--- a/tests/integration/expected/test_PiwikTracker_trackForceUsingVisitId_insteadOfHeuristics_alsoTestsCampaignTracking__VisitsSummary.get_day.xml
+++ b/tests/integration/expected/test_PiwikTracker_trackForceUsingVisitId_insteadOfHeuristics_alsoTestsCampaignTracking__VisitsSummary.get_day.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <result>
-	<nb_visits>1</nb_visits>
 	<nb_uniq_visitors>1</nb_uniq_visitors>
+	<nb_visits>1</nb_visits>
 	<nb_actions>1</nb_actions>
 	<nb_visits_converted>1</nb_visits_converted>
 	<bounce_count>1</bounce_count>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_disabledAfter__VisitsSummary.get_day.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_disabledAfter__VisitsSummary.get_day.xml
index c01069b78a..2b01191d5b 100755
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_disabledAfter__VisitsSummary.get_day.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_disabledAfter__VisitsSummary.get_day.xml
@@ -1,11 +1,13 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <results>
 	<result idSite="1">
-		<bounce_count>1</bounce_count>
-		<max_actions>1</max_actions>
-		<nb_actions>1</nb_actions>
 		<nb_uniq_visitors>1</nb_uniq_visitors>
 		<nb_visits>1</nb_visits>
+		<nb_actions>1</nb_actions>
+		<nb_visits_converted />
+		<bounce_count>1</bounce_count>
+		<sum_visit_length />
+		<max_actions>1</max_actions>
 		<bounce_rate>100%</bounce_rate>
 		<nb_actions_per_visit>1</nb_actions_per_visit>
 		<avg_time_on_site>0</avg_time_on_site>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_disabledAfter__VisitsSummary.get_month.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_disabledAfter__VisitsSummary.get_month.xml
index 4cc41d864e..97a6e21b65 100755
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_disabledAfter__VisitsSummary.get_month.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_disabledAfter__VisitsSummary.get_month.xml
@@ -1,22 +1,25 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <results>
 	<result idSite="1">
-		<bounce_count>1</bounce_count>
-		<max_actions>5</max_actions>
-		<nb_actions>8</nb_actions>
 		<nb_uniq_visitors>2</nb_uniq_visitors>
 		<nb_visits>3</nb_visits>
+		<nb_actions>8</nb_actions>
+		<nb_visits_converted />
+		<bounce_count>1</bounce_count>
 		<sum_visit_length>1262</sum_visit_length>
+		<max_actions>5</max_actions>
 		<bounce_rate>33%</bounce_rate>
 		<nb_actions_per_visit>2.7</nb_actions_per_visit>
 		<avg_time_on_site>421</avg_time_on_site>
 	</result>
 	<result idSite="2">
-		<max_actions>2</max_actions>
-		<nb_actions>2</nb_actions>
 		<nb_uniq_visitors>1</nb_uniq_visitors>
 		<nb_visits>1</nb_visits>
+		<nb_actions>2</nb_actions>
+		<nb_visits_converted />
+		<bounce_count />
 		<sum_visit_length>1</sum_visit_length>
+		<max_actions>2</max_actions>
 		<bounce_rate>0%</bounce_rate>
 		<nb_actions_per_visit>2</nb_actions_per_visit>
 		<avg_time_on_site>1</avg_time_on_site>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_disabledAfter__VisitsSummary.get_week.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_disabledAfter__VisitsSummary.get_week.xml
index c01069b78a..2b01191d5b 100755
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_disabledAfter__VisitsSummary.get_week.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_disabledAfter__VisitsSummary.get_week.xml
@@ -1,11 +1,13 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <results>
 	<result idSite="1">
-		<bounce_count>1</bounce_count>
-		<max_actions>1</max_actions>
-		<nb_actions>1</nb_actions>
 		<nb_uniq_visitors>1</nb_uniq_visitors>
 		<nb_visits>1</nb_visits>
+		<nb_actions>1</nb_actions>
+		<nb_visits_converted />
+		<bounce_count>1</bounce_count>
+		<sum_visit_length />
+		<max_actions>1</max_actions>
 		<bounce_rate>100%</bounce_rate>
 		<nb_actions_per_visit>1</nb_actions_per_visit>
 		<avg_time_on_site>0</avg_time_on_site>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_disabledAfter__VisitsSummary.get_year.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_disabledAfter__VisitsSummary.get_year.xml
index c0e9dad200..4cd54625a4 100755
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_disabledAfter__VisitsSummary.get_year.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_disabledAfter__VisitsSummary.get_year.xml
@@ -1,20 +1,23 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <results>
 	<result idSite="1">
-		<bounce_count>1</bounce_count>
-		<max_actions>5</max_actions>
-		<nb_actions>8</nb_actions>
 		<nb_visits>3</nb_visits>
+		<nb_actions>8</nb_actions>
+		<nb_visits_converted />
+		<bounce_count>1</bounce_count>
 		<sum_visit_length>1262</sum_visit_length>
+		<max_actions>5</max_actions>
 		<bounce_rate>33%</bounce_rate>
 		<nb_actions_per_visit>2.7</nb_actions_per_visit>
 		<avg_time_on_site>421</avg_time_on_site>
 	</result>
 	<result idSite="2">
-		<max_actions>2</max_actions>
-		<nb_actions>2</nb_actions>
 		<nb_visits>1</nb_visits>
+		<nb_actions>2</nb_actions>
+		<nb_visits_converted />
+		<bounce_count />
 		<sum_visit_length>1</sum_visit_length>
+		<max_actions>2</max_actions>
 		<bounce_rate>0%</bounce_rate>
 		<nb_actions_per_visit>2</nb_actions_per_visit>
 		<avg_time_on_site>1</avg_time_on_site>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_enabled__VisitsSummary.get_day.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_enabled__VisitsSummary.get_day.xml
index c01069b78a..2b01191d5b 100755
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_enabled__VisitsSummary.get_day.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_enabled__VisitsSummary.get_day.xml
@@ -1,11 +1,13 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <results>
 	<result idSite="1">
-		<bounce_count>1</bounce_count>
-		<max_actions>1</max_actions>
-		<nb_actions>1</nb_actions>
 		<nb_uniq_visitors>1</nb_uniq_visitors>
 		<nb_visits>1</nb_visits>
+		<nb_actions>1</nb_actions>
+		<nb_visits_converted />
+		<bounce_count>1</bounce_count>
+		<sum_visit_length />
+		<max_actions>1</max_actions>
 		<bounce_rate>100%</bounce_rate>
 		<nb_actions_per_visit>1</nb_actions_per_visit>
 		<avg_time_on_site>0</avg_time_on_site>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_enabled__VisitsSummary.get_month.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_enabled__VisitsSummary.get_month.xml
index 4cc41d864e..97a6e21b65 100755
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_enabled__VisitsSummary.get_month.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_enabled__VisitsSummary.get_month.xml
@@ -1,22 +1,25 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <results>
 	<result idSite="1">
-		<bounce_count>1</bounce_count>
-		<max_actions>5</max_actions>
-		<nb_actions>8</nb_actions>
 		<nb_uniq_visitors>2</nb_uniq_visitors>
 		<nb_visits>3</nb_visits>
+		<nb_actions>8</nb_actions>
+		<nb_visits_converted />
+		<bounce_count>1</bounce_count>
 		<sum_visit_length>1262</sum_visit_length>
+		<max_actions>5</max_actions>
 		<bounce_rate>33%</bounce_rate>
 		<nb_actions_per_visit>2.7</nb_actions_per_visit>
 		<avg_time_on_site>421</avg_time_on_site>
 	</result>
 	<result idSite="2">
-		<max_actions>2</max_actions>
-		<nb_actions>2</nb_actions>
 		<nb_uniq_visitors>1</nb_uniq_visitors>
 		<nb_visits>1</nb_visits>
+		<nb_actions>2</nb_actions>
+		<nb_visits_converted />
+		<bounce_count />
 		<sum_visit_length>1</sum_visit_length>
+		<max_actions>2</max_actions>
 		<bounce_rate>0%</bounce_rate>
 		<nb_actions_per_visit>2</nb_actions_per_visit>
 		<avg_time_on_site>1</avg_time_on_site>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_enabled__VisitsSummary.get_week.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_enabled__VisitsSummary.get_week.xml
index c01069b78a..2b01191d5b 100755
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_enabled__VisitsSummary.get_week.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_enabled__VisitsSummary.get_week.xml
@@ -1,11 +1,13 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <results>
 	<result idSite="1">
-		<bounce_count>1</bounce_count>
-		<max_actions>1</max_actions>
-		<nb_actions>1</nb_actions>
 		<nb_uniq_visitors>1</nb_uniq_visitors>
 		<nb_visits>1</nb_visits>
+		<nb_actions>1</nb_actions>
+		<nb_visits_converted />
+		<bounce_count>1</bounce_count>
+		<sum_visit_length />
+		<max_actions>1</max_actions>
 		<bounce_rate>100%</bounce_rate>
 		<nb_actions_per_visit>1</nb_actions_per_visit>
 		<avg_time_on_site>0</avg_time_on_site>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_enabled__VisitsSummary.get_year.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_enabled__VisitsSummary.get_year.xml
index c0e9dad200..4cd54625a4 100755
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_enabled__VisitsSummary.get_year.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_enabled__VisitsSummary.get_year.xml
@@ -1,20 +1,23 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <results>
 	<result idSite="1">
-		<bounce_count>1</bounce_count>
-		<max_actions>5</max_actions>
-		<nb_actions>8</nb_actions>
 		<nb_visits>3</nb_visits>
+		<nb_actions>8</nb_actions>
+		<nb_visits_converted />
+		<bounce_count>1</bounce_count>
 		<sum_visit_length>1262</sum_visit_length>
+		<max_actions>5</max_actions>
 		<bounce_rate>33%</bounce_rate>
 		<nb_actions_per_visit>2.7</nb_actions_per_visit>
 		<avg_time_on_site>421</avg_time_on_site>
 	</result>
 	<result idSite="2">
-		<max_actions>2</max_actions>
-		<nb_actions>2</nb_actions>
 		<nb_visits>1</nb_visits>
+		<nb_actions>2</nb_actions>
+		<nb_visits_converted />
+		<bounce_count />
 		<sum_visit_length>1</sum_visit_length>
+		<max_actions>2</max_actions>
 		<bounce_rate>0%</bounce_rate>
 		<nb_actions_per_visit>2</nb_actions_per_visit>
 		<avg_time_on_site>1</avg_time_on_site>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_NotLastNPeriods__VisitsSummary.get_day.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_NotLastNPeriods__VisitsSummary.get_day.xml
index ba9c2a09f3..122c2f4460 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_NotLastNPeriods__VisitsSummary.get_day.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_NotLastNPeriods__VisitsSummary.get_day.xml
@@ -1,12 +1,13 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <results>
 	<result idSite="1">
-		<bounce_count>1</bounce_count>
-		<max_actions>1</max_actions>
-		<nb_actions>1</nb_actions>
 		<nb_uniq_visitors>1</nb_uniq_visitors>
 		<nb_visits>1</nb_visits>
+		<nb_actions>1</nb_actions>
 		<nb_visits_converted>1</nb_visits_converted>
+		<bounce_count>1</bounce_count>
+		<sum_visit_length />
+		<max_actions>1</max_actions>
 		<bounce_rate>100%</bounce_rate>
 		<nb_actions_per_visit>1</nb_actions_per_visit>
 		<avg_time_on_site>0</avg_time_on_site>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_NotLastNPeriods__VisitsSummary.get_month.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_NotLastNPeriods__VisitsSummary.get_month.xml
index 7bb7ee93ec..a541c425e7 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_NotLastNPeriods__VisitsSummary.get_month.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_NotLastNPeriods__VisitsSummary.get_month.xml
@@ -1,24 +1,25 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <results>
 	<result idSite="1">
-		<bounce_count>1</bounce_count>
-		<max_actions>5</max_actions>
-		<nb_actions>8</nb_actions>
 		<nb_uniq_visitors>2</nb_uniq_visitors>
 		<nb_visits>3</nb_visits>
+		<nb_actions>8</nb_actions>
 		<nb_visits_converted>3</nb_visits_converted>
+		<bounce_count>1</bounce_count>
 		<sum_visit_length>1263</sum_visit_length>
+		<max_actions>5</max_actions>
 		<bounce_rate>33%</bounce_rate>
 		<nb_actions_per_visit>2.7</nb_actions_per_visit>
 		<avg_time_on_site>421</avg_time_on_site>
 	</result>
 	<result idSite="2">
-		<max_actions>2</max_actions>
-		<nb_actions>2</nb_actions>
 		<nb_uniq_visitors>1</nb_uniq_visitors>
 		<nb_visits>1</nb_visits>
+		<nb_actions>2</nb_actions>
 		<nb_visits_converted>1</nb_visits_converted>
+		<bounce_count />
 		<sum_visit_length>1</sum_visit_length>
+		<max_actions>2</max_actions>
 		<bounce_rate>0%</bounce_rate>
 		<nb_actions_per_visit>2</nb_actions_per_visit>
 		<avg_time_on_site>1</avg_time_on_site>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_NotLastNPeriods__VisitsSummary.get_day.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_NotLastNPeriods__VisitsSummary.get_day.xml
index c01069b78a..2b01191d5b 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_NotLastNPeriods__VisitsSummary.get_day.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_NotLastNPeriods__VisitsSummary.get_day.xml
@@ -1,11 +1,13 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <results>
 	<result idSite="1">
-		<bounce_count>1</bounce_count>
-		<max_actions>1</max_actions>
-		<nb_actions>1</nb_actions>
 		<nb_uniq_visitors>1</nb_uniq_visitors>
 		<nb_visits>1</nb_visits>
+		<nb_actions>1</nb_actions>
+		<nb_visits_converted />
+		<bounce_count>1</bounce_count>
+		<sum_visit_length />
+		<max_actions>1</max_actions>
 		<bounce_rate>100%</bounce_rate>
 		<nb_actions_per_visit>1</nb_actions_per_visit>
 		<avg_time_on_site>0</avg_time_on_site>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_NotLastNPeriods__VisitsSummary.get_month.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_NotLastNPeriods__VisitsSummary.get_month.xml
index 4cc41d864e..97a6e21b65 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_NotLastNPeriods__VisitsSummary.get_month.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_NotLastNPeriods__VisitsSummary.get_month.xml
@@ -1,22 +1,25 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <results>
 	<result idSite="1">
-		<bounce_count>1</bounce_count>
-		<max_actions>5</max_actions>
-		<nb_actions>8</nb_actions>
 		<nb_uniq_visitors>2</nb_uniq_visitors>
 		<nb_visits>3</nb_visits>
+		<nb_actions>8</nb_actions>
+		<nb_visits_converted />
+		<bounce_count>1</bounce_count>
 		<sum_visit_length>1262</sum_visit_length>
+		<max_actions>5</max_actions>
 		<bounce_rate>33%</bounce_rate>
 		<nb_actions_per_visit>2.7</nb_actions_per_visit>
 		<avg_time_on_site>421</avg_time_on_site>
 	</result>
 	<result idSite="2">
-		<max_actions>2</max_actions>
-		<nb_actions>2</nb_actions>
 		<nb_uniq_visitors>1</nb_uniq_visitors>
 		<nb_visits>1</nb_visits>
+		<nb_actions>2</nb_actions>
+		<nb_visits_converted />
+		<bounce_count />
 		<sum_visit_length>1</sum_visit_length>
+		<max_actions>2</max_actions>
 		<bounce_rate>0%</bounce_rate>
 		<nb_actions_per_visit>2</nb_actions_per_visit>
 		<avg_time_on_site>1</avg_time_on_site>
diff --git a/tests/integration/expected/test_apiGetReportMetadata__API.get_day.xml b/tests/integration/expected/test_apiGetReportMetadata__API.get_day.xml
index 8338ec2f57..cefd78bdf5 100644
--- a/tests/integration/expected/test_apiGetReportMetadata__API.get_day.xml
+++ b/tests/integration/expected/test_apiGetReportMetadata__API.get_day.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <result>
-	<nb_visits>1</nb_visits>
 	<nb_uniq_visitors>1</nb_uniq_visitors>
+	<nb_visits>1</nb_visits>
 	<nb_actions>1</nb_actions>
 	<max_actions>1</max_actions>
 	<bounce_rate>100%</bounce_rate>
diff --git a/tests/integration/expected/test_csvExport_xp0__VisitsSummary.get_day.csv b/tests/integration/expected/test_csvExport_xp0__VisitsSummary.get_day.csv
index 22bad3501eacb2c5e82c9651a637e600a7f44aa6..b4b9ed6042e98b4166a224e9fdeb0558fc248618 100644
GIT binary patch
delta 38
scmaFD^n{7&|G$Z18r)?JnGD51T*6R1@xJ&(pGT}l3_1+PlZ_b-0ScH58~^|S

delta 46
ycmaFD^n^+5|GzwjB!+l~GKNfsVjwO7k~$0%nKUN8;G5|4h}9U#Gn#D7Xb1pbP7Q1T

diff --git a/tests/integration/expected/test_csvExport_xp1_inner0_trans-en__VisitsSummary.get_day.csv b/tests/integration/expected/test_csvExport_xp1_inner0_trans-en__VisitsSummary.get_day.csv
index 809183ff0eebe8704cef7b0da2c815ed5d96c99e..6c11ea0705e2c1dd46519005d784538fd6f90f3c 100644
GIT binary patch
delta 34
ocmX@ae2AIp|G$X>3Y=jKnGD51T(VI+k&)GiL5IP3@<c{M0Kg&%jQ{`u

delta 62
zcmX@ae27{5|GzMXOon10E&-A{4518pKz1QRDMKoQ0z(;GE}x-jqjn-At1(cG(d3DY
Fh5!+J4>AA%

diff --git a/tests/integration/expected/test_csvExport_xp1_inner1_trans-de__VisitsSummary.get_day.csv b/tests/integration/expected/test_csvExport_xp1_inner1_trans-de__VisitsSummary.get_day.csv
index 66b46ae47b26c283771cfea965a9caa1a450d5d2..a1e05e8e1e69603bb31ebe920f63681e0f2a799c 100644
GIT binary patch
delta 38
ucmZo-X<}je|8Js@2CoxCDnl_tDMK<t21Dvb^QnxiMhrR(#*;5H8Ug^;;tEXw

delta 40
tcmZo-X<`xj|Idjbm7$oSlp&cR1IW^0n8>8D(P|PSt1*ymH2ET<Apqrh3TyxX

diff --git a/tests/integration/expected/test_ecommerceOrderWithItems_SegmentAbandonedCart__VisitsSummary.get_day.xml b/tests/integration/expected/test_ecommerceOrderWithItems_SegmentAbandonedCart__VisitsSummary.get_day.xml
index 3e20d6ca1b..b8c7975d1b 100644
--- a/tests/integration/expected/test_ecommerceOrderWithItems_SegmentAbandonedCart__VisitsSummary.get_day.xml
+++ b/tests/integration/expected/test_ecommerceOrderWithItems_SegmentAbandonedCart__VisitsSummary.get_day.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <result>
-	<nb_visits>2</nb_visits>
 	<nb_uniq_visitors>1</nb_uniq_visitors>
+	<nb_visits>2</nb_visits>
 	<nb_actions>9</nb_actions>
 	<nb_visits_converted>1</nb_visits_converted>
 	<bounce_count>0</bounce_count>
diff --git a/tests/integration/expected/test_ecommerceOrderWithItems_SegmentConvertedGoalId1__VisitsSummary.get_day.xml b/tests/integration/expected/test_ecommerceOrderWithItems_SegmentConvertedGoalId1__VisitsSummary.get_day.xml
index c37c275e07..324e8c4dcf 100644
--- a/tests/integration/expected/test_ecommerceOrderWithItems_SegmentConvertedGoalId1__VisitsSummary.get_day.xml
+++ b/tests/integration/expected/test_ecommerceOrderWithItems_SegmentConvertedGoalId1__VisitsSummary.get_day.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <result>
-	<nb_visits>1</nb_visits>
 	<nb_uniq_visitors>1</nb_uniq_visitors>
+	<nb_visits>1</nb_visits>
 	<nb_actions>4</nb_actions>
 	<nb_visits_converted>1</nb_visits_converted>
 	<bounce_count>0</bounce_count>
diff --git a/tests/integration/expected/test_ecommerceOrderWithItems_SegmentConvertedGoalId1__VisitsSummary.get_week.xml b/tests/integration/expected/test_ecommerceOrderWithItems_SegmentConvertedGoalId1__VisitsSummary.get_week.xml
index c37c275e07..324e8c4dcf 100644
--- a/tests/integration/expected/test_ecommerceOrderWithItems_SegmentConvertedGoalId1__VisitsSummary.get_week.xml
+++ b/tests/integration/expected/test_ecommerceOrderWithItems_SegmentConvertedGoalId1__VisitsSummary.get_week.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <result>
-	<nb_visits>1</nb_visits>
 	<nb_uniq_visitors>1</nb_uniq_visitors>
+	<nb_visits>1</nb_visits>
 	<nb_actions>4</nb_actions>
 	<nb_visits_converted>1</nb_visits_converted>
 	<bounce_count>0</bounce_count>
diff --git a/tests/integration/expected/test_ecommerceOrderWithItems_SegmentDidNotConvertGoalId1__VisitsSummary.get_day.xml b/tests/integration/expected/test_ecommerceOrderWithItems_SegmentDidNotConvertGoalId1__VisitsSummary.get_day.xml
index 3e20d6ca1b..b8c7975d1b 100644
--- a/tests/integration/expected/test_ecommerceOrderWithItems_SegmentDidNotConvertGoalId1__VisitsSummary.get_day.xml
+++ b/tests/integration/expected/test_ecommerceOrderWithItems_SegmentDidNotConvertGoalId1__VisitsSummary.get_day.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <result>
-	<nb_visits>2</nb_visits>
 	<nb_uniq_visitors>1</nb_uniq_visitors>
+	<nb_visits>2</nb_visits>
 	<nb_actions>9</nb_actions>
 	<nb_visits_converted>1</nb_visits_converted>
 	<bounce_count>0</bounce_count>
diff --git a/tests/integration/expected/test_ecommerceOrderWithItems_SegmentNewVisitors__VisitsSummary.get_week.xml b/tests/integration/expected/test_ecommerceOrderWithItems_SegmentNewVisitors__VisitsSummary.get_week.xml
index c37c275e07..324e8c4dcf 100644
--- a/tests/integration/expected/test_ecommerceOrderWithItems_SegmentNewVisitors__VisitsSummary.get_week.xml
+++ b/tests/integration/expected/test_ecommerceOrderWithItems_SegmentNewVisitors__VisitsSummary.get_week.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <result>
-	<nb_visits>1</nb_visits>
 	<nb_uniq_visitors>1</nb_uniq_visitors>
+	<nb_visits>1</nb_visits>
 	<nb_actions>4</nb_actions>
 	<nb_visits_converted>1</nb_visits_converted>
 	<bounce_count>0</bounce_count>
diff --git a/tests/integration/expected/test_ecommerceOrderWithItems_SegmentNoEcommerce__VisitsSummary.get_day.xml b/tests/integration/expected/test_ecommerceOrderWithItems_SegmentNoEcommerce__VisitsSummary.get_day.xml
index c37c275e07..324e8c4dcf 100644
--- a/tests/integration/expected/test_ecommerceOrderWithItems_SegmentNoEcommerce__VisitsSummary.get_day.xml
+++ b/tests/integration/expected/test_ecommerceOrderWithItems_SegmentNoEcommerce__VisitsSummary.get_day.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <result>
-	<nb_visits>1</nb_visits>
 	<nb_uniq_visitors>1</nb_uniq_visitors>
+	<nb_visits>1</nb_visits>
 	<nb_actions>4</nb_actions>
 	<nb_visits_converted>1</nb_visits_converted>
 	<bounce_count>0</bounce_count>
diff --git a/tests/integration/expected/test_ecommerceOrderWithItems_SegmentOrderedSomething__VisitsSummary.get_day.xml b/tests/integration/expected/test_ecommerceOrderWithItems_SegmentOrderedSomething__VisitsSummary.get_day.xml
index 37c1cb0acb..9e048c4038 100644
--- a/tests/integration/expected/test_ecommerceOrderWithItems_SegmentOrderedSomething__VisitsSummary.get_day.xml
+++ b/tests/integration/expected/test_ecommerceOrderWithItems_SegmentOrderedSomething__VisitsSummary.get_day.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <result>
-	<nb_visits>1</nb_visits>
 	<nb_uniq_visitors>1</nb_uniq_visitors>
+	<nb_visits>1</nb_visits>
 	<nb_actions>6</nb_actions>
 	<nb_visits_converted>1</nb_visits_converted>
 	<bounce_count>0</bounce_count>
diff --git a/tests/integration/expected/test_ecommerceOrderWithItems_SegmentPageTitleMatch__VisitsSummary.get_day.xml b/tests/integration/expected/test_ecommerceOrderWithItems_SegmentPageTitleMatch__VisitsSummary.get_day.xml
index c37c275e07..324e8c4dcf 100644
--- a/tests/integration/expected/test_ecommerceOrderWithItems_SegmentPageTitleMatch__VisitsSummary.get_day.xml
+++ b/tests/integration/expected/test_ecommerceOrderWithItems_SegmentPageTitleMatch__VisitsSummary.get_day.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <result>
-	<nb_visits>1</nb_visits>
 	<nb_uniq_visitors>1</nb_uniq_visitors>
+	<nb_visits>1</nb_visits>
 	<nb_actions>4</nb_actions>
 	<nb_visits_converted>1</nb_visits_converted>
 	<bounce_count>0</bounce_count>
diff --git a/tests/integration/expected/test_ecommerceOrderWithItems_SegmentReturningCustomers__VisitsSummary.get_week.xml b/tests/integration/expected/test_ecommerceOrderWithItems_SegmentReturningCustomers__VisitsSummary.get_week.xml
index 2b533f43f8..0d1d5d37e6 100644
--- a/tests/integration/expected/test_ecommerceOrderWithItems_SegmentReturningCustomers__VisitsSummary.get_week.xml
+++ b/tests/integration/expected/test_ecommerceOrderWithItems_SegmentReturningCustomers__VisitsSummary.get_week.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <result>
-	<nb_visits>3</nb_visits>
 	<nb_uniq_visitors>1</nb_uniq_visitors>
+	<nb_visits>3</nb_visits>
 	<nb_actions>6</nb_actions>
 	<nb_visits_converted>2</nb_visits_converted>
 	<bounce_count>1</bounce_count>
diff --git a/tests/integration/expected/test_ecommerceOrderWithItems_SegmentReturningVisitors__VisitsSummary.get_week.xml b/tests/integration/expected/test_ecommerceOrderWithItems_SegmentReturningVisitors__VisitsSummary.get_week.xml
index 37c1cb0acb..9e048c4038 100644
--- a/tests/integration/expected/test_ecommerceOrderWithItems_SegmentReturningVisitors__VisitsSummary.get_week.xml
+++ b/tests/integration/expected/test_ecommerceOrderWithItems_SegmentReturningVisitors__VisitsSummary.get_week.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <result>
-	<nb_visits>1</nb_visits>
 	<nb_uniq_visitors>1</nb_uniq_visitors>
+	<nb_visits>1</nb_visits>
 	<nb_actions>6</nb_actions>
 	<nb_visits_converted>1</nb_visits_converted>
 	<bounce_count>0</bounce_count>
diff --git a/tests/integration/expected/test_ecommerceOrderWithItems__VisitsSummary.get_day.xml b/tests/integration/expected/test_ecommerceOrderWithItems__VisitsSummary.get_day.xml
index ae9e8f6c55..3449ad9ec8 100644
--- a/tests/integration/expected/test_ecommerceOrderWithItems__VisitsSummary.get_day.xml
+++ b/tests/integration/expected/test_ecommerceOrderWithItems__VisitsSummary.get_day.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <result>
-	<nb_visits>3</nb_visits>
 	<nb_uniq_visitors>1</nb_uniq_visitors>
+	<nb_visits>3</nb_visits>
 	<nb_actions>13</nb_actions>
 	<nb_visits_converted>2</nb_visits_converted>
 	<bounce_count>0</bounce_count>
diff --git a/tests/integration/expected/test_noVisit__VisitsSummary.get_day.xml b/tests/integration/expected/test_noVisit__VisitsSummary.get_day.xml
index a4933d174c..35529b7683 100644
--- a/tests/integration/expected/test_noVisit__VisitsSummary.get_day.xml
+++ b/tests/integration/expected/test_noVisit__VisitsSummary.get_day.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <result>
-	<nb_visits>0</nb_visits>
 	<nb_uniq_visitors>0</nb_uniq_visitors>
+	<nb_visits>0</nb_visits>
 	<nb_actions>0</nb_actions>
 	<nb_visits_converted>0</nb_visits_converted>
 	<bounce_count>0</bounce_count>
diff --git a/tests/integration/expected/test_trackGoals_allowMultipleConversionsPerVisit__VisitsSummary.get_day.xml b/tests/integration/expected/test_trackGoals_allowMultipleConversionsPerVisit__VisitsSummary.get_day.xml
index 83a5d512fd..b0adeb0ca1 100644
--- a/tests/integration/expected/test_trackGoals_allowMultipleConversionsPerVisit__VisitsSummary.get_day.xml
+++ b/tests/integration/expected/test_trackGoals_allowMultipleConversionsPerVisit__VisitsSummary.get_day.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <result>
-	<nb_visits>1</nb_visits>
 	<nb_uniq_visitors>1</nb_uniq_visitors>
+	<nb_visits>1</nb_visits>
 	<nb_actions>1</nb_actions>
 	<nb_visits_converted>1</nb_visits_converted>
 	<bounce_count>1</bounce_count>
-- 
GitLab