From 575d47124788abe99ee811bccc7183c31f07204e Mon Sep 17 00:00:00 2001
From: mattpiwik <matthieu.aubry@gmail.com>
Date: Sun, 22 May 2011 23:34:58 +0000
Subject: [PATCH] XML output cleanup: empty elements were displaying as
 <referrerName></referrerName>, they now display as <referrerName /> Refs
 #1839

git-svn-id: http://dev.piwik.org/svn/trunk@4776 59fd770c-687e-43c8-a1e3-f5a4ff64c105
---
 core/DataTable/Renderer/Xml.php               | 28 +++++++-
 ...differentDays__Actions.getPageUrls_day.xml |  2 +-
 ...fferentDays__Actions.getPageUrls_month.xml |  2 +-
 ...ifferentDays__Actions.getPageUrls_week.xml |  2 +-
 ...ifferentDays__Actions.getPageUrls_year.xml |  2 +-
 ...Ordered__Live.getLastVisitsDetails_day.xml | 30 ++++-----
 ...thItems__Live.getLastVisitsDetails_day.xml | 64 +++++++++----------
 ...alAPI__Live.getLastVisitsDetails_range.xml | 48 +++++++-------
 8 files changed, 100 insertions(+), 78 deletions(-)

diff --git a/core/DataTable/Renderer/Xml.php b/core/DataTable/Renderer/Xml.php
index 5f99f066a5..62ec9c5df9 100644
--- a/core/DataTable/Renderer/Xml.php
+++ b/core/DataTable/Renderer/Xml.php
@@ -260,7 +260,14 @@ class Piwik_DataTable_Renderer_Xml extends Piwik_DataTable_Renderer
 			if(!is_array($row))
 			{
 				$value = self::formatValueXml($row);
-				$out .= $prefixLine."\t\t<$rowId>".$value."</$rowId>\n";
+				if(strlen($value) == 0)
+				{
+					$out .= $prefixLine."\t\t<$rowId />\n";
+				}
+				else
+				{
+					$out .= $prefixLine."\t\t<$rowId>".$value."</$rowId>\n";
+				}
 				continue;
 			}
 
@@ -294,7 +301,14 @@ class Piwik_DataTable_Renderer_Xml extends Piwik_DataTable_Renderer
 					{
 						$value = self::formatValueXml($value);
 					}
-					$out .= $prefixLine."\t\t<$name>".$value."</$name>\n";
+					if(strlen($value) == 0)
+					{
+						$out .= $prefixLine."\t\t<$name />\n";
+					}
+					else
+					{
+						$out .= $prefixLine."\t\t<$name>".$value."</$name>\n";
+					}
 				} 
 				$out .= "\t";
 			}
@@ -308,7 +322,15 @@ class Piwik_DataTable_Renderer_Xml extends Piwik_DataTable_Renderer
 		$out = '';
 		foreach($array as $keyName => $value)
 		{
-			$out .= $prefixLine."\t<$keyName>".self::formatValueXml($value)."</$keyName>\n"; 
+			$xmlValue = self::formatValueXml($value);
+			if(strlen($xmlValue) == 0)
+			{
+				$out .= $prefixLine."\t<$keyName />\n";
+			}
+			else
+			{
+				$out .= $prefixLine."\t<$keyName>".$xmlValue."</$keyName>\n";
+			}
 		}
 		return $out;
 	}
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_day.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_day.xml
index 7d3b3432a5..c25dd5ca27 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_day.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_day.xml
@@ -42,7 +42,7 @@
 				<avg_time_on_page>0</avg_time_on_page>
 				<bounce_rate>0%</bounce_rate>
 				<exit_rate>0%</exit_rate>
-				<url></url>
+				<url />
 			</row>
 		</result>
 		<result date="2010-01-05">
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_month.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_month.xml
index c093da3ce3..1c7e870e08 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_month.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_month.xml
@@ -56,7 +56,7 @@
 				<avg_time_on_page>0</avg_time_on_page>
 				<bounce_rate>0%</bounce_rate>
 				<exit_rate>0%</exit_rate>
-				<url></url>
+				<url />
 			</row>
 		</result>
 		<result date="2010-02" />
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_week.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_week.xml
index f84a12fe5b..be22e0d0a6 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_week.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_week.xml
@@ -69,7 +69,7 @@
 				<avg_time_on_page>0</avg_time_on_page>
 				<bounce_rate>0%</bounce_rate>
 				<exit_rate>0%</exit_rate>
