From b976538314eb143c5122c9665717371b5389982b Mon Sep 17 00:00:00 2001
From: Fil <fil@rezo.net>
Date: Tue, 29 Oct 2002 17:23:18 +0000
Subject: [PATCH] =?UTF-8?q?=20suppression=20centralisee=20des=20DELAYED=20?=
 =?UTF-8?q?;=20recentrage=20dans=20inc=5Fversion=20des=20mysql=5Fdebug=20e?=
 =?UTF-8?q?t=20mysql=5Fprofile...=20r=C3=A9organisation=20de=20inc=5Fdb=5F?=
 =?UTF-8?q?mysql?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ecrire/inc_db_mysql.php3 | 88 +++++++++++++++++++++-------------------
 ecrire/inc_version.php3  | 17 ++++++--
 inc-public-global.php3   |  1 -
 3 files changed, 61 insertions(+), 45 deletions(-)

diff --git a/ecrire/inc_db_mysql.php3 b/ecrire/inc_db_mysql.php3
index 88b24e99f0..2ec2022c79 100644
--- a/ecrire/inc_db_mysql.php3
+++ b/ecrire/inc_db_mysql.php3
@@ -6,65 +6,71 @@ if (defined("_ECRIRE_INC_DB_MYSQL")) return;
 define("_ECRIRE_INC_DB_MYSQL", "1");
 
 //
-// Connexion a la base
+// Appel de requetes SQL
 //
 
-function spip_connect_db($host, $port, $login, $pass, $db) {
-	if ($port > 0) $host = "$host:$port";
-	@mysql_connect($host, $login, $pass);
-	return @mysql_select_db($db);
-}
+function spip_query_db($query) {
+	static $tt = 0;
 
+	$my_admin = (($GLOBALS['connect_statut'] == '0minirezo') OR ($GLOBALS['auteur_session']['statut'] == '0minirezo'));
+	$my_profile = ($GLOBALS['mysql_profile'] AND $my_admin);
+	$my_debug = ($GLOBALS['mysql_debug'] AND $my_admin);
 
-//
-// Appel de requetes SQL
-//
+	$query = traite_query($query);
+
+	if ($my_profile)
+		$m1 = microtime();
 
-function spip_query_profile($query) {
-	static $tt = 0;
-	$suite = "";
-	if (eregi('[[:space:]](VALUES|WHERE)[[:space:]].*$', $query, $regs)) {
-		$suite = $regs[0];
-		$query = substr($query, 0, -strlen($suite));
-	}
-	$query = ereg_replace('([[:space:],])spip_', '\1'.$GLOBALS['table_prefix'].'_', $query) . $suite;
-	$m1 = microtime();
 	$result = mysql_query($query);
-	$m2 = microtime();
-	list($usec, $sec) = explode(" ", $m1);
-	list($usec2, $sec2) = explode(" ", $m2);
-	$dt = $sec2 + $usec2 - $sec - $usec;
-	$tt += $dt;
-	echo "<small>".htmlentities($query);
-	echo " -> <font color='blue'>".sprintf("%3f", $dt)."</font> ($tt)</small><p>\n";
-	return $result;
-}
 
-function spip_query_debug($query) {
-	$suite = "";
-	if (eregi('[[:space:]](VALUES|WHERE)[[:space:]].*$', $query, $regs)) {
-		$suite = $regs[0];
-		$query = substr($query, 0, -strlen($suite));
+	if ($my_profile) {
+		$m2 = microtime();
+		list($usec, $sec) = explode(" ", $m1);
+		list($usec2, $sec2) = explode(" ", $m2);
+		$dt = $sec2 + $usec2 - $sec - $usec;
+		$tt += $dt;
+		echo "<small>".htmlentities($query);
+		echo " -> <font color='blue'>".sprintf("%3f", $dt)."</font> ($tt)</small><p>\n";
+		
 	}
-	$query = ereg_replace('([[:space:],])spip_', '\1'.$GLOBALS['table_prefix'].'_', $query) . $suite;
-	$r = mysql_query($query);
-	if ($GLOBALS['connect_statut'] == '0minirezo' AND $s = mysql_error()) {
+
+	if ($my_debug AND $s = mysql_error()) {
 		echo "Erreur dans la requ&ecirc;te : ".htmlentities($query)."<br>";
 		echo "&laquo; ".htmlentities($s)." &raquo;<p>";
 	}
-	return $r;
+
+	return $result;
 }
 
-function spip_query_db($query) {
-	// return spip_query_profile($query);	// a decommenter pour chronometrer les requetes
-	// return spip_query_debug($query);		// a decommenter pour afficher toutes les erreurs
-	$suite = "";
+
+//
+// Passage d'une requete standardisee
+//
+function traite_query($query) {
+
+	// changer les noms des tables ($table_prefix)
 	if (eregi('[[:space:]](VALUES|WHERE)[[:space:]].*$', $query, $regs)) {
 		$suite = $regs[0];
 		$query = substr($query, 0, -strlen($suite));
 	}
 	$query = ereg_replace('([[:space:],])spip_', '\1'.$GLOBALS['table_prefix'].'_', $query) . $suite;
-	return mysql_query($query);
+
+	// supprimer les INSERT DELAYED
+	if (! $GLOBALS['flag_mysql_delayed'])
+		$query = ereg_replace('^INSERT DELAYED ', 'INSERT ', $query);
+
+	return $query;
+}
+
+
+//
+// Connexion a la base
+//
+
+function spip_connect_db($host, $port, $login, $pass, $db) {
+	if ($port > 0) $host = "$host:$port";
+	@mysql_connect($host, $login, $pass);
+	return @mysql_select_db($db);
 }
 
 
diff --git a/ecrire/inc_version.php3 b/ecrire/inc_version.php3
index 5277436416..2e58c260de 100644
--- a/ecrire/inc_version.php3
+++ b/ecrire/inc_version.php3
@@ -14,9 +14,15 @@ define("_ECRIRE_INC_VERSION", "1");
 // (a modifier pour avoir plusieurs sites SPIP dans une seule base)
 $table_prefix = "spip";
 
-// faut-il loger les infos de debug dans data/spip.log ?
+// faut-il loger les infos de debug dans data/spip.log
 $debug = false;
 
+// faut-il passer les connexions MySQL en mode debug ?
+$mysql_debug = false;
+
+// faut-il chronometrer les requetes MySQL ?
+$mysql_profile = false;
+
 //
 // 	*** Fin du parametrage ***
 //
@@ -39,9 +45,12 @@ if (ereg('Name: v(.*) ','$Name$', $regs)) $spip_version_affichee = $regs[1];
 // Pas de warnings idiots
 error_reporting(E_ALL ^ E_NOTICE);
 
-// Securite : dossier des squelettes a preciser dans mes_fonctions.php3,
-// sous la forme d'une ligne : < ? php $GLOBALS['dossier_squelettes'] = 'squel'; ? >
+// ** Securite **
+// - le dossier des squelettes a preciser dans mes_fonctions.php3, sous
+//   la forme d'une ligne : < ? php $GLOBALS['dossier_squelettes'] = 'squel'; ? >
 $dossier_squelettes = '';
+$auteur_session = '';
+$connect_statut = '';
 
 //
 // Infos de version PHP
@@ -62,6 +71,8 @@ $flag_strpos_3 = (@strpos('baba', 'a', 2) == 3);
 $flag_get_cfg_var = (@get_cfg_var('error_reporting') != "");
 $flag_strtr2 = ($php_version_maj > 3);
 
+$flag_mysql_delayed = false;	// tant qu'on ne sait pas detecter si les INSERT DELAYED sont autorises...
+
 if ($flag_function_exists) {
 	$flag_ini_get = (function_exists("ini_get")
 		&& (@ini_get('max_execution_time') > 0));	// verifier pas desactivee
diff --git a/inc-public-global.php3 b/inc-public-global.php3
index d847b991ba..4a83c3c0f9 100644
--- a/inc-public-global.php3
+++ b/inc-public-global.php3
@@ -69,7 +69,6 @@ else {
 //
 // Authentification
 //
-$auteur_session = '';
 if ($HTTP_COOKIE_VARS['spip_session'] OR $PHP_AUTH_USER) {
 	include_ecrire ("inc_session.php3");
 	verifier_visiteur();
-- 
GitLab