diff --git a/lib/SimpleSAML/Metadata/SAMLBuilder.php b/lib/SimpleSAML/Metadata/SAMLBuilder.php index 70dfd611104ff947f84a33eed991ac292d60f7aa..dc14e3868e92effab2eeb794c61a5bff2482b30a 100644 --- a/lib/SimpleSAML/Metadata/SAMLBuilder.php +++ b/lib/SimpleSAML/Metadata/SAMLBuilder.php @@ -138,10 +138,44 @@ class SimpleSAML_Metadata_SAMLBuilder { } } + + /** + * Add Organization element. + * + * This function adds an organization element to the metadata. + * + * @param array $orgName An array with the localized OrganizatioName. + * @param array $orgDisplayName An array with the localized OrganizatioDisplayName. + * @param array $orgURL An array with the localized OrganizatioURL. + */ + public function addOrganization(array $orgName, array $orgDisplayName, array $orgURL) { + + $org = $this->createElement('Organization'); + + foreach ($orgName AS $lang => $localname) { + $e = $this->createTextElement('OrganizationName', $localname); + $e->setAttribute('xml:lang', $lang); + $org->appendChild($e); + } + + foreach ($orgDisplayName AS $lang => $localname) { + $e = $this->createTextElement('OrganizationDisplayName', $localname); + $e->setAttribute('xml:lang', $lang); + $org->appendChild($e); + } + + foreach ($orgURL AS $lang => $locallink) { + $e = $this->createTextElement('OrganizationURL', $locallink); + $e->setAttribute('xml:lang', $lang); + $org->appendChild($e); + } + + $this->entityDescriptor->appendChild($org); + } + public function addOrganizationInfo($metadata) { if (array_key_exists('name', $metadata)) { - $org = $this->createElement('Organization'); if (is_array($metadata['name'])) { $name = $metadata['name']; @@ -149,17 +183,6 @@ class SimpleSAML_Metadata_SAMLBuilder { $name = array('en' => $metadata['name']); } - foreach($name AS $lang => $localname) { - $orgname = $this->createTextElement('OrganizationName', $localname); - $orgname->setAttribute('xml:lang', $lang); - $org->appendChild($orgname); - } - - foreach($name AS $lang => $localname) { - $orgname = $this->createTextElement('OrganizationDisplayName', $localname); - $orgname->setAttribute('xml:lang', $lang); - $org->appendChild($orgname); - } if (!array_key_exists('url', $metadata)) { /* @@ -173,13 +196,7 @@ class SimpleSAML_Metadata_SAMLBuilder { $url = array('en' => $metadata['url']); } - foreach($url AS $lang => $locallink) { - $uel = $this->createTextElement('OrganizationURL', $locallink); - $uel->setAttribute('xml:lang', $lang); - $org->appendChild($uel); - } - - $this->entityDescriptor->appendChild($org); + $this->addOrganization($name, $name, $url); } } @@ -281,7 +298,6 @@ class SimpleSAML_Metadata_SAMLBuilder { SimpleSAML_Logger::warning('Unable to generate metadata for unknown type \'' . $set . '\'.'); } - // $this->addOrganizationInfo($metadata); } /**