-				<url></url>
+				<url />
 			</row>
 		</result>
 		<result date="2010-01-11 to 2010-01-17" />
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_year.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_year.xml
index 16e66ad377..eacc428279 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_year.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_year.xml
@@ -56,7 +56,7 @@
 				<avg_time_on_page>0</avg_time_on_page>
 				<bounce_rate>0%</bounce_rate>
 				<exit_rate>0%</exit_rate>
-				<url></url>
+				<url />
 			</row>
 		</result>
 		<result date="2011" />
diff --git a/tests/integration/expected/test_ecommerceOrderWithItems_LiveEcommerceStatusOrdered__Live.getLastVisitsDetails_day.xml b/tests/integration/expected/test_ecommerceOrderWithItems_LiveEcommerceStatusOrdered__Live.getLastVisitsDetails_day.xml
index b81c85ac7a..faa2b74ecf 100644
--- a/tests/integration/expected/test_ecommerceOrderWithItems_LiveEcommerceStatusOrdered__Live.getLastVisitsDetails_day.xml
+++ b/tests/integration/expected/test_ecommerceOrderWithItems_LiveEcommerceStatusOrdered__Live.getLastVisitsDetails_day.xml
@@ -78,12 +78,12 @@
 		<providerUrl>http://piwik.org/faq/general/#faq_52</providerUrl>
 		<referrerType>direct</referrerType>
 		<referrerTypeName>Direct Entry</referrerTypeName>
-		<referrerName></referrerName>
-		<referrerKeyword></referrerKeyword>
-		<referrerKeywordPosition></referrerKeywordPosition>
-		<referrerUrl></referrerUrl>
-		<referrerSearchEngineUrl></referrerSearchEngineUrl>
-		<referrerSearchEngineIcon></referrerSearchEngineIcon>
+		<referrerName />
+		<referrerKeyword />
+		<referrerKeywordPosition />
+		<referrerUrl />
+		<referrerSearchEngineUrl />
+		<referrerSearchEngineIcon />
 		<operatingSystem>Windows XP</operatingSystem>
 		<operatingSystemShortName>Win XP</operatingSystemShortName>
 		<operatingSystemIcon>plugins/UserSettings/images/os/WXP.gif</operatingSystemIcon>
@@ -141,7 +141,7 @@
 						<customVariableValue4>PRODUCT THREE LEFT in cart</customVariableValue4>
 					</row>
 				</customVariables>
-				<icon></icon>
+				<icon />
 			</row>
 			<row>
 				<type>action</type>
@@ -164,7 +164,7 @@
 						<customVariableValue5>Category TWO LEFT in cart</customVariableValue5>
 					</row>
 				</customVariables>
-				<icon></icon>
+				<icon />
 			</row>
 			<row>
 				<type>ecommerceAbandonedCart</type>
@@ -183,7 +183,7 @@
 					<row>
 						<itemSKU>SKU IN ABANDONED CART ONE</itemSKU>
 						<itemName>PRODUCT ONE LEFT in cart</itemName>
-						<itemCategory></itemCategory>
+						<itemCategory />
 						<price>500.11</price>
 						<quantity>1</quantity>
 					</row>
@@ -228,12 +228,12 @@
 		<providerUrl>http://piwik.org/faq/general/#faq_52</providerUrl>
 		<referrerType>direct</referrerType>
 		<referrerTypeName>Direct Entry</referrerTypeName>
-		<referrerName></referrerName>
-		<referrerKeyword></referrerKeyword>
-		<referrerKeywordPosition></referrerKeywordPosition>
-		<referrerUrl></referrerUrl>
-		<referrerSearchEngineUrl></referrerSearchEngineUrl>
-		<referrerSearchEngineIcon></referrerSearchEngineIcon>
+		<referrerName />
+		<referrerKeyword />
+		<referrerKeywordPosition />
+		<referrerUrl />
+		<referrerSearchEngineUrl />
+		<referrerSearchEngineIcon />
 		<operatingSystem>Windows XP</operatingSystem>
 		<operatingSystemShortName>Win XP</operatingSystemShortName>
 		<operatingSystemIcon>plugins/UserSettings/images/os/WXP.gif</operatingSystemIcon>
