comparer les numéros de versions

Jean-Christophe Villeneuve <[email protected]> Sat, 17 Apr 2021 11:42:57 +0200
Newsgroups gmane.comp.web.spip.user
Message-ID <[email protected]>
Bonjour

Dans mon plugin escal, je voudrais pouvoir afficher si on a la dernière 
version ou s'il y a une version disponible plus récente.

Sachant que pour une version 4.4.11

#PLUGIN{escal, version}
affiche 4.4.11

#VERSION
affiche 004.004.011

[(#VERSION|replace{0})]
affiche 4.4.11

[(#VAL{/\.0*/}|preg_replace{'.',#VERSION}|ltrim{0})]
affiche 4.4.11


Avec beaucoup d'aide je suis arrivé à ça

<BOUCLE_version(spip_paquets){prefixe=ESCAL}{!par version}{0,1}>

     [(#VERSION|replace{0}|>{#PLUGIN{escal, version}}|oui)
         <h5><:escal:version_maj:> 
[(#VAL{/\.0*/}|preg_replace{'.',#VERSION}|ltrim{0})]</h5>
     ]
     [(#VERSION|replace{0}|>{#PLUGIN{escal, version}}|non)
         <h5><:escal:version_ok:></h5>
     ]
</BOUCLE_version>

Mais avec ce code la version 4.4.8 est considérée comme supérieure à la 
4.4.11

Donc quelques questions :

  * comment faire pour que la 4.4.11 soit bien vue comme supérieure à la
    4.4.8 ?
  * quelle différence entre [(#VERSION|replace{0})] et
    [(#VAL{/\.0*/}|preg_replace{'.',#VERSION}|ltrim{0})] ?
  * ne serait-ce pas plus simple de transformer #PLUGIN{escal, version}
    de 4.4.11 et 004.004.011 pour la comparaison ensuite (mais avec
    quelle regex ?) ?

Merci pour l'aide

JC