/**
  * Adds this resource page to the DOMDocument/XMLElement specified.
  * See toXml() for details.
  * $domtree : DOM document root
  * $parentElement : DOM element where this row will be added
  */
 function addSelfToDocument($domtree, $parentElement)
 {
     // create the root element for this class and append it to our parent
     $xmlRoot = $parentElement->appendChild($domtree->createElement('view'));
     $xmlRoot->appendChild($domtree->createElement('resources_url', home_url() . "/" . get_option('hbo_resources_url')));
     if ($this->isSaved) {
         $xmlRoot->appendChild($domtree->createElement('saved', 'true'));
     }
     $resource = ResourceDBO::fetchResourceById($this->resourceId);
     $xmlRoot->appendChild($domtree->createElement('resourceId', $this->resourceId));
     $xmlRoot->appendChild($domtree->createElement('resourceName', $resource->name));
     $propertiesElem = $xmlRoot->appendChild($domtree->createElement('properties'));
     foreach (ResourceDBO::getPropertiesForResource($this->resourceId) as $prop) {
         $propRow = $domtree->createElement('property');
         if ($prop->selected_yn == 'Y') {
             $attrSelected = $domtree->createAttribute('selected');
             $attrSelected->value = 'true';
             $propRow->appendChild($attrSelected);
         }
         $propRow->appendChild($domtree->createElement('id', $prop->property_id));
         $propRow->appendChild($domtree->createElement('value', $prop->description));
         $propertiesElem->appendChild($propRow);
     }
 }
 /** 
  Generates the following xml:
    <editbooking>
        <id>25</id>
        <firstname>Megan</firstname>
        <lastname>Fox</lastname>
        <referrer>telephone</referrer>
        <depositpaid>10.70</depositpaid>
        <amounttopay>91.35</amounttopay>
        <allocations>
            <bookingName>Megan-1</bookingName>
            ...
        </allocations>
        <comments>
            <comment>...<comment>
            ...
        </comments>
        <properties>
            <property>...</property>
        </properties>
    </editbooking>
 */
 function toXml()
 {
     // create a dom document with encoding utf8
     $domtree = new DOMDocument('1.0', 'UTF-8');
     // create the root element of the xml tree
     $xmlRoot = $domtree->createElement('editbooking');
     $xmlRoot = $domtree->appendChild($xmlRoot);
     $xmlRoot->appendChild($domtree->createElement('homeurl', home_url()));
     $xmlRoot->appendChild($domtree->createElement('id', $this->id));
     $xmlRoot->appendChild($domtree->createElement('firstname', $this->firstname));
     $xmlRoot->appendChild($domtree->createElement('lastname', $this->lastname));
     $xmlRoot->appendChild($domtree->createElement('referrer', $this->referrer));
     $xmlRoot->appendChild($domtree->createElement('depositpaid', number_format($this->depositPaid, 2, '.', '')));
     $xmlRoot->appendChild($domtree->createElement('amounttopay', number_format($this->amountToPay, 2, '.', '')));
     // add current allocations
     $this->allocationTable->addSelfToDocument($domtree, $xmlRoot);
     // add comments
     $this->commentLog->addSelfToDocument($domtree, $xmlRoot);
     $propRoot = $xmlRoot->appendChild($domtree->createElement('properties'));
     foreach (ResourceDBO::getPropertiesForResource() as $prop) {
         $propRow = $domtree->createElement('property');
         $propRow->appendChild($domtree->createElement('id', $prop->property_id));
         $propRow->appendChild($domtree->createElement('value', $prop->description));
         $propRoot->appendChild($propRow);
     }
     error_log($domtree->saveXML());
     return $domtree->saveXML();
 }