diff --git a/tests/integration/expected/test_ecommerceOrderWithItems__Live.getLastVisitsDetails_day.xml b/tests/integration/expected/test_ecommerceOrderWithItems__Live.getLastVisitsDetails_day.xml
index 9879de971c..9df6fa9605 100644
--- a/tests/integration/expected/test_ecommerceOrderWithItems__Live.getLastVisitsDetails_day.xml
+++ b/tests/integration/expected/test_ecommerceOrderWithItems__Live.getLastVisitsDetails_day.xml
@@ -8,7 +8,7 @@
 		<visitorType>returningCustomer</visitorType>
 		<visitorTypeIcon>plugins/Live/templates/images/returningVisitor.gif</visitorTypeIcon>
 		<visitConverted>0</visitConverted>
-		<visitConvertedIcon></visitConvertedIcon>
+		<visitConvertedIcon />
 		<visitEcommerceStatus>abandonedCart</visitEcommerceStatus>
 		<visitEcommerceStatusIcon>themes/default/images/ecommerceAbandonedCart.gif</visitEcommerceStatusIcon>
 		<actions>2</actions>
@@ -30,7 +30,7 @@
 						<customVariableValue4>PRODUCT THREE LEFT in cart</customVariableValue4>
 					</row>
 				</customVariables>
-				<icon></icon>
+				<icon />
 			</row>
 			<row>
 				<type>action</type>
@@ -53,7 +53,7 @@
 						<customVariableValue5>Category TWO LEFT in cart</customVariableValue5>
 					</row>
 				</customVariables>
-				<icon></icon>
+				<icon />
 			</row>
 			<row>
 				<type>ecommerceAbandonedCart</type>
@@ -72,7 +72,7 @@
 					<row>
 						<itemSKU>SKU IN ABANDONED CART ONE</itemSKU>
 						<itemName>PRODUCT ONE LEFT in cart</itemName>
-						<itemCategory></itemCategory>
+						<itemCategory />
 						<price>500.11</price>
 						<quantity>1</quantity>
 					</row>
@@ -117,12 +117,12 @@
 		<providerUrl>http://piwik.org/faq/general/#faq_52</providerUrl>
 		<referrerType>direct</referrerType>
 		<referrerTypeName>Direct Entry</referrerTypeName>
-		<referrerName></referrerName>
-		<referrerKeyword></referrerKeyword>
-		<referrerKeywordPosition></referrerKeywordPosition>
-		<referrerUrl></referrerUrl>
-		<referrerSearchEngineUrl></referrerSearchEngineUrl>
-		<referrerSearchEngineIcon></referrerSearchEngineIcon>
+		<referrerName />
+		<referrerKeyword />
+		<referrerKeywordPosition />
+		<referrerUrl />
+		<referrerSearchEngineUrl />
+		<referrerSearchEngineIcon />
 		<operatingSystem>Windows XP</operatingSystem>
 		<operatingSystemShortName>Win XP</operatingSystemShortName>
 		<operatingSystemIcon>plugins/UserSettings/images/os/WXP.gif</operatingSystemIcon>
@@ -176,7 +176,7 @@
 						<customVariableValue5>Electronics &amp; Cameras</customVariableValue5>
 					</row>
 				</customVariables>
-				<icon></icon>
+				<icon />
 			</row>
 			<row>
 				<type>action</type>
@@ -191,7 +191,7 @@
 						<customVariableValue5>Electronics &amp; Cameras</customVariableValue5>
 					</row>
 				</customVariables>
-				<icon></icon>
+				<icon />
 			</row>
 			<row>
 				<type>action</type>
@@ -214,7 +214,7 @@
 						<customVariableValue5>Electronics &amp; Cameras</customVariableValue5>
 					</row>
 				</customVariables>
-				<icon></icon>
+				<icon />
 			</row>
 			<row>
 				<type>ecommerceOrder</type>
@@ -266,7 +266,7 @@
 						<customVariableValue4>PRODUCT THREE LEFT in cart</customVariableValue4>
 					</row>
 				</customVariables>
-				<icon></icon>
+				<icon />
 			</row>
 			<row>
 				<type>action</type>
@@ -289,7 +289,7 @@
 						<customVariableValue5>Category TWO LEFT in cart</customVariableValue5>
 					</row>
 				</customVariables>
-				<icon></icon>
+				<icon />
 			</row>
 			<row>
 				<type>ecommerceAbandonedCart</type>
@@ -330,12 +330,12 @@
 		<providerUrl>http://piwik.org/faq/general/#faq_52</providerUrl>
 		<referrerType>direct</referrerType>
 		<referrerTypeName>Direct Entry</referrerTypeName>
