X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=www%2Fecrire%2Fpublic%2Fcompiler.php;h=362000afd29b1b6d4adfb549a513b5b4995f42a4;hb=cc641eb476987612f6d6df1a5417c1c5582a8ab8;hp=468243fc9fa248fe91c653c84f6601e042cd357f;hpb=a33c2ba9d919664b3bb0f565f8e9a8b9d8530cdb;p=lhc%2Fweb%2Fclavette_www.git diff --git a/www/ecrire/public/compiler.php b/www/ecrire/public/compiler.php index 468243f..362000a 100644 --- a/www/ecrire/public/compiler.php +++ b/www/ecrire/public/compiler.php @@ -3,7 +3,7 @@ /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * - * Copyright (c) 2001-2014 * + * Copyright (c) 2001-2016 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * @@ -72,10 +72,11 @@ function argumenter_inclure($params, $rejet_filtres, $p, &$boucles, $id_boucle, $erreur_p_i_i = array('zbug_parametres_inclus_incorrects', array('param' => $var->nom_champ)); erreur_squelette($erreur_p_i_i, $p); - } else $l[1] = calculer_liste($val, $p->descr, $boucles, $id_boucle); - break; + break; + } + else $l[1] = calculer_liste($val, $p->descr, $boucles, $id_boucle); } else { - preg_match(",^([^=]*)(=?)(.*)$,", $var->texte,$m); + preg_match(",^([^=]*)(=?)(.*)$,m", $var->texte,$m); $var = $m[1]; $auto = false;; if ($m[2]) { @@ -139,7 +140,7 @@ function calculer_inclure($p, &$boucles, $id_boucle) { $_contexte = argumenter_inclure($p->param, false, $p, $boucles, $id_boucle, true, '', true); if (is_string($p->texte)) { $fichier = $p->texte; - $code = "\"$fichier\""; + $code = "\"".str_replace('"','\"',$fichier)."\""; } else { $code = calculer_liste($p->texte, $p->descr, $boucles, $id_boucle); @@ -183,7 +184,7 @@ function calculer_inclure($p, &$boucles, $id_boucle) { } // s'il y a une extension .php, ce n'est pas un squelette - if (preg_match('/^.+[.]php$/s', $fichier)) { + if ($fichier and preg_match('/^.+[.]php$/s', $fichier)) { $code = sandbox_composer_inclure_php($fichier, $p, $contexte); } else { $_options[] = "\"compil\"=>array($compil)"; @@ -445,6 +446,7 @@ function calculer_boucle_nonrec($id_boucle, &$boucles, $trace) { // afin que le corps de boucle affecte la globale directement $init_lang = "lang_select(\$GLOBALS['spip_lang']);\n\t"; $fin_lang = "lang_select();\n\t"; + $fin_lang_select_public = "\n\t\tlang_select();"; $corps .= "\n\t\tlang_select_public(" @@ -458,6 +460,7 @@ function calculer_boucle_nonrec($id_boucle, &$boucles, $trace) { else { $init_lang = ''; $fin_lang = ''; + $fin_lang_select_public = ''; // sortir les appels au traducteur (invariants de boucle) if (strpos($return, '?php') === false AND preg_match_all("/\W(_T[(]'[^']*'[)])/", $return, $r)) { @@ -502,6 +505,9 @@ function calculer_boucle_nonrec($id_boucle, &$boucles, $trace) { . $boucle->partie . $corps; + // depiler la lang de la boucle si besoin + $corps .= $fin_lang_select_public; + // si le corps est une constante, ne pas appeler le serveur N fois! if (preg_match(CODE_MONOTONE,str_replace("\\'",'',$corps), $r)) {