diff --git a/ecrire/inc/texte.php b/ecrire/inc/texte.php index 12c62ffe26915df72f3183f53302960bf4ba63f4..3af3a5e6921dfc4e222f317500265121bc70bac8 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) {