SAML2\XML\md\ContactPerson::toXML PHP Method

toXML() public method

Convert this ContactPerson to XML.
public toXML ( DOMElement $parent ) : DOMElement
$parent DOMElement The element we should add this contact to.
return DOMElement The new ContactPerson-element.
    public function toXML(\DOMElement $parent)
    {
        assert('is_string($this->contactType)');
        assert('is_array($this->Extensions)');
        assert('is_null($this->Company) || is_string($this->Company)');
        assert('is_null($this->GivenName) || is_string($this->GivenName)');
        assert('is_null($this->SurName) || is_string($this->SurName)');
        assert('is_array($this->EmailAddress)');
        assert('is_array($this->TelephoneNumber)');
        assert('is_array($this->ContactPersonAttributes)');
        $doc = $parent->ownerDocument;
        $e = $doc->createElementNS(Constants::NS_MD, 'md:ContactPerson');
        $parent->appendChild($e);
        $e->setAttribute('contactType', $this->contactType);
        foreach ($this->ContactPersonAttributes as $attr => $val) {
            $e->setAttribute($attr, $val);
        }
        Extensions::addList($e, $this->Extensions);
        if (isset($this->Company)) {
            Utils::addString($e, Constants::NS_MD, 'md:Company', $this->Company);
        }
        if (isset($this->GivenName)) {
            Utils::addString($e, Constants::NS_MD, 'md:GivenName', $this->GivenName);
        }
        if (isset($this->SurName)) {
            Utils::addString($e, Constants::NS_MD, 'md:SurName', $this->SurName);
        }
        if (!empty($this->EmailAddress)) {
            Utils::addStrings($e, Constants::NS_MD, 'md:EmailAddress', false, $this->EmailAddress);
        }
        if (!empty($this->TelephoneNumber)) {
            Utils::addStrings($e, Constants::NS_MD, 'md:TelephoneNumber', false, $this->TelephoneNumber);
        }
        return $e;
    }

Usage Example

    public function testContactPerson()
    {
        $contactType = "other";
        $Company = "Test Company";
        $GivenName = "John";
        $SurName = "Doe";
        $EmailAddress = array('*****@*****.**', '*****@*****.**');
        $TelephoneNumber = array('1-234-567-8901');
        $ContactPersonAttributes = array('testattr' => 'testval', 'testattr2' => 'testval2');
        $mdNamespace = Constants::NS_MD;
        $document = DOMDocumentFactory::fromString(<<<XML
<md:Test xmlns:md="{$mdNamespace}" Binding="urn:something" Location="https://whatever/" xmlns:test="urn:test" test:attr="value">
</md:Test>
XML
);
        $contactPerson = new ContactPerson();
        $contactPerson->contactType = $contactType;
        $contactPerson->Company = $Company;
        $contactPerson->GivenName = $GivenName;
        $contactPerson->SurName = $SurName;
        $contactPerson->EmailAddress = $EmailAddress;
        $contactPerson->TelephoneNumber = $TelephoneNumber;
        $contactPerson->ContactPersonAttributes = $ContactPersonAttributes;
        $contactPerson->toXML($document->firstChild);
        $contactPersonElement = $document->getElementsByTagName('ContactPerson')->item(0);
        $this->assertEquals($contactType, $contactPersonElement->getAttribute('contactType'));
        $this->assertEquals($Company, $contactPersonElement->getElementsByTagName('Company')->item(0)->nodeValue);
        $this->assertEquals($GivenName, $contactPersonElement->getElementsByTagName('GivenName')->item(0)->nodeValue);
        $this->assertEquals($SurName, $contactPersonElement->getElementsByTagName('SurName')->item(0)->nodeValue);
        $this->assertEquals(count($EmailAddress), $contactPersonElement->getElementsByTagName('EmailAddress')->length);
        foreach ($contactPersonElement->getElementsByTagName('EmailAddress') as $element) {
            $this->assertTrue(in_array($element->nodeValue, $EmailAddress));
        }
        $this->assertEquals(count($TelephoneNumber), $contactPersonElement->getElementsByTagName('TelephoneNumber')->length);
        foreach ($contactPersonElement->getElementsByTagName('TelephoneNumber') as $element) {
            $this->assertTrue(in_array($element->nodeValue, $TelephoneNumber));
        }
        foreach ($ContactPersonAttributes as $attr => $val) {
            $this->assertEquals($val, $contactPersonElement->getAttribute($attr));
        }
    }