From 4d8b569ba5086e7c9b9555d01f2fd3cf22bbedc4 Mon Sep 17 00:00:00 2001
From: Fil <fil@rezo.net>
Date: Mon, 28 May 2007 10:11:10 +0000
Subject: [PATCH] [9000] avait tue la langue dans les modeles (Paolo)

---
 ecrire/action/redirect.php |  1 +
 ecrire/inc/lang.php        | 12 ++++++++---
 ecrire/inc/texte.php       | 42 +++++++++++++++++++-------------------
 ecrire/public.php          |  5 +++--
 4 files changed, 34 insertions(+), 26 deletions(-)

diff --git a/ecrire/action/redirect.php b/ecrire/action/redirect.php
index 368c94d189..04246accc3 100644
--- a/ecrire/action/redirect.php
+++ b/ecrire/action/redirect.php
@@ -21,6 +21,7 @@ charger_generer_url();
 function action_redirect_dist()
 {
   global $redirect;
+  $redirect = _request('redirect');
 
   if ($mode = _request('var_mode')) $mode = "var_mode=$mode";
 
diff --git a/ecrire/inc/lang.php b/ecrire/inc/lang.php
index 594bdc2f06..2e911e87be 100644
--- a/ecrire/inc/lang.php
+++ b/ecrire/inc/lang.php
@@ -77,11 +77,17 @@ function lang_dir($lang='', $droitier='ltr', $gaucher='rtl') {
 // http://doc.spip.org/@lang_typo
 function lang_typo($lang='') {
 	if (!$lang) {
-		$lang = isset($GLOBALS['lang_objet']) ? $GLOBALS['lang_objet'] : $GLOBALS['spip_lang'];
+		$lang = isset($GLOBALS['lang_objet'])
+			? $GLOBALS['lang_objet']
+			: $GLOBALS['spip_lang'];
 	}
-	if ($lang == 'eo' OR $lang == 'fr' OR substr($lang, 0, 3) == 'fr_' OR $lang == 'cpf')
+	if ($lang == 'eo'
+	OR $lang == 'fr'
+	OR substr($lang, 0, 3) == 'fr_'
+	OR $lang == 'cpf')
 		return 'fr';
-	else	return 'en';
+	else
+		return 'en';
 }
 
 // gestion de la globale $lang_objet pour que les textes soient affiches
diff --git a/ecrire/inc/texte.php b/ecrire/inc/texte.php
index 931a94e8d7..56ef7a88fd 100644
--- a/ecrire/inc/texte.php
+++ b/ecrire/inc/texte.php
@@ -457,28 +457,31 @@ function typo($letexte, $echapper=true) {
 	// Caracteres de controle "illegaux"
 	$letexte = corriger_caracteres($letexte);
 
-	// Proteger les caracteres typographiques a l'interieur des tags html
-	$protege = "!':;?~%";
-	$illegal = "\x1\x2\x3\x4\x5\x6\x7";
-	if (preg_match_all(",</?[a-z!][^<>]*[!':;\?~%][^<>]*>,imsS",
-	$letexte, $regs, PREG_SET_ORDER)) {
-		foreach ($regs as $reg) {
-			$insert = $reg[0];
-			// hack: on transforme les caracteres a proteger en les remplacant
-			// par des caracteres "illegaux". (cf corriger_caracteres())
-			$insert = strtr($insert, $protege, $illegal);
-			$letexte = str_replace($reg[0], $insert, $letexte);
+	// Charger & appliquer la fonction de typographie
+	if ($typographie = charger_fonction(lang_typo(), 'typographie')) {
+
+		// Proteger les caracteres typographiques a l'interieur des tags html
+		$protege = "!':;?~%";
+		$illegal = "\x1\x2\x3\x4\x5\x6\x7";
+		if (preg_match_all(",</?[a-z!][^<>]*[!':;\?~%][^<>]*>,imsS",
+		$letexte, $regs, PREG_SET_ORDER)) {
+			foreach ($regs as $reg) {
+				$insert = $reg[0];
+				// hack: on transforme les caracteres a proteger en les remplacant
+				// par des caracteres "illegaux". (cf corriger_caracteres())
+				$insert = strtr($insert, $protege, $illegal);
+				$letexte = str_replace($reg[0], $insert, $letexte);
+			}
 		}
-	}
 
 
-	$lang = lang_typo();
-	lang_select($lang);
-	$typographie = charger_fonction($lang, 'typographie');
+		$letexte = $typographie($letexte);
+
+		// Retablir les caracteres proteges
+		$letexte = strtr($letexte, $illegal, $protege);
+
+	}
 
-	$letexte = $typographie($letexte);
-	// Retablir les caracteres proteges
-	$letexte = strtr($letexte, $illegal, $protege);
 
 	//
 	// Installer les modeles, notamment images et documents ;
@@ -495,9 +498,6 @@ function typo($letexte, $echapper=true) {
 	if (function_exists('apres_typo'))
 		$letexte = apres_typo($letexte);
 
-	// remettre la langue precedente
-	if ($lang) lang_select();
-
 	// reintegrer les echappements
 	if ($echapper)
 		$letexte = echappe_retour($letexte, 'TYPO');
diff --git a/ecrire/public.php b/ecrire/public.php
index c6c7353f1c..e17ef8f403 100644
--- a/ecrire/public.php
+++ b/ecrire/public.php
@@ -56,8 +56,9 @@ if (defined('_INC_PUBLIC')) {
 		include_spip('inc/headers');
 		$var_f = charger_fonction($action, 'action');
 		$var_f();
-		if (_request('redirect'))
-			redirige_par_entete(urldecode(_request('redirect')));
+		if ($GLOBALS['redirect']
+		OR $GLOBALS['redirect'] = _request('redirect'))
+			redirige_par_entete(urldecode($GLOBALS['redirect']));
 		if (!headers_sent())
 			http_status(204); // No Content
 		exit;
-- 
GitLab