Exemple #1
0
 /**
  * @param mixed $node DOMNode of XML containing XML source
  * @param mixed $fields.  Defaults to false.  If it is an array, it is the list of the fields we should populate.
  */
 public function loadFromXML($node, $fields = false)
 {
     if (is_string($node)) {
         $doc = new DOMDocument();
         if (!$doc->loadXML($node)) {
             return false;
         }
         $node = $doc->documentRoot;
     } else {
         if ($node instanceof DOMDocument) {
             $node = $node->documentElement;
         }
     }
     if (!$node instanceof DOMElement) {
         I2CE::raiseError("Not XML");
         return false;
     }
     if (!parent::loadFromXML($node, $fields)) {
         return false;
     }
     if ($node->hasAttribute('parent_form') && $node->hasAttribute('parent_id')) {
         $this->setParent($node->getAttribute('parent_form') . '|' . $node->getAttribute('parent_id'));
     }
     if ($node->hasAttribute('created')) {
         $this->createdField->setFromDB($node->getAttribute('created'));
     }
     if ($node->hasAttribute('modified')) {
         $this->lastModifiedField->setFromDB($node->getAttribute('modified'));
     }
     if (($form_nodes = $node->getElementsByTagName('form')) instanceof DOMNodeList) {
         foreach ($form_nodes as $form_node) {
             if (!$form_node instanceof DOMElement || !$form_node->hasAttribute('name') || !$form_node->hasAttribute('id') || !($obj = $this->factory->createContainer($form_node->getAttribute('name') . '|0')) instanceof I2CE_Form) {
                 continue;
             }
             $obj->loadFromXML($form_node);
             $this->addChildForm($obj);
         }
     }
     return true;
 }