Viewing file: UIInfo.php (3.77 KB) -rwxrwxr-x Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/** * Class for handling the metadata extensions for login and discovery user interface * * @link: http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-metadata-ui/v1.0/sstc-saml-metadata-ui-v1.0.pdf * @package simpleSAMLphp * @version $Id$ */ class SAML2_XML_mdui_UIInfo {
/** * The namespace used for the UIInfo extension. */ const NS = 'urn:oasis:names:tc:SAML:metadata:ui';
/** * Array with child elements. * * The elements can be any of the other SAML2_XML_mdui_* elements. * * @var array */ public $children = array();
/** * The DisplayName, as an array of language => translation. * * @var array */ public $DisplayName = array();
/** * The Description, as an array of language => translation. * * @var array */ public $Description = array();
/** * The InformationURL, as an array of language => url. * * @var array */ public $InformationURL = array();
/** * The PrivacyStatementURL, as an array of language => url. * * @var array */ public $PrivacyStatementURL = array();
/** * The Keywords, as an array of language => array of strings. * * @var array */ public $Keywords = array();
/** * The Logo, as an array of associative arrays containing url, width, height, and optional lang. * * @var array */ public $Logo = array();
/** * Create a UIInfo element. * * @param DOMElement|NULL $xml The XML element we should load. */ public function __construct(DOMElement $xml = NULL) {
if ($xml === NULL) { return; }
$this->DisplayName = SAML2_Utils::extractLocalizedStrings($xml, self::NS, 'DisplayName'); $this->Description = SAML2_Utils::extractLocalizedStrings($xml, self::NS, 'Description'); $this->InformationURL = SAML2_Utils::extractLocalizedStrings($xml, self::NS, 'InformationURL'); $this->PrivacyStatementURL = SAML2_Utils::extractLocalizedStrings($xml, self::NS, 'PrivacyStatementURL');
foreach (SAML2_Utils::xpQuery($xml, './*') as $node) { if ($node->namespaceURI === self::NS) { switch ($node->localName) { case 'Keywords': $this->Keywords[] = new SAML2_XML_mdui_Keywords($node); break; case 'Logo': $this->Logo[] = new SAML2_XML_mdui_Logo($node); break; } } else { $this->children[] = new SAML2_XML_Chunk($node); } } }
/** * Convert this UIInfo to XML. * * @param DOMElement $parent The element we should append to. */ public function toXML(DOMElement $parent) { assert('is_array($this->DisplayName)'); assert('is_array($this->InformationURL)'); assert('is_array($this->PrivacyStatementURL)'); assert('is_array($this->Keywords)'); assert('is_array($this->Logo)'); assert('is_array($this->children)');
if (!empty($this->DisplayName) || !empty($this->Description) || !empty($this->InformationURL) || !empty($this->PrivacyStatementURL) || !empty($this->Keywords) || !empty($this->Logo) || !empty($this->children)) { $doc = $parent->ownerDocument;
$e = $doc->createElementNS(self::NS, 'mdui:UIInfo'); $parent->appendChild($e);
SAML2_Utils::addStrings($e, self::NS, 'mdui:DisplayName', TRUE, $this->DisplayName); SAML2_Utils::addStrings($e, self::NS, 'mdui:Description', TRUE, $this->Description); SAML2_Utils::addStrings($e, self::NS, 'mdui:InformationURL', TRUE, $this->InformationURL); SAML2_Utils::addStrings($e, self::NS, 'mdui:PrivacyStatementURL', TRUE, $this->PrivacyStatementURL);
if (!empty($this->Keywords)) { foreach ($this->Keywords as $child) { $child->toXML($e); } }
if (!empty($this->Logo)) { foreach ($this->Logo as $child) { $child->toXML($e); } }
if (!empty($this->children)) { foreach ($this->children as $child) { $child->toXML($e); } } } return $e; }
}
|