From 8ddca1bf7ae31467b9a12341b3c8de1a614a4459 Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Mon, 28 Jul 2003 08:44:31 +0000 Subject: [PATCH] * compatibilite php3 de la gestion de la pile des langues (script de charlie@nexen.net = Cedric Fronteau) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * remettre la langue du site dans la pile de langue avant d'INCLURE(), sinon on risque certaines incohérences --- ecrire/inc_filtres.php3 | 52 +++++++++++++++++++++++++++++++++++++++-- inc-calcul-squel.php3 | 7 ++++-- 2 files changed, 55 insertions(+), 4 deletions(-) diff --git a/ecrire/inc_filtres.php3 b/ecrire/inc_filtres.php3 index c705c0aac0..5a2f077b71 100644 --- a/ecrire/inc_filtres.php3 +++ b/ecrire/inc_filtres.php3 @@ -453,7 +453,7 @@ function lang_rtl ($lang) { function lang_select ($lang='') { global $pile_langues, $spip_lang; include_ecrire('inc_lang.php3'); - array_push($pile_langues, $spip_lang); + php3_array_push($pile_langues, $spip_lang); changer_langue(lang_supprimer_point($lang)); } @@ -461,7 +461,7 @@ function lang_select ($lang='') { function lang_dselect ($rien='') { global $pile_langues; include_ecrire('inc_lang.php3'); - changer_langue(array_pop($pile_langues)); + changer_langue(php3_array_pop($pile_langues)); } // nettoyer les langues affectees automatiquement (cf. calculer_langues_rubriques) @@ -469,4 +469,52 @@ function lang_supprimer_point ($langue) { return ereg_replace('^\.', '', $langue); } + +// +// array_push et array_pop pour php3 (a virer si on n'a pas besoin de la compatibilite php3 +// et a passer dans inc_version si on a besoin de ces fonctions ailleurs qu'ici) +// +/* + * Avertissement : Cette librairie de fonctions PHP est distribuee avec l'espoir + * qu'elle sera utile, mais elle l'est SANS AUCUNE GARANTIE; sans meme la garantie de + * COMMERCIALISATION ou d'UTILITE POUR UN BUT QUELCONQUE. + * Elle est librement redistribuable tant que la presente licence, ainsi que les credits des + * auteurs respectifs de chaque fonctions sont laisses ensembles. + * En aucun cas, Nexen.net ne pourra etre tenu responsable de quelques consequences que ce soit + * de l'utilisation ou la mesutilisation de ces fonctions PHP. + */ +/**** + * Titre : array_push() et array_pop() pour PHP3 + * Auteur : Cedric Fronteau + * Email : charlie@nexen.net + * Url : + * Description : Implementation de array_push() et array_pop pour PHP3 +****/ +function php3_array_push(&$stack,$value){ + if (!is_array($stack)) + return FALSE; + end($stack); + do { + $k = key($stack); + if (is_long($k)); + break; + } while(prev($stack)); + + if (is_long($k)) + $stack[$k+1] = $value; + else + $stack[0] = $value; + return count($stack); +} + +function php3_array_pop(&$stack){ + if (!is_array($stack) || count($stack) == 0) + return NULL; + end($stack); + $v = current($stack); + $k = key($stack); + unset($stack[$k]); + return $v; +} + ?> diff --git a/inc-calcul-squel.php3 b/inc-calcul-squel.php3 index 0593dd35fd..9766aff1cc 100644 --- a/inc-calcul-squel.php3 +++ b/inc-calcul-squel.php3 @@ -2169,6 +2169,7 @@ function calculer_texte($texte) ereg('^\\{(.*)\\}$', trim($match[2]), $params); $code .= " \$retour .= '<"."?php ';\n"; + $code .= " \$retour .= 'include_ecrire(\'inc_filtres.php3\'); lang_select(lire_meta(\'langue_site\'));';\n"; $code .= " \$retour .= '\$contexte_inclus = \'\'; ';\n"; if ($params) { @@ -2194,9 +2195,11 @@ function calculer_texte($texte) include(\'$dossier_squelettes/$fichier\'); } else { include(\'$fichier\'); - } ?".">';\n"; + }';\n"; } else - $code .= " \$retour .= 'include(\'$fichier\'); ?".">';\n"; + $code .= " \$retour .= 'include(\'$fichier\');';\n"; + + $code .= " \$retour .= 'lang_dselect(); ?".">';\n"; } if ($texte) -- GitLab