From 45215b83a9cabf816aa0f7192b90bc3488836279 Mon Sep 17 00:00:00 2001
From: Olav Morken <olav.morken@uninett.no>
Date: Tue, 3 Mar 2009 08:20:02 +0000
Subject: [PATCH] Add support for multiple languages for organization url in
 generated metadata.

git-svn-id: https://simplesamlphp.googlecode.com/svn/trunk@1363 44740490-163a-0410-bde0-09ae8108e29a
---
 lib/SimpleSAML/Metadata/SAMLBuilder.php | 56 ++++++++++++-------------
 1 file changed, 28 insertions(+), 28 deletions(-)

diff --git a/lib/SimpleSAML/Metadata/SAMLBuilder.php b/lib/SimpleSAML/Metadata/SAMLBuilder.php
index 315aa91ab..dfe487ff1 100644
--- a/lib/SimpleSAML/Metadata/SAMLBuilder.php
+++ b/lib/SimpleSAML/Metadata/SAMLBuilder.php
@@ -142,45 +142,45 @@ class SimpleSAML_Metadata_SAMLBuilder {
 	
 	private function addOrganizationInfo($metadata) {
 		if (array_key_exists('name', $metadata)) {
-			$org = $this->createElement('Organization'); 
-			
+			$org = $this->createElement('Organization');
+
 			if (is_array($metadata['name'])) {
-				foreach($metadata['name'] AS $lang => $localname) {
-					$orgname = $this->createTextElement('OrganizationName', $localname); 
-					$orgname->setAttribute('xml:lang', $lang);					
-					$org->appendChild($orgname);
-				}
+				$name = $metadata['name'];
 			} else {
-				$orgname = $this->createTextElement('OrganizationName', $metadata['name']); 
-				$orgname->setAttribute('xml:lang', 'en');
-				$org->appendChild($orgname);
+				$name = array('en' => $metadata['name']);
 			}
 
+			foreach($name AS $lang => $localname) {
+				$orgname = $this->createTextElement('OrganizationName', $localname);
+				$orgname->setAttribute('xml:lang', $lang);
+				$org->appendChild($orgname);
+			}
 
-			if (is_array($metadata['name'])) {
-				foreach($metadata['name'] AS $lang => $localname) {
-					$orgname = $this->createTextElement('OrganizationDisplayName', $localname); 
-					$orgname->setAttribute('xml:lang', $lang);					
-					$org->appendChild($orgname);
-				}
-			} else {
-				$orgname = $this->createTextElement('OrganizationDisplayName', $metadata['name']); 
-				$orgname->setAttribute('xml:lang', 'en');
+			foreach($name AS $lang => $localname) {
+				$orgname = $this->createTextElement('OrganizationDisplayName', $localname);
+				$orgname->setAttribute('xml:lang', $lang);
 				$org->appendChild($orgname);
 			}
 
-			$url = '';
-			if (array_key_exists('url', $metadata)) {
+			if (!array_key_exists('url', $metadata)) {
+				/*
+				 * The specification requires an OrganizationURL element, but
+				 * we haven't got an URL. Insert an empty element instead.
+				 */
+				$url = array('en' => '');
+			} elseif (is_array($metadata['url'])) {
 				$url = $metadata['url'];
+			} else {
+				$url = array('en' => $metadata['url']);
+			}
+
+			foreach($url AS $lang => $locallink) {
+				$uel = $this->createTextElement('OrganizationURL', $locallink);
+				$uel->setAttribute('xml:lang', $lang);
+				$org->appendChild($uel);
 			}
-			$uel = $this->createTextElement('OrganizationURL', $url); 
-			$uel->setAttribute('xml:lang', 'en');
-			$org->appendChild($uel);
-			
-			$this->entityDescriptor->appendChild($org);
-			
-			
 
+			$this->entityDescriptor->appendChild($org);
 		}
 	}
 	
-- 
GitLab