From 8ee3c23b1777edbcbc245cab926ecbf92ed76006 Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Fri, 20 Aug 2004 10:12:53 +0000 Subject: [PATCH] =?UTF-8?q?d=C3=A9bogage=20surligne=20+=20carfte=20d'inden?= =?UTF-8?q?tit=C3=A9=20des=20caches=20inclus?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/inc_surligne.php3 | 68 +++++++++++++++++++--------------------- inc-calcul.php3 | 24 ++++++-------- inc-public-global.php3 | 9 ++++-- 3 files changed, 49 insertions(+), 52 deletions(-) diff --git a/ecrire/inc_surligne.php3 b/ecrire/inc_surligne.php3 index 5a36bb5e14..bab595413e 100644 --- a/ecrire/inc_surligne.php3 +++ b/ecrire/inc_surligne.php3 @@ -90,9 +90,9 @@ function surligner_mots($page, $mots) { if (!$mots_surligne) return $page; - $regexp = '/((^|>)([^<]*[^[:alnum:]_<])?)((' . - join('|', $mots_surligne). - ')[[:alnum:]_]*?)/Uis'; + $regexp = '/((^|>)([^<]*[^[:alnum:]_<])?)((' + . join('|', $mots_surligne) + . ')[[:alnum:]_]*?)/Uis'; // en cas de surlignement limite' (champs #SURLIGNE), // le compilateur a inse're' les balises de surlignement @@ -100,41 +100,39 @@ function surligner_mots($page, $mots) { // On boucle pour le cas ou` il y a plusieurs zones $p = strpos($page, MARQUEUR_SURLIGNE); - if ($p) - { - $debut = ''; - while ($p) { - $debut .= substr($page, 0, $p-1); - $page = substr($page, $p+strlen(MARQUEUR_SURLIGNE)); - $q = strpos($page,MARQUEUR_FSURLIGNE); - $debut .= trouve_surligne(substr($page, 0, $q-1), $regexp); - $page = substr($page, $q+strlen(MARQUEUR_SURLIGNE)+1); - $p = strpos($page,MARQUEUR_SURLIGNE); - } - return $debut . $page; - } else { - - // pour toute la page: ignorer ce qui est avant </head> ou <body> - $re = '/<\/head>|<body[^>]*>/i'; - if (preg_match($re, $page, $exp)) { - $debut = substr($page, 0, strpos($page, $exp[0])+strlen($exp[0])); - $page = substr($page, strlen($debut)); - } else - $debut = ''; - return $debut . trouve_surligne($page, $regexp); - } + if ($p) { + $debut = ''; + while ($p) { + $debut .= substr($page, 0, $p-1); + $page = substr($page, $p+strlen(MARQUEUR_SURLIGNE)); + $q = strpos($page,MARQUEUR_FSURLIGNE); + $debut .= trouve_surligne(substr($page, 0, $q-1), $regexp); + $page = substr($page, $q+strlen(MARQUEUR_SURLIGNE)+1); + $p = strpos($page,MARQUEUR_SURLIGNE); + } + return $debut . $page; + } else { + // pour toute la page: ignorer ce qui est avant </head> ou <body> + $re = '/<\/head>|<body[^>]*>/i'; + if (preg_match($re, $page, $exp)) { + $debut = substr($page, 0, strpos($page, $exp[0])+strlen($exp[0])); + $page = substr($page, strlen($debut)); + } else + $debut = ''; + return $debut . trouve_surligne($page, $regexp); + } } function trouve_surligne($page, $regexp) { - // Remplacer une occurrence de mot maxi par espace inter-tag - // (max 1 par paragraphe, sauf italiques etc.) - // se limiter a 4 remplacements pour ne pas bouffer le CPU ; - // traiter <textarea...>....</textarea> comme un tag. - global $nombre_surligne; - $page = preg_replace('/(<textarea[^>]*>)([^<>]*)(<\/textarea>)/Uis', '\1<<SPIP\2>>\3', $page); - $page = preg_replace($regexp, '\1<span class="spip_surligne">\4</span>', $page, $nombre_surligne); - $page = preg_replace('/(<textarea[^>]*>)<<SPIP([^<>]*)>>(<\/textarea>)/Uis', '\1\2\3', $page); - return $page ; + // Remplacer une occurrence de mot maxi par espace inter-tag + // (max 1 par paragraphe, sauf italiques etc.) + // se limiter a 4 remplacements pour ne pas bouffer le CPU ; + // traiter <textarea...>....</textarea> comme un tag. + global $nombre_surligne; + $page = preg_replace('/(<textarea[^>]*>)([^<>]*)(<\/textarea>)/Uis', '\1<<SPIP\2>>\3', $page); + $page = preg_replace($regexp, '\1<span class="spip_surligne">\4</span>', $page, $nombre_surligne); + $page = preg_replace('/(<textarea[^>]*>)<<SPIP([^<>]*)>>(<\/textarea>)/Uis', '\1\2\3', $page); + return $page ; } ?> diff --git a/inc-calcul.php3 b/inc-calcul.php3 index 3a55b2d2d7..48825fe785 100644 --- a/inc-calcul.php3 +++ b/inc-calcul.php3 @@ -196,7 +196,7 @@ function calculer_contexte() { return $contexte; } -function calculer_page_globale($cache, $contexte_local, $fond, $var_recherche) { +function calculer_page_globale($cache, $contexte_local, $fond) { global $spip_lang; // Gestion des URLs personnalises - sale mais historique @@ -229,12 +229,6 @@ function calculer_page_globale($cache, $contexte_local, $fond, $var_recherche) { // Go to work ! $page = cherche_page($cache, $contexte_local, $fond, $id_rubrique_fond, $spip_lang); - // Surligne - if ($var_recherche) { - include_ecrire("inc_surligne.php3"); - $page['texte'] = surligner_mots($page['texte'], $var_recherche); - } - $signal = array(); foreach(array('id_parent', 'id_rubrique', 'id_article', 'id_auteur', 'id_breve', 'id_forum', 'id_secteur', 'id_syndic', 'id_syndic_article', @@ -242,14 +236,11 @@ function calculer_page_globale($cache, $contexte_local, $fond, $var_recherche) { if ($contexte_local[$val]) $signal['contexte'][$val] = intval($contexte_local[$val]); } - $signal['process_ins'] = $page['process_ins']; # ne marchera qu'avec les inclusions 'html' (versus 'php') # $signal['fraicheur'] = $page['fraicheur']; - $signal = "<!-- ".str_replace("\n", " ", serialize($signal))." -->\n"; - - $page['texte'] = $signal.$page['texte']; + $page['signal'] = $signal; return $page; } @@ -264,7 +255,7 @@ function calculer_page($chemin_cache, $elements, $delais, $inclusion=false) { $contexte_inclus = $elements['contexte']; $page = cherche_page($chemin_cache, $contexte_inclus, - $elements['fond'], + $elements['fond'], $contexte_inclus['id_rubrique'] ); } @@ -291,13 +282,16 @@ function calculer_page($chemin_cache, $elements, $delais, $inclusion=false) { } $page = calculer_page_globale($chemin_cache, $elements['contexte'], - $elements['fond'], - $elements['var_recherche']); + $elements['fond']); } + $page['signal']['process_ins'] = $page['process_ins']; + $signal = "<!-- ".str_replace("\n", " ", + serialize($page['signal']))." -->\n"; + // Enregistrer le fichier cache if ($delais>0) - ecrire_fichier($chemin_cache, $page['texte']); + ecrire_fichier($chemin_cache, $signal.$page['texte']); return $page; } diff --git a/inc-public-global.php3 b/inc-public-global.php3 index 0fc8d69aff..cfdfce0a24 100644 --- a/inc-public-global.php3 +++ b/inc-public-global.php3 @@ -21,8 +21,7 @@ function obtenir_page ($contexte, $chemin_cache, $delais, $use_cache, $fond, $in spip_timer(); $page = calculer_page($chemin_cache, array('fond' => $fond, - 'contexte' => $contexte, - 'var_recherche' => $HTTP_GET_VARS['var_recherche']), + 'contexte' => $contexte), $delais, $inclusion); if ($chemin_cache) @@ -127,6 +126,12 @@ function afficher_page_globale ($fond, $delais, &$use_cache) { $page['texte'] = $page_boutons_admin; $page['process_ins'] = 'php'; } + + // Surligne + if ($GLOBALS['var_recherche']) { + include_ecrire("inc_surligne.php3"); + $page['texte'] = surligner_mots($page['texte'], $GLOBALS['var_recherche']); + } } if ($chemin_cache) $page['cache'] = $chemin_cache; -- GitLab