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