1<?php
2
3namespace SAML2\XML\md;
4
5use SAML2\Constants;
6use SAML2\Utils;
7use SAML2\XML\saml\Attribute;
8
9/**
10 * Class representing SAML 2 metadata RequestedAttribute.
11 *
12 * @package SimpleSAMLphp
13 */
14class RequestedAttribute extends Attribute
15{
16    /**
17     * Whether this attribute is required.
18     *
19     * @var bool|null
20     */
21    public $isRequired = null;
22
23    /**
24     * Initialize an RequestedAttribute.
25     *
26     * @param \DOMElement|null $xml The XML element we should load.
27     */
28    public function __construct(\DOMElement $xml = null)
29    {
30        parent::__construct($xml);
31
32        if ($xml === null) {
33            return;
34        }
35
36        $this->isRequired = Utils::parseBoolean($xml, 'isRequired', null);
37    }
38
39    /**
40     * Convert this RequestedAttribute to XML.
41     *
42     * @param \DOMElement $parent The element we should append this RequestedAttribute to.
43     * @return \DOMElement
44     */
45    public function toXML(\DOMElement $parent)
46    {
47        assert(is_bool($this->isRequired) || is_null($this->isRequired));
48
49        $e = $this->toXMLInternal($parent, Constants::NS_MD, 'md:RequestedAttribute');
50
51        if ($this->isRequired === true) {
52            $e->setAttribute('isRequired', 'true');
53        } elseif ($this->isRequired === false) {
54            $e->setAttribute('isRequired', 'false');
55        }
56
57        return $e;
58    }
59}
60