// while (ereg("()", $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). "'"; // // Traiter la directive d'inclusion // $fichier = $match[2]; ereg('^\\{(.*)\\}$', trim($match[3]), $params); $code .= ".\n'<"."?php include_ecrire(\'inc_lang.php3\'); lang_select(lire_meta(\'langue_site\')); \$contexte_inclus = \'\';'"; if ($params) { // Traiter chaque parametre de contexte $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) $code .= ".\n'\$contexte_inclus[$var] = \'".addslashes($val)."\';'"; else $code .= ".\n'\$contexte_inclus[$var] = \''.addslashes(" . index_pile($id_boucle, $contextes, $var) . ").'\';'"; } } } // inclure en priorite dans le dossier_squelettes if ($dossier_squelettes) { $code .= ".\n ' if (@file_exists(\'$dossier_squelettes/$fichier\')){ include(\'$dossier_squelettes/$fichier\'); } else { include(\'$fichier\'); }'"; } else $code .= ".\n 'include(\'$fichier\');'"; $code .= ".\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'; $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; } ?>