From d0a50adf325797d290aa2fa5b1771d286fa1ba22 Mon Sep 17 00:00:00 2001 From: Denis Flaven Date: Wed, 25 Nov 2015 16:52:49 +0000 Subject: [PATCH] Properly create DOMNodes with a text content (beware of XML entities inside the text) SVN:trunk[3829] --- setup/modelfactory.class.inc.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/setup/modelfactory.class.inc.php b/setup/modelfactory.class.inc.php index dee1ced55..2dfc095e4 100644 --- a/setup/modelfactory.class.inc.php +++ b/setup/modelfactory.class.inc.php @@ -429,6 +429,7 @@ class ModelFactory $oModuleNode->setAttribute('id', $oModule->GetId()); $oModuleNode->AppendChild($this->oDOMDocument->CreateElement('root_dir', $oModule->GetRootDir())); $oModuleNode->AppendChild($this->oDOMDocument->CreateElement('label', $oModule->GetLabel())); + $this->oModules->AppendChild($oModuleNode); foreach($aDataModels as $sXmlFile) @@ -1995,6 +1996,22 @@ class MFDocument extends DOMDocument } return parent::saveXML(); } + + /** + * Overload createElement to make sure (via new DOMText) that the XML entities are + * always properly escaped + * (non-PHPdoc) + * @see DOMDocument::createElement() + */ + function createElement($sName, $value = null, $namespaceURI = null) + { + $oElement = $this->importNode(new MFElement($sName, null, $namespaceURI)); + if (!empty($value)) + { + $oElement->appendChild(new DOMText($value)); + } + return $oElement; + } /** * For debugging purposes */