From 66514bb355f6504051073421abfb0e8542a75596 Mon Sep 17 00:00:00 2001
From: Fil <fil@rezo.net>
Date: Mon, 16 Mar 2009 07:38:27 +0000
Subject: [PATCH] retour sur [12025] : tout calculer pose des problemes de
 performance si on a une page qui affiche des trouzaines de #INTRODUCTION

---
 ecrire/inc/utils.php       | 15 +++++++++++----
 ecrire/public/composer.php | 24 ++++++++++++++++++------
 2 files changed, 29 insertions(+), 10 deletions(-)

diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php
index adb93c60a2..9c42b2e4e8 100644
--- a/ecrire/inc/utils.php
+++ b/ecrire/inc/utils.php
@@ -149,8 +149,13 @@ function spip_log($message, $logname=NULL, $logdir=NULL, $logsuf=NULL) {
 	if (is_null($logname))
 		$logname = defined('_FILE_LOG') ? _FILE_LOG : 'spip';
 	if (!isset($compteur[$logname])) $compteur[$logname] = 0;
-	if (($logname != 'maj') AND
-	    ( $compteur[$logname]++ > _MAX_LOG || !$nombre_de_logs || !$taille_des_logs))
+	if ($logname != 'maj'
+	AND defined('_MAX_LOG')
+	AND (
+		$compteur[$logname]++ > _MAX_LOG
+		OR !$nombre_de_logs
+		OR !$taille_des_logs
+	))
 		return;
 
 	$logfile = ($logdir===NULL ? _DIR_LOG : $logdir)
@@ -184,7 +189,8 @@ function spip_log($message, $logname=NULL, $logdir=NULL, $logsuf=NULL) {
 		fclose($f);
 	}
 
-	if ($rotate-- > 0) {
+	if ($rotate-- > 0
+	AND function_exists('spip_unlink')) {
 		spip_unlink($logfile . '.' . $rotate);
 		while ($rotate--) {
 			@rename($logfile . ($rotate ? '.' . $rotate : ''), $logfile . '.' . ($rotate + 1));
@@ -192,7 +198,8 @@ function spip_log($message, $logname=NULL, $logdir=NULL, $logsuf=NULL) {
 	}
 
 	// Dupliquer les erreurs specifiques dans le log general
-	if ($logname !== _FILE_LOG)
+	if ($logname !== _FILE_LOG
+	AND defined('_FILE_LOG'))
 		spip_log($logname=='maj' ? 'cf maj.log' : $message);
 }
 
diff --git a/ecrire/public/composer.php b/ecrire/public/composer.php
index 230c6eb1c6..af3ae0b027 100644
--- a/ecrire/public/composer.php
+++ b/ecrire/public/composer.php
@@ -204,14 +204,26 @@ function filtre_introduction_dist($descriptif, $texte, $longueur, $connect) {
 			$zone = substr($zone, $deb + 7);
 		$intro .= $zone;
 	}
-	$texte = $intro ? $intro : $texte;
-	
-	// On ne *PEUT* pas couper simplement ici car c'est du texte brut, qui inclus raccourcis et modeles
+
+	// [12025] On ne *PEUT* pas couper simplement ici car c'est du texte brut,
+	// qui inclus raccourcis et modeles
 	// un simple <articlexx> peut etre ensuite transforme en 1000 lignes ...
-	// par ailleurs le nettoyage des raccourcis ne tient pas compte des surcharges
-	// et enrichissement de propre
+	// par ailleurs le nettoyage des raccourcis ne tient pas compte
+	// des surcharges et enrichissement de propre
 	// couper doit se faire apres propre
-	//$texte = nettoyer_raccourcis_typo($intro ? $intro : $texte, $connect);	
+	//$texte = nettoyer_raccourcis_typo($intro ? $intro : $texte, $connect);
+
+	// Cependant pour des questions de perfs on coupe quand meme, en prenant
+	// large et en se mefiant des tableaux #1323
+
+	if (strlen($intro))
+		$texte = $intro;
+
+	else
+	if (strpos("\n".$texte, "\n|")===false
+	AND strlen($texte) > 2.5*$longueur)
+		$texte = couper($texte, 2*$longueur);
+
 
 	// ne pas tenir compte des notes ;
 	// bug introduit en http://trac.rezo.net/trac/spip/changeset/12025
-- 
GitLab