diff --git a/.make/release/update-xml.php b/.make/release/update-xml.php index 1d28bedc7..42e73a73d 100644 --- a/.make/release/update-xml.php +++ b/.make/release/update-xml.php @@ -7,12 +7,11 @@ * * datamodels/2.x/.../datamodel.*.xml * - * Warning : this will NOT update the XML structure (iTopDesignFormat convert methods) - * * Usage : * `php .make\release\update-xml.php "1.7"` * - * @since 2.7.0 + * @since 2.7.0 simple version change using regexp (not doing conversion) + * @since 3.1.0 N°5405 now does a real conversion ******************************************************************************/ diff --git a/.make/release/update.classes.inc.php b/.make/release/update.classes.inc.php index fa61e99ca..2df288449 100644 --- a/.make/release/update.classes.inc.php +++ b/.make/release/update.classes.inc.php @@ -174,11 +174,21 @@ class DatamodelsXmlFiles extends AbstractGlobFileVersionUpdater */ public function UpdateFileContent($sVersionLabel, $sFileContent, $sFileFullPath) { - //TODO should also CONVERT files ! - return preg_replace( - '/()/', - '${1}'.$sVersionLabel.'${2}', - $sFileContent - ); + require_once APPROOT.'setup/itopdesignformat.class.inc.php'; + $oFileXml = new DOMDocument(); + /** @noinspection PhpComposerExtensionStubsInspection */ + libxml_clear_errors(); + $oFileXml->formatOutput = true; + $oFileXml->preserveWhiteSpace = false; + $oFileXml->loadXML($sFileContent); + + $oFileItopFormat = new iTopDesignFormat($oFileXml); + $bConversionResult = $oFileItopFormat->Convert($sVersionLabel); + + if (false === $bConversionResult) { + throw new Exception("Error when converting $sFileFullPath"); + } + + return $oFileItopFormat->GetXmlAsString(); } }