<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>latest version — Forum de PluXml</title>
        <link>https://forum.pluxml.org/index.php?p=/</link>
        <pubDate>Mon, 18 May 2026 13:42:21 +0000</pubDate>
        <language>fr</language>
            <description>latest version — Forum de PluXml</description>
    <atom:link href="https://forum.pluxml.org/index.php?p=/discussions/tagged/latest-version/feed.rss" rel="self" type="application/rss+xml"/>
    <item>
        <title>[script] update structure XML des fichiers articles.</title>
        <link>https://forum.pluxml.org/index.php?p=/discussion/7616/script-update-structure-xml-des-fichiers-articles</link>
        <pubDate>Mon, 26 Feb 2024 18:55:49 +0000</pubDate>
        <category>Entraide</category>
        <dc:creator>gcyrillus-nomade</dc:creator>
        <guid isPermaLink="false">7616@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Bonjour,</p>

<p>J'ai remarqué à plusieurs reprise que certains champs des fichiers XML des articles ne se mettait pas à jours en migrant d'une (trés) vielle version vers une version plus récentes.</p>

<p>Jusque là je m'en sortait généralement dans notepad++ en faisant une  rechercher-&gt; remplacer par <br />
en mettant dans la portion recherche : <code>^.*(&lt;/document&gt;).*$</code> et dans remplacer par</p>

<pre><code>    &lt;title_htmltag&gt;&lt;![CDATA[]]&gt;&lt;/title_htmltag&gt;
    &lt;thumbnail&gt;&lt;![CDATA[]]&gt;&lt;/thumbnail&gt;
    &lt;thumbnail_alt&gt;&lt;![CDATA[]]&gt;&lt;/thumbnail_alt&gt;
    &lt;thumbnail_title&gt;&lt;![CDATA[]]&gt;&lt;/thumbnail_title&gt;
    &lt;date_creation&gt;&lt;![CDATA[]]&gt;&lt;/date_creation&gt;
    &lt;date_update&gt;&lt;![CDATA[]]&gt;&lt;/date_update&gt;
&lt;/document&gt;
</code></pre>

<p>soit sans date, soit avec une date bidon et cela fait la manip sur touts les fichier dans le dossier avec une balise fermante <code>&lt;/document&gt;</code> sans autres distinctions.</p>

<p>Cette fois-ci , j'ai trouver des articles datant de 2013 à 2023 dans un pluxml arrivé en version 5.5  <img src="https://forum.pluxml.org/plugins/emojiextender/emoji/twitter/wink.png" title=";)" alt=";)" height="18" />  La manip notepad++ n'est pas terrible, les articles récents auront des doublons vides et comme il sont déjà en ligne et qu'une MAJ vers la 5.8.9 est envisagée, l'idée de faire une maj manuelle sur quelques centaines de dossiers est impensable.</p>

<p>Dans les fichier pour les mise à jour : update/update.x.x.x.php , le test <code>if(!preg_match('/\]\]&lt;\/title_htmltag&gt;/', $data))</code> est bugué, il ajoute systématiquement la balise , qu'elle soit là ou pas <img src="https://forum.pluxml.org/plugins/emojiextender/emoji/twitter/frown.png" title=":(" alt=":(" height="18" /> .</p>

<p><del>Je vous propose alors ce script qui va ajouter ces balises seulement si elles sont manquantes: </del><br />
<ins>Voir le script et lamethode corrigée par bazooka : <a href="https://forum.pluxml.org/discussion/comment/64833/#Comment_64833" rel="nofollow">https://forum.pluxml.org/discussion/comment/64833/#Comment_64833</a> </ins></p>

<p></p><details><summary>Code édité corrigé selon les conseils du prochain post.</summary>

<pre><code>&lt;?php
    include 'prepend.php';
    include 'top.php';
?&gt;

