This repository has been archived on 2023-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
spip-saml/inc/simplesamlphp/lib/SAML2/XML/md/AttributeConsumingService.php

125 lines
2.9 KiB
PHP

<?php
/**
* Class representing SAML 2 Metadata AttributeConsumingService element.
*
* @package simpleSAMLphp
* @version $Id$
*/
class SAML2_XML_md_AttributeConsumingService {
/**
* The index of this AttributeConsumingService.
*
* @var int
*/
public $index;
/**
* Whether this is the default AttributeConsumingService.
*
* @var bool|NULL
*/
public $isDefault = NULL;
/**
* The ServiceName of this AttributeConsumingService.
*
* This is an associative array with language => translation.
*
* @var array
*/
public $ServiceName = array();
/**
* The ServiceDescription of this AttributeConsumingService.
*
* This is an associative array with language => translation.
*
* @var array
*/
public $ServiceDescription = array();
/**
* The RequestedAttribute elements.
*
* This is an array of SAML_RequestedAttributeType elements.
*
* @var array
*/
public $RequestedAttribute = array();
/**
* Initialize / parse an AttributeConsumingService.
*
* @param DOMElement|NULL $xml The XML element we should load.
*/
public function __construct(DOMElement $xml = NULL) {
if ($xml === NULL) {
return;
}
if (!$xml->hasAttribute('index')) {
throw new Exception('Missing index on AttributeConsumingService.');
}
$this->index = (int)$xml->getAttribute('index');
$this->isDefault = SAML2_Utils::parseBoolean($xml, 'isDefault', NULL);
$this->ServiceName = SAML2_Utils::extractLocalizedStrings($xml, SAML2_Const::NS_MD, 'ServiceName');
if (empty($this->ServiceName)) {
throw new Exception('Missing ServiceName in AttributeConsumingService.');
}
$this->ServiceDescription = SAML2_Utils::extractLocalizedStrings($xml, SAML2_Const::NS_MD, 'ServiceDescription');
foreach (SAML2_Utils::xpQuery($xml, './saml_metadata:RequestedAttribute') as $ra) {
$this->RequestedAttribute[] = new SAML2_XML_md_RequestedAttribute($ra);
}
}
/**
* Convert to DOMElement.
*
* @param DOMElement $parent The element we should append this AttributeConsumingService to.
*/
public function toXML(DOMElement $parent) {
assert('is_int($this->index)');
assert('is_null($this->isDefault) || is_bool($this->isDefault)');
assert('is_array($this->ServiceName)');
assert('is_array($this->ServiceDescription)');
assert('is_array($this->RequestedAttribute)');
$doc = $parent->ownerDocument;
$e = $doc->createElementNS(SAML2_Const::NS_MD, 'md:AttributeConsumingService');
$parent->appendChild($e);
$e->setAttribute('index', (string)$this->index);
if ($this->isDefault === TRUE) {
$e->setAttribute('isDefault', 'true');
} elseif ($this->isDefault === FALSE) {
$e->setAttribute('isDefault', 'false');
}
SAML2_Utils::addStrings($e, SAML2_Const::NS_MD, 'md:ServiceName', TRUE, $this->ServiceName);
SAML2_Utils::addStrings($e, SAML2_Const::NS_MD, 'md:ServiceDescription', TRUE, $this->ServiceDescription);
foreach ($this->RequestedAttribute as $ra) {
$ra->toXML($e);
}
return $e;
}
}