-		<referrerName></referrerName>
-		<referrerKeyword></referrerKeyword>
-		<referrerKeywordPosition></referrerKeywordPosition>
-		<referrerUrl></referrerUrl>
-		<referrerSearchEngineUrl></referrerSearchEngineUrl>
-		<referrerSearchEngineIcon></referrerSearchEngineIcon>
+		<referrerName />
+		<referrerKeyword />
+		<referrerKeywordPosition />
+		<referrerUrl />
+		<referrerSearchEngineUrl />
+		<referrerSearchEngineIcon />
 		<operatingSystem>Windows XP</operatingSystem>
 		<operatingSystemShortName>Win XP</operatingSystemShortName>
 		<operatingSystemIcon>plugins/UserSettings/images/os/WXP.gif</operatingSystemIcon>
@@ -369,11 +369,11 @@
 		<visitIp>156.5.3.2</visitIp>
 		
 		<visitorType>new</visitorType>
-		<visitorTypeIcon></visitorTypeIcon>
+		<visitorTypeIcon />
 		<visitConverted>1</visitConverted>
 		<visitConvertedIcon>themes/default/images/goal.png</visitConvertedIcon>
 		<visitEcommerceStatus>none</visitEcommerceStatus>
-		<visitEcommerceStatusIcon></visitEcommerceStatusIcon>
+		<visitEcommerceStatusIcon />
 		<actions>3</actions>
 		<actionDetails>
 			<row>
@@ -397,7 +397,7 @@
 						<customVariableValue5>Electronics &amp; Cameras</customVariableValue5>
 					</row>
 				</customVariables>
-				<icon></icon>
+				<icon />
 			</row>
 			<row>
 				<type>goal</type>
@@ -429,7 +429,7 @@
 						<customVariableValue5>Electronics &amp; Cameras</customVariableValue5>
 					</row>
 				</customVariables>
-				<icon></icon>
+				<icon />
 			</row>
 			<row>
 				<type>action</type>
@@ -448,7 +448,7 @@
 						<customVariableValue4>PRODUCT name</customVariableValue4>
 					</row>
 				</customVariables>
-				<icon></icon>
+				<icon />
 			</row>
 		</actionDetails>
 		<customVariables>
@@ -478,12 +478,12 @@
 		<providerUrl>http://piwik.org/faq/general/#faq_52</providerUrl>
 		<referrerType>direct</referrerType>
 		<referrerTypeName>Direct Entry</referrerTypeName>
-		<referrerName></referrerName>
-		<referrerKeyword></referrerKeyword>
-		<referrerKeywordPosition></referrerKeywordPosition>
-		<referrerUrl></referrerUrl>
-		<referrerSearchEngineUrl></referrerSearchEngineUrl>
-		<referrerSearchEngineIcon></referrerSearchEngineIcon>
+		<referrerName />
+		<referrerKeyword />
+		<referrerKeywordPosition />
+		<referrerUrl />
+		<referrerSearchEngineUrl />
+		<referrerSearchEngineIcon />
 		<operatingSystem>Windows XP</operatingSystem>
 		<operatingSystemShortName>Win XP</operatingSystemShortName>
 		<operatingSystemIcon>plugins/UserSettings/images/os/WXP.gif</operatingSystemIcon>
diff --git a/tests/integration/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI__Live.getLastVisitsDetails_range.xml b/tests/integration/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI__Live.getLastVisitsDetails_range.xml
index 18007836f7..cce468908c 100644
--- a/tests/integration/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI__Live.getLastVisitsDetails_range.xml
+++ b/tests/integration/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI__Live.getLastVisitsDetails_range.xml
@@ -8,15 +8,15 @@
 		<visitorType>returning</visitorType>
 		<visitorTypeIcon>plugins/Live/templates/images/returningVisitor.gif</visitorTypeIcon>
 		<visitConverted>0</visitConverted>
-		<visitConvertedIcon></visitConvertedIcon>
+		<visitConvertedIcon />
 		<visitEcommerceStatus>none</visitEcommerceStatus>
-		<visitEcommerceStatusIcon></visitEcommerceStatusIcon>
+		<visitEcommerceStatusIcon />
 		<actions>1</actions>
 		<actionDetails>
 			<row>
 				<type>outlink</type>
 				<url>http://test.com</url>
-				<pageTitle></pageTitle>
+				<pageTitle />
 				<pageIdAction>5</pageIdAction>
 				<pageId>4</pageId>
 				
@@ -54,12 +54,12 @@
 		<providerUrl>http://piwik.org/faq/general/#faq_52</providerUrl>
 		<referrerType>direct</referrerType>
 		<referrerTypeName>Direct Entry</referrerTypeName>
