Date: Wed, 18 Mar 2009 00:01:40 +0000 (GMT)
De: cy_altern <cy_altern@yahoo.fr>
A: SPIP Zone <spip-zone@rezo.net>
Sujet: [SPIP Zone] ajouter <necessite id="PHP"> ?
Du coup, vu le nombre grandissant de plugins qui ont étés codés "PHP 5 only",
ça serait peut être une idée d'intégrer la possibilité de faire un <necessite
id="PHP" version="[5;]" /> (ou toute autre combinaison [mini;max]selon la
syntaxe des versions standard pour les autres id)Je colle ci-dessous le patch qui permet de mettre ça en oeuvre (la détection
de version de PHP ne se fait qu'au niveau de la version majeure et repose sur
un test de type function_exists() pour éviter l'analyse d'un $_SERVER qui peut
être fantaisiste...)
Testé avec SVN [13840]PS: ceci sans chercher à juger si c'est *bien* ou *mal* de coder des plugins
ne fonctionnant pas en PHP4...----------------
fichier /ecrire/inc/plugin.php: ajouter le bloc suivant en ligne 118:// Necessite une version de PHP?
else if ($id=='PHP' AND preg_match(',([\d])?[\d\.]*;([\d]?),', $need['version'], $match)!==0) {
$tests = array(4=>'array_count_values', 5=>'file_put_contents');
if ($v_mini=$match[1]
AND array_key_exists($v_mini,$tests)
AND !function_exists($tests[$v_mini]))
$msg .= "<li>"
._T('plugin_necessite_php_mini', array('version' => $v_mini))
."</li>";
if ($v_max=$match[2]+1
AND array_key_exists($v_max,$tests)
AND function_exists($tests[$v_max]))
$msg .= "<li>"
._T('plugin_necessite_php_maxi', array('version' => $match[2]))
."</li>";
}---------------
fichier /ecrire/lang/ecrire_fr.php: 2 chaînes de langue suplémentaires (après ligne 882)
'plugin_necessite_php_mini' => 'Nécessite PHP en version @version@ minimum.',
'plugin_necessite_php_maxi' => 'Nécessite PHP en version @version@ maximum.',
Je ne vois pas d'utilisation des fonctions
phpversion PHP: phpversion - Manual
version_compare PHP: version_compare - Manual
plugin_version_compatible http://doc.spip.org/@plugin_version_compatible
dans ce patch. Est-ce normal ?