From c3e023332a5a9a415dc5df3de17494b317b17f03 Mon Sep 17 00:00:00 2001
From: Antoine Pitrou <pitrou@free.fr>
Date: Sun, 31 Aug 2003 23:57:39 +0000
Subject: [PATCH] optimisations

---
 ecrire/inc_texte.php3   | 29 ++++++++++++++++-------------
 ecrire/inc_version.php3 |  1 -
 inc-public-global.php3  | 14 +++++++++++++-
 3 files changed, 29 insertions(+), 15 deletions(-)

diff --git a/ecrire/inc_texte.php3 b/ecrire/inc_texte.php3
index 8b51cb0dc4..15b832ba6a 100644
--- a/ecrire/inc_texte.php3
+++ b/ecrire/inc_texte.php3
@@ -126,7 +126,7 @@ function ereg_remplace($cherche_tableau, $remplace_tableau, $texte) {
 // Ne pas afficher le chapo si article virtuel
 function nettoyer_chapo($chapo){
 	if (substr($chapo,0,1) == "="){
-		$chapo = "";	
+		$chapo = "";
 	}
 	return $chapo;
 }
@@ -319,7 +319,7 @@ function typo_fr($letexte) {
 	);
 	$letexte = ereg_remplace($cherche2, $remplace2, $letexte);
 
-	return ($letexte);
+	return $letexte;
 }
 
 // rien sauf les ~