-		<referrerName></referrerName>
-		<referrerKeyword></referrerKeyword>
-		<referrerKeywordPosition></referrerKeywordPosition>
-		<referrerUrl></referrerUrl>
-		<referrerSearchEngineUrl></referrerSearchEngineUrl>
-		<referrerSearchEngineIcon></referrerSearchEngineIcon>
+		<referrerName />
+		<referrerKeyword />
+		<referrerKeywordPosition />
+		<referrerUrl />
+		<referrerSearchEngineUrl />
+		<referrerSearchEngineIcon />
 		<operatingSystem>Windows XP</operatingSystem>
 		<operatingSystemShortName>Win XP</operatingSystemShortName>
 		<operatingSystemIcon>plugins/UserSettings/images/os/WXP.gif</operatingSystemIcon>
@@ -93,18 +93,18 @@
 		<visitIp>156.5.3.2</visitIp>
 		
 		<visitorType>new</visitorType>
-		<visitorTypeIcon></visitorTypeIcon>
+		<visitorTypeIcon />
 		<visitConverted>1</visitConverted>
 		<visitConvertedIcon>themes/default/images/goal.png</visitConvertedIcon>
 		<visitEcommerceStatus>none</visitEcommerceStatus>
-		<visitEcommerceStatusIcon></visitEcommerceStatusIcon>
+		<visitEcommerceStatusIcon />
 		<actions>1</actions>
 		<actionDetails>
 			<row>
 				<type>goal</type>
 				<goalName>triggered js</goalName>
 				<revenue>0</revenue>
-				<goalPageId></goalPageId>
+				<goalPageId />
 				
 				<url>http://example.org/homepage</url>
 				<icon>themes/default/images/goal.png</icon>
@@ -141,12 +141,12 @@
 		<providerUrl>http://piwik.org/faq/general/#faq_52</providerUrl>
 		<referrerType>direct</referrerType>
 		<referrerTypeName>Direct Entry</referrerTypeName>
-		<referrerName></referrerName>
-		<referrerKeyword></referrerKeyword>
-		<referrerKeywordPosition></referrerKeywordPosition>
-		<referrerUrl></referrerUrl>
-		<referrerSearchEngineUrl></referrerSearchEngineUrl>
-		<referrerSearchEngineIcon></referrerSearchEngineIcon>
+		<referrerName />
+		<referrerKeyword />
+		<referrerKeywordPosition />
+		<referrerUrl />
+		<referrerSearchEngineUrl />
+		<referrerSearchEngineIcon />
 		<operatingSystem>Windows XP</operatingSystem>
 		<operatingSystemShortName>Win XP</operatingSystemShortName>
 		<operatingSystemIcon>plugins/UserSettings/images/os/WXP.gif</operatingSystemIcon>
@@ -180,11 +180,11 @@
 		<visitIp>156.5.3.2</visitIp>
 		
 		<visitorType>new</visitorType>
-		<visitorTypeIcon></visitorTypeIcon>
+		<visitorTypeIcon />
 		<visitConverted>1</visitConverted>
 		<visitConvertedIcon>themes/default/images/goal.png</visitConvertedIcon>
 		<visitEcommerceStatus>none</visitEcommerceStatus>
-		<visitEcommerceStatusIcon></visitEcommerceStatusIcon>
+		<visitEcommerceStatusIcon />
 		<actions>3</actions>
 		<actionDetails>
 			<row>
@@ -194,7 +194,7 @@
 				<pageIdAction>2</pageIdAction>
 				<pageId>1</pageId>
 				
-				<icon></icon>
+				<icon />
 			</row>
 			<row>
 				<type>action</type>
@@ -203,13 +203,13 @@
 				<pageIdAction>4</pageIdAction>
 				<pageId>2</pageId>
 				
-				<icon></icon>
+				<icon />
 			</row>
 			<row>
 				<type>goal</type>
 				<goalName>triggered js</goalName>
 				<revenue>0</revenue>
-				<goalPageId></goalPageId>
+				<goalPageId />
 				
 				<url>http://example.org/user/profile</url>
 				<icon>themes/default/images/goal.png</icon>
@@ -221,7 +221,7 @@
 				<pageIdAction>4</pageIdAction>
 				<pageId>3</pageId>
 				
-				<icon></icon>
+				<icon />
 			</row>
 		</actionDetails>
 		<customVariables>
-- 
GitLab