&lt;header class="action-bar"&gt;&lt;h1&gt;Mise à jours de structure XML des articles.&lt;/h1&gt;&lt;/header&gt;
&lt;p&gt;Il y a &lt;?= count(glob(PLX_ROOT . $plxAdmin-&gt;aConf['racine_articles'] .'*.xml')) ?&gt; fichiers XML dans le dossier.&lt;/p&gt;
&lt;p&gt;Ce script ajoute aux fichiers les balises suivantes si manquantes:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&amp;lt;title_htmltag&amp;gt;&lt;/li&gt;
    &lt;li&gt;&amp;lt;thumbnail&amp;gt;&lt;/li&gt;
    &lt;li&gt;&amp;lt;thumbnail_alt&amp;gt;&lt;/li&gt;
    &lt;li&gt;&amp;lt;thumbnail_title&amp;gt;&lt;/li&gt;
    &lt;li&gt;&amp;lt;date_creation&amp;gt;(reprend la date dans le nom de fichier.)&lt;/li&gt;
    &lt;li&gt;&amp;lt;date_update&amp;gt; (reprend la date dans le nom de fichier.)&lt;/li&gt;
&lt;/ol&gt;
&lt;?php
    $rewrite=false;
    $i=0;
    foreach(glob(PLX_ROOT . $plxAdmin-&gt;aConf['racine_articles'] .'*.xml', GLOB_NOSORT) as $file)   
    { 
        if(preg_match('#^(_?\d{4})\.((?:\d{3},|draft,)*(?:home|\d{3})(?:,\d{3})*)\.(\d{3})\.(\d{12})\.(.*)\.xml$#', basename($file), $capture)) {
            $date = $capture[4];
        }
        if(is_readable($file)) {
            $data = file_get_contents($file);
            if( strpos( $data, 'title_htmltag' ) == false) {
                $data = preg_replace("/&lt;\/document&gt;$/", "\t&lt;title_htmltag&gt;&lt;![CDATA[]]&gt;&lt;/title_htmltag&gt;\n&lt;/document&gt;", $data);
                $rewrite=true;
            }
            if(strpos( $data, 'thumbnail' ) == false) {
                $data = preg_replace("/&lt;\/document&gt;$/", "\t&lt;thumbnail&gt;&lt;![CDATA[]]&gt;&lt;/thumbnail&gt;\n&lt;/document&gt;", $data);
                $rewrite=true;
            }
            if(strpos( $data, 'thumbnail_alt' ) == false) {
                $data = preg_replace("/&lt;\/document&gt;$/", "\t&lt;thumbnail_alt&gt;&lt;![CDATA[]]&gt;&lt;/thumbnail_alt&gt;\n&lt;/document&gt;", $data);
            $rewrite=true;
            }
            if(strpos( $data, 'thumbnail_title' ) == false) {
                $data = preg_replace("/&lt;\/document&gt;$/", "\t&lt;thumbnail_title&gt;&lt;![CDATA[]]&gt;&lt;/thumbnail_title&gt;\n&lt;/document&gt;", $data);
                $rewrite=true;
            }
            if(strpos( $data, 'date_creation' ) == false) {
                $data = preg_replace("/&lt;\/document&gt;$/", "\t&lt;date_creation&gt;&lt;![CDATA[$date]]&gt;&lt;/date_creation&gt;\n&lt;/document&gt;", $data);
                $rewrite=true;
            }
            if(strpos( $data, 'date_update' ) == false) {
                $data = preg_replace("/&lt;\/document&gt;$/", "\t&lt;date_update&gt;&lt;![CDATA[$date]]&gt;&lt;/date_update&gt;\n&lt;/document&gt;", $data);
                $rewrite=true;
            }

            if($rewrite==true){
                ++$i;
                $file_handle = fopen($file, 'w'); 
                fwrite($file_handle, $data);
                fclose($file_handle);

            }
        }
    }  
    echo 'Mise à jour des structures XML de &lt;b style="color:tomato"&gt;'.$i.'&lt;/b&gt; fichier(s) effectuée(s).';

    include  'foot.php';
?&gt;
</code></pre>

<p>&Agrave; mettre dans un fichier **updateArticle.php** dans le repertoire **core/admin** , puis se connecter à l'admin et appeler le fichier `://votresite.com/core/admin/updateArticle.php` </p>

<p>Une fois vos articles reconstruit en mode 2024. Le script ne modifiera les fichiers qu'une seule fois et seulement au besoin</p>

<p>J’espère qu'il vous sera utile.</p>

<p></p></details>

<p><b>Par précaution, faites toujours un backup de vos fichiers avant de le lancer une routine qui va les modifier</b></p>
]]>
        </description>
    </item>
   </channel>
</rss>
