J-C
(Jean-Christophe)
Avril 17, 2021, 9:42
1
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)
<:escal:version_maj:> [(#VAL{/\.0*/}|preg_replace{'.',#VERSION}|ltrim{0})]
]
[(#VERSION|replace{0}|>{#PLUGIN{escal, version}}|non)
<:escal:version_ok:>
]
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
Bonjour,
A mon avis tu prends le pb à l’envers. Si tu veux faire du tri numérique, il ne faut pas supprimer les 0 à gauche mais au contraire ajouter ceux qui manquent pour que tout soit au format
#VERSION
affiche 004.004.011
De la sorte tu auras
#VERSION
affiche 004.004.008 < 004.004.011
J-C
(Jean-Christophe)
Avril 17, 2021, 10:06
3
C’était bien le sens de ma dernière question JC
Ce qui signifie que tu dois trouver la méthode en SPIP pour l’équivalent
$tab=explode(#VERSION , ‹ . ›);
$a = $tab[0]; $b = $tab[1]; $c = $tab[c];
#VERSION = CONCATENATE("[%03$a]",".","[%03$b]",".","[%03$c]");
Erreur de ma part en votre faveur.
Recevez la bonne équation
JLuc
(JLuc)
Avril 17, 2021, 10:16
6
Il faut utiliser les fonctions prévues pour :
- version_compare de php
- ou mieux : spip_version_compare de spip
https://code.spip.net/autodoc/tree/ecrire/plugins/installer.php.html#function_spip_version_compare
JL
J-C
(Jean-Christophe)
Avril 17, 2021, 12:02
7
Hmm j’ai essayé de rajouter ça dans ma page
<?php
$tab=explode(#VERSION, '.');
$a = $tab[0]; $b = $tab[1]; $c = $tab[2];
#VERSION = CONCATENATE("[%03$a]",".","[%03$b]",".","[%03$c]");
?>
version : #VERSION
mais plus rien ne s’affiche du coup
Pas de souci avec
<?php
echo "
bonjour monde
";
?>
version : #VERSION
Il doit donc y avoir un problème dans ton code, non ?
Je dirais que #VERSION ne siginifie rien en php mais bon, je suis nul en php
JC
Ben oui, je m’a gouré
pour explode, c’est impérativement le séparateur en 1°.
donc
$tab=explode(’.’, #VERSION );
$a = $tab[0]; $b = $tab[1]; $c = $tab[2];
$array = ("[%03$a]","[%03$b]","[%03$c]");
#VERSION = implode(".",$array);
J-C
(Jean-Christophe)
Avril 17, 2021, 1:23
9
hmm la première ligne fait ecore tout péter.
Et attention, moi ce que je voudrais c’est plutôt transformer #PLUGIN {escal, version} de 4.4.11 et 004.004.011
et pas #VERSION qui s’affiche déjà en 004.004.011
JC
RealET
Avril 17, 2021, 1:26
10
Bonjour,
STOP !
JLuc a donné la réponse.
Merci pour la liste
--
RealET
Bon,
JLuc t’a donné les fonctions compare_version, je pense que ce sera plus efficace que mes bricolages de php vs SPIP…
J-C
(Jean-Christophe)
Avril 17, 2021, 2:03
12
ok mais comment l'utilise-t-on dans un squelette ?
JC
Le 17/04/2021 à 12:16, JLuc a écrit :
Il faut utiliser les fonctions prévues pour :
- version_compare de php
- ou mieux : spip_version_compare de spip
https://code.spip.net/autodoc/tree/ecrire/plugins/installer.php.html#function_spip_version_compare
JL
_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net
Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html
Infos : https://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
Irc : de l'aide à toute heure : http://spip.net/irc
J-C
(Jean-Christophe)
Avril 17, 2021, 2:19
13
Je pense que c'est bon avec
<BOUCLE_version(spip_paquets){prefixe=ESCAL}{!par version}{0,1}>
[(#PLUGIN {escal, version}|spip_version_compare{#VERSION , '>='}|non)
<h5><:escal:version_maj:> [(#VERSION|replace{0})] </h5>
]
[(#PLUGIN {escal, version}|spip_version_compare{#VERSION , '>='}|oui)
<h5><:escal:version_ok:></h5>
]
</BOUCLE_version>
Quelqu'un pour confirmer ?
JC
Le 17/04/2021 à 16:03, Jean-Christophe Villeneuve a écrit :
ok mais comment l'utilise-t-on dans un squelette ?
JC
Le 17/04/2021 à 12:16, JLuc a écrit :
Il faut utiliser les fonctions prévues pour :
- version_compare de php
- ou mieux : spip_version_compare de spip
https://code.spip.net/autodoc/tree/ecrire/plugins/installer.php.html#function_spip_version_compare
JL
_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net
Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html
Infos : https://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
Irc : de l'aide à toute heure : http://spip.net/irc
_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net
Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html
Infos : https://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
Irc : de l'aide à toute heure : http://spip.net/irc