public toXML ( DOMElement $parent ) : DOMElement | ||
$parent | DOMElement | The element we should add this contact to. |
Résultat | 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;
}
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)); } }