", $texte, $match)) { $s = $match[0]; $p = strpos($texte, $s); $debut = substr($texte, 0, $p); $texte = substr($texte, $p + strlen($s)); if ($debut) $code .= ".\n'". ereg_replace("([\\\\'])", "\\\\1", $debut). "'"; $fichier = $match[1]; ereg('^\\{(.*)\\}$', trim($match[2]), $params); $listparams = ""; if ($params) { $params = split("\}[[:space:]]*\{", $params[1]); reset($params); while (list(, $param) = each($params)) { if (ereg("^([_0-9a-zA-Z]+)[[:space:]]*(=[[:space:]]*([^}]+))?$", $param, $args)) { $var = $args[1]; $val = $args[3]; if ($val) $listparams .= "\$contexte_inclus[$var] = \'".addslashes($val)."\';"; else $listparams .= "\$contexte_inclus[$var] = \''.addslashes(" . index_pile($id_boucle, $var) . ").'\';"; } } } $code .= ".\n'<". "?php include_ecrire(\'inc_lang.php3\'); lang_select(lire_meta(\'langue_site\')); \$contexte_inclus = \'\';" . $listparams . "'.\n '" . (($dossier_squelettes) ? (" if (@file_exists(\'$dossier_squelettes/$fichier\')){ include(\'$dossier_squelettes/$fichier\'); } else { include(\'$fichier\'); }' " ) : ("include(\'$fichier\');'")) . ".\n 'lang_dselect(); ?" . ">'"; } if ($texte) $code .= ".\n '".ereg_replace("([\\\\'])", "\\\\1", $texte)."'"; // // Reperer les balises de traduction <:toto:> // while (eregi("(<:(([a-z0-9_]+):)?([a-z0-9_]+)(\|[^>]*)?:>)", $code, $match)) { // // Traiter la balise de traduction multilingue // $chaine = strtolower($match[4]); if (!($module = $match[3])) $module = 'local/public/spip'; // ordre des modules a explorer $remplace = "_T('$module:$chaine')"; if ($filtres = $match[5]) { $filtres = explode('|',substr($filtres,1)); $remplace = applique_filtres($filtres, $remplace); } $code = str_replace($match[1], "'.$remplace.'", $code); } return (ereg('^\..', $code) ? substr($code,2) : $code); } // génère l'application d'une liste de filtres function applique_filtres ($fonctions, $code) { if ($fonctions) { while (list(, $fonc) = each($fonctions)) { if ($fonc) { $arglist = ''; if (ereg('([^\{\}]*)\{(.+)\}$', $fonc, $regs)) { $fonc = $regs[1]; if (trim($regs[2])) $arglist = ','.$regs[2]; } if (function_exists($fonc)) $code = "$fonc($code$arglist)"; else $code = "'Erreur : filtre « $fonc » non défini'"; } } } return $code; } ?>