Matthieu Marcillaud a écrit :
RealET a écrit :
* patfr@ifrance.com tapuscrivait, le
version 1.7.9.01 : gros bug sur version_compare(), donc on abandonne.
Est-ce que tu as fait un ticket pour expliciter ce bug ?
Non, je n'ai pas fait de ticket pour l'instant.
version_compare est une fonction PHP et son comportement est peut-être propre à ma version...
Ah beh non, c'est pas vrai, pff...
Il va falloir se mettre d'accord sur ce qui marche et sur ce qui marche pas là ;), sur comment on doit faire ou non 
Tu peux expliquer ce qu'il se passe Pat ?
Le Couteau Suisse tente de reste compatible avec toutes les versions de SPIP 1.9, sans l'aide de compat ou de vieilles_defs.
Voici déjà mes anciens jalons :
if (version_compare($GLOBALS['spip_version_code'],'1.93','>='))
@define('_SPIP19300', 1);
if (version_compare($GLOBALS['spip_version_code'],'1.92','>='))
@define('_SPIP19200', 1);
else @define('_SPIP19100', 1);
Bizarrement, ça ne fonctionnait pas. Plein d'erreurs sous SPIP 1.92.
La bonne syntaxe (en tout cas, chez moi...) aurait dû être :
if (version_compare($GLOBALS['spip_version_code'],'1.9300','>='))
@define('_SPIP19300', 1);
if (version_compare($GLOBALS['spip_version_code'],'1.9200','>='))
@define('_SPIP19200', 1);
else @define('_SPIP19100', 1);
Un peu circonspect, j'ai abandonné la fonction PHP version_compare et suis revenu à plus simple :
if ($GLOBALS['spip_version_code']>=1.93) @define('_SPIP19300', 1);
if ($GLOBALS['spip_version_code']>=1.92) @define('_SPIP19200', 1);
else @define('_SPIP19100', 1);
Quelques tests :
echo $GLOBALS['spip_version_code'], '-';
echo version_compare($GLOBALS['spip_version_code'],'1.9300','>=')+1, '-';
echo version_compare($GLOBALS['spip_version_code'],'1.9200','>=')+1, '-';
echo version_compare($GLOBALS['spip_version_code'],'1.93','>=')+1, '-';
echo version_compare($GLOBALS['spip_version_code'],'1.92','>=')+1, '-';
résultat sous SPIP1.92 : 1.9207-1-2-2-2-
alors qu'on devrait avoir : 1.9207-1-2-1-2-
résultat sous SPIP1.93, OK par hasard : 1.9300-2-2-2-2-
Si on met a comparaison sur des nombres, c'est encore pire :
echo $GLOBALS['spip_version_code'], '-';
echo version_compare($GLOBALS['spip_version_code'],1.9300,'>=')+1, '-';
echo version_compare($GLOBALS['spip_version_code'],1.9200,'>=')+1, '-';
echo version_compare($GLOBALS['spip_version_code'],1.93,'>=')+1, '-';
echo version_compare($GLOBALS['spip_version_code'],1.92,'>=')+1, '-';
donne sous SPIP 1.92 : 1.9207-2-2-2-2- !!
Pat
Pat