/***************************************************************************\
* 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. *
$_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);
}
// 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)";
// 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("
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)) {
. $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)) {