From 57da11e1b58fda63948e59c507b7e9734596b1ff Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Thu, 6 Sep 2007 14:00:10 +0000
Subject: [PATCH] =?UTF-8?q?Multibase:=20pr=C3=A9paration=20de=20l'affichag?=
 =?UTF-8?q?e=20des=20documents=20indiqu=C3=A9s=20par=20un=20mod=C3=A8le=20?=
 =?UTF-8?q?distant.=20La=20fonction=20'''typo'''=20est=20r=C3=A9organis?=
 =?UTF-8?q?=C3=A9e=20afin=20que=20les=20mod=C3=A8les=20soient=20trait?=
 =?UTF-8?q?=C3=A9es=20avant=20la=20correction=20typographique=20proprement?=
 =?UTF-8?q?=20dite.=20Par=20ailleurs,=20suite=20=C3=A0=20la=20cr=C3=A9atio?=
 =?UTF-8?q?n=20des=20pipeline=20'''pre=5Ftypo''',=20'''post=5Ftypo''',=20'?=
 =?UTF-8?q?''pre=5Fedition'''=20et=20'''post=5Fedition''',=20les=20fonctio?=
 =?UTF-8?q?ns=20optionelles=20'''avant=5Ftypo'''=20et=20'''apres=5Ftypo'''?=
 =?UTF-8?q?=20sont=20consid=C3=A9r=C3=A9es=20comme=20obsol=C3=A8tes.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ecrire/inc/texte.php | 71 ++++++++++++++++++++++++--------------------
 1 file changed, 38 insertions(+), 33 deletions(-)

diff --git a/ecrire/inc/texte.php b/ecrire/inc/texte.php
index 12c62ffe26..3af3a5e692 100644
--- a/ecrire/inc/texte.php
+++ b/ecrire/inc/texte.php
@@ -445,12 +445,9 @@ function safehtml($t) {
 	return interdire_scripts($t); // interdire le php (2 precautions)
 }
 
-
-//
 // Typographie generale
-// note: $echapper = false lorsqu'on appelle depuis propre() [pour accelerer]
-//
-// http://doc.spip.org/@typo
+// avec protection prealable des balises HTML et SPIP
+
 function typo($letexte, $echapper=true) {
 
 	// Plus vite !
@@ -460,11 +457,35 @@ function typo($letexte, $echapper=true) {
 	if ($echapper)
 		$letexte = echappe_html($letexte, 'TYPO');
 
-	// Appeler les fonctions de pre-traitement
+	//
+	// Installer les modeles, notamment images et documents ;
+	//
+	// NOTE : dans propre() ceci s'execute avant les tableaux a cause du "|",
+	// et apres les liens a cause du traitement de [<imgXX|right>->URL]
+	$letexte = traiter_modeles($mem = $letexte, false, $echapper ? 'TYPO' : '');
+	if ($letexte != $mem) $echapper = true;
+	unset($mem);
+
+	$letexte = corriger_typo($letexte);
+
+	// reintegrer les echappements
+	if ($echapper)
+		$letexte = echappe_retour($letexte, 'TYPO');
+
+	// l'espace prive securise ici
+	$letexte = interdire_scripts($letexte);
+
+	return $letexte;
+}
+
+// Correcteur typographique
+
+function corriger_typo($letexte) {
+
+	// Plus vite !
+	if (!$letexte) return $letexte;
+
 	$letexte = pipeline('pre_typo', $letexte);
-	// old style
-	if (function_exists('avant_typo'))
-		$letexte = avant_typo($letexte);
 
 	// Caracteres de controle "illegaux"
 	$letexte = corriger_caracteres($letexte);
@@ -494,36 +515,20 @@ function typo($letexte, $echapper=true) {
 
 	}
 
-
-	//
-	// Installer les modeles, notamment images et documents ;
-	//
-	// NOTE : dans propre() ceci s'execute avant les tableaux a cause du "|",
-	// et apres les liens a cause du traitement de [<imgXX|right>->URL]
-	$letexte = traiter_modeles($mem = $letexte, false, $echapper ? 'TYPO' : '');
-	if ($letexte != $mem) $echapper = true;
-	unset($mem);
-
-	// Appeler les fonctions de post-traitement
 	$letexte = pipeline('post_typo', $letexte);
-	// old style
-	if (function_exists('apres_typo'))
-		$letexte = apres_typo($letexte);
-
-	// reintegrer les echappements
-	if ($echapper)
-		$letexte = echappe_retour($letexte, 'TYPO');
 
 	# un message pour abs_url - on est passe en mode texte
 	$GLOBALS['mode_abs_url'] = 'texte';
 
-	// Dans l'espace prive, securiser ici
-	if (!_DIR_RESTREINT)
-		$letexte = interdire_scripts($letexte);
-
 	return $letexte;
 }
 
+//
+
+// note: $echapper = false lorsqu'on appelle depuis propre() [pour accelerer]
+//
+// http://doc.spip.org/@typo
+
 // analyse des raccourcis issus de [TITRE->RACCOURCInnn] et connexes
 
 define('_RACCOURCI_URL', ',^\s*(\w*?)\s*(\d+)(\?(.*?))?(#([^\s]*))?\s*$,S');
@@ -942,7 +947,7 @@ define('_RACCOURCI_MODELE',
 define('_RACCOURCI_MODELE_DEBUT', '@^' . _RACCOURCI_MODELE .'@is');
 
 // http://doc.spip.org/@traiter_modeles
-function traiter_modeles($texte, $doublons=false, $echap='') {
+function traiter_modeles($texte, $doublons=false, $echap='', $connect='') {
 	// detecter les modeles (rapide)
 	if (preg_match_all('/<[a-z_-]{3,}\s*[0-9|]+/iS',
 	$texte, $matches, PREG_SET_ORDER)) {
@@ -972,7 +977,7 @@ function traiter_modeles($texte, $doublons=false, $echap='') {
 				$texte .= preg_replace(',[|][^|=]*,s',' ',$regs[4]);
 			# version normale
 			else {
-				$modele = inclure_modele($regs[2], $regs[3], $regs[4], $lien);
+			  $modele = inclure_modele($regs[2], $regs[3], $regs[4], $lien, $connect);
 
 				// le remplacer dans le texte
 				if ($modele !== false) {
-- 
GitLab