From d83c45812da9ffd157666caa4508a1f8e12d7ea8 Mon Sep 17 00:00:00 2001 From: Pierre Goiffon Date: Fri, 18 Nov 2022 18:59:40 +0100 Subject: [PATCH] =?UTF-8?q?N=C2=B05405=20UpdateXML=20update=20tool=20now?= =?UTF-8?q?=20do=20a=20full=20file=20conversion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .make/release/update-xml.php | 5 ++--- .make/release/update.classes.inc.php | 22 ++++++++++++++++------ 2 files changed, 18 insertions(+), 9 deletions(-) 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(); } }