@@ -573,11 +573,13 @@ function traiter_raccourcis($letexte, $les_echap = false, $traiter_les_notes = '
 	//
 	// Notes de bas de page
 	//
+	$texte_a_voir = $letexte;
+	$texte_vu = '';
 	$regexp = "\[\[(([^]]|[^]]\][^]])*)\]\]";
 	/* signifie : deux crochets ouvrants, puis pas-crochet-fermant ou
 		crochet-fermant entoure de pas-crochets-fermants (c'est-a-dire
 		tout sauf deux crochets fermants), puis deux fermants */
-	while (ereg($regexp, $letexte, $regs)){
+	while (ereg($regexp, $texte_a_voir, $regs)) {
 		$note_texte = $regs[1];
 		$num_note = false;
 
@@ -609,8 +611,11 @@ function traiter_raccourcis($letexte, $les_echap = false, $traiter_les_notes = '
 		}
 
 		// dans le texte, mettre l'appel de note a la place de la note
-		$letexte = implode($insert, split($regexp, $letexte, 2));
+		$pos = strpos($texte_a_voir, $regs[0]);
+		$texte_vu .= substr($texte_a_voir, 0, $pos) . $insert;
+		$texte_a_voir = substr($texte_a_voir, $pos + strlen($regs[0]));
 	}
+	$letexte = $texte_vu . $texte_a_voir;
 
 	//
 	// Raccourcis automatiques vers un glossaire
@@ -637,13 +642,11 @@ function traiter_raccourcis($letexte, $les_echap = false, $traiter_les_notes = '
 	$regexp = "\[([^][]*)->(>?)([^]]*)\]";
 	$texte_a_voir = $letexte;
 	$texte_vu = '';
-	while (ereg($regexp, $texte_a_voir, $regs)){
+	while (ereg($regexp, $texte_a_voir, $regs)) {
 		list($insert, $lien) = extraire_lien($regs);
-		$zetexte = split($regexp,$texte_a_voir,2);
-
-		// typo en-dehors des notes
-		$texte_vu .= typo($zetexte[0]).$insert;
-		$texte_a_voir = $zetexte[1];
+		$pos = strpos($texte_a_voir, $regs[0]);
+		$texte_vu .= typo(substr($texte_a_voir, 0, $pos)) . $insert;
+		$texte_a_voir = substr($texte_a_voir, $pos + strlen($regs[0]));
 	}
 	$letexte = $texte_vu.typo($texte_a_voir); // typo de la queue du texte
 
@@ -675,7 +678,7 @@ function traiter_raccourcis($letexte, $les_echap = false, $traiter_les_notes = '
 		$textBegin = substr($letexte, 0, $tableBeginPos);
 		$textTable = substr($letexte, $tableBeginPos + 2, $tableEndPos - $tableBeginPos);
 		$textEnd = substr($letexte, $tableEndPos + 3);
-		
+
 		$newTextTable = "\n<p><table class=\"spip\">";
 		$rowId = 0;
 		$lineEnd = strpos($textTable, "|\n");
@@ -782,8 +785,8 @@ function traiter_raccourcis($letexte, $les_echap = false, $traiter_les_notes = '
 	}
 
 	// paragrapher
-	if (ereg('<p class="spip">',$letexte))
-		$letexte = '<p class="spip">'.ereg_replace('<p class="spip">', "</p>\n".'<p class="spip">',$letexte).'</p>';
+	if (strpos(' '.$letexte, '<p class="spip">'))
+		$letexte = '<p class="spip">'.str_replace('<p class="spip">', "</p>\n".'<p class="spip">', $letexte).'</p>';
 
 	// intertitres & hr compliants
 	$letexte = ereg_replace('(<p class="spip">)?[[:space:]]*@@SPIP_debut_intertitre@@', $debut_intertitre, $letexte);
diff --git a/ecrire/inc_version.php3 b/ecrire/inc_version.php3
index 0afc6d81c7..90caa0de49 100644
--- a/ecrire/inc_version.php3
+++ b/ecrire/inc_version.php3
@@ -840,7 +840,6 @@ function verif_butineur() {
 }
 
 
-
 function spip_debug($message) {
 	if ($GLOBALS['debug'])
 		spip_log($message);
diff --git a/inc-public-global.php3 b/inc-public-global.php3
index e06c51a56e..38a87f3c73 100644
--- a/inc-public-global.php3
+++ b/inc-public-global.php3
@@ -5,6 +5,15 @@ include_local ("inc-cache.php3");
 
 if ($INSECURE['fond'] || $INSECURE['delais']) exit;
 
+/*function t($s = '') {
+	global $t0, $t1;
+	$t1 = explode(" ", microtime());
+	$dt = floor(1000 * ($t1[0] + $t1[1] - $t0[0] - $t0[1])) / 1000;
+	echo "<p>";
+	if ($s) echo "<b>$s :</b> ";
+	echo "$dt secondes</p>\n";
+	$t0 = $t1;
+}*/
 
 //
 // Inclusions de squelettes
@@ -50,6 +59,7 @@ $fichier_cache = generer_nom_fichier_cache($fichier_requete);
 $chemin_cache = "CACHE/$fichier_cache";
 
 $use_cache = utiliser_cache($chemin_cache, $delais);
+
 $ecraser_cache = false;
 $cache_supprimes = Array();
 
@@ -67,6 +77,7 @@ if ($HTTP_COOKIE_VARS['spip_session'] OR $PHP_AUTH_USER) {
 	verifier_visiteur();
 }
 
+
 //
 // Ajouter un forum
 //
@@ -193,6 +204,7 @@ if ($effacer_cache) @unlink($chemin_cache);
 while (list(, $chemin_cache_supprime) = each($cache_supprimes))
 	@unlink($chemin_cache_supprime);
 
+
 //
 // Verifier la presence du .htaccess dans le cache, sinon le generer
 //
@@ -213,7 +225,6 @@ if (!file_exists("CACHE/.htaccess")) {
 }
 
 
-
 //
 // Fonctionnalites administrateur (declenchees par le cookie admin, authentifie ou non)
 //
@@ -288,6 +299,7 @@ if (!$timeout AND $db_ok AND (time()-lire_meta('calcul_rubriques') > 3600)) {
 	calculer_rubriques();
 }
 
+
 //
 // Faire du menage dans le cache (effacer les fichiers tres anciens ou inutilises)
 // Se declenche une fois par heure quand le cache n'est pas recalcule
-- 
GitLab