From cad3d8c34d3205c477bd86e13e900c889f997009 Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Tue, 30 Oct 2007 15:29:31 +0000
Subject: [PATCH] =?UTF-8?q?Partage=20de=20code=20dans=20les=20fonctions=20?=
 =?UTF-8?q?d'abstraction:=20la=20fonction=20sql=5Fserveur=20admet=20un=203?=
 =?UTF-8?q?e=20argument,=20bool=C3=A9en,=20permettant=20de=20ne=20pas=20d?=
 =?UTF-8?q?=C3=A9clencher=20d'erreur=20si=20l'instruction=20SQL=20souhait?=
 =?UTF-8?q?=C3=A9e=20n'est=20pas=20disponible=20(cf=20charger=5Ffonction,?=
 =?UTF-8?q?=20construite=20pareillement).?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ecrire/base/abstract_sql.php | 54 ++++++++++++++----------------------
 1 file changed, 21 insertions(+), 33 deletions(-)

diff --git a/ecrire/base/abstract_sql.php b/ecrire/base/abstract_sql.php
index 9750937f2b..a8320ef019 100644
--- a/ecrire/base/abstract_sql.php
+++ b/ecrire/base/abstract_sql.php
@@ -21,50 +21,20 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 // Cette fonction charge la description d'un serveur de base de donnees
 // (via la fonction spip_connect qui etablira la connexion si ce n'est fait)
 // et retourne la fonction produisant la requĂȘte SQL demandee
-// Erreur fatale si la fonctionnalite est absente
+// Erreur fatale si la fonctionnalite est absente sauf si le 3e arg <> false
 
 // http://doc.spip.org/@sql_serveur
-function sql_serveur($ins_sql, $serveur='') {
+function sql_serveur($ins_sql, $serveur='', $continue=false) {
 
 	$desc = spip_connect($serveur);
 	if (function_exists($f = @$desc[$ins_sql])) return $f;
 	spip_log("Le serveur '$serveur' ne dispose pas de  '$ins_sql'");
+	if ($continue) return false;
 	include_spip('inc/minipres');
 	echo minipres(_T('info_travaux_titre'),  _T('titre_probleme_technique'));
 	exit;
 }
 
-// Dans quelques cas, l'absence de fonctionnalite ne doit pas declencher
-// d'erreur fatale ==> ne pas utiliser la fonction generale
-
-// http://doc.spip.org/@sql_explain
-function sql_explain($q, $serveur='') {
-	$desc = spip_connect($serveur);
-	if (function_exists($f = @$desc['explain'])) {
-		return $f($q, $serveur);
-	}
-	spip_log("Le serveur '$serveur' ne dispose pas de 'explain'");
-	return false;
-}
-
-// http://doc.spip.org/@sql_optimize
-function sql_optimize($q, $serveur='') {
-	$desc = spip_connect($serveur);
-	if (function_exists($f = @$desc['optimize'])) {
-		return $f($q, $serveur);
-	}
-	spip_log("Le serveur '$serveur' ne dispose pas de 'optimize'");
-}
-
-// http://doc.spip.org/@sql_repair
-function sql_repair($table, $serveur='') {
-	$desc = spip_connect($serveur);
-	if (function_exists($f = @$desc['repair'])) {
-		return $f($table, $serveur);
-	}
-	spip_log("Le serveur '$serveur' ne dispose pas de 'repair'");
-}
-
 // Demande si un charset est disponible. 
 // http://doc.spip.org/@sql_get_charset
 function sql_get_charset($charset, $serveur=''){
@@ -275,6 +245,24 @@ function sql_errno($serveur='') {
 	return $f();
 }
 
+// http://doc.spip.org/@sql_explain
+function sql_explain($q, $serveur='') {
+	$f = sql_serveur('explain', $serveur, true);
+	return $f ?  $f($q, $serveur) : false;
+}
+
+// http://doc.spip.org/@sql_optimize
+function sql_optimize($q, $serveur='') {
+	$f = sql_serveur('optimize', $serveur, true);
+	return $f ?  $f($q, $serveur) : false;
+}
+
+// http://doc.spip.org/@sql_repair
+function sql_repair($table, $serveur='') {
+	$f = sql_serveur('repair', $serveur, true);
+	return $f ?  $f($q, $serveur) : false;
+}
+
 // Fonction la plus generale ... et la moins portable
 // A n'utiliser qu'en derniere extremite
 
-- 
GitLab