From a9039f248826dc6e7048ae626950c02f9f45b725 Mon Sep 17 00:00:00 2001
From: Cerdic <cedric@yterium.com>
Date: Sat, 8 Mar 2008 14:25:41 +0000
Subject: [PATCH] "sql_serveur peut renvoyer un array si pas de serveur sql
 dispo -> il faut tester que son retour est bien une chaine pour continuer
 (bug a l'install avant que le serveur ne soit defini, marcimat, Rikle_s)"

---
 ecrire/base/abstract_sql.php | 62 ++++++++++++++++++------------------
 1 file changed, 31 insertions(+), 31 deletions(-)

diff --git a/ecrire/base/abstract_sql.php b/ecrire/base/abstract_sql.php
index c1111663ac..d5a0722dc0 100644
--- a/ecrire/base/abstract_sql.php
+++ b/ecrire/base/abstract_sql.php
@@ -51,7 +51,7 @@ function sql_get_charset($charset, $serveur='', $option=true){
 // http://doc.spip.org/@sql_set_charset
 function sql_set_charset($charset,$serveur='', $option=true){
 	$f = sql_serveur('set_charset', $serveur, $continue = $option==='continue' OR $option===false);
-	if (!$f && $continue) return false;
+	if (!is_string($f) OR !$f) return false;
 	return $f($charset, $serveur, $option!==false);
 }
 
@@ -73,7 +73,7 @@ function sql_select (
 	$groupby = array(), $orderby = array(), $limit = '', $having = array(),
 	$serveur='', $option=true) {
 	$f = sql_serveur('select', $serveur, $continue = $option==='continue' OR $option===false);
-	if (!$f && $continue) return false;
+	if (!is_string($f) OR !$f) return false;
 	return $f($select, $from, $where, $groupby, $orderby, $limit, $having, $serveur, $option!==false);
 }
 
@@ -84,28 +84,28 @@ function sql_countsel($from = array(), $where = array(),
 		      $groupby = array(), $limit = '', $having = array(),
 	$serveur='', $option=true) {
 	$f = sql_serveur('countsel', $serveur, $continue = $option==='continue' OR $option===false);
-	if (!$f && $continue) return false;
+	if (!is_string($f) OR !$f) return false;
 	return $f($from, $where, $groupby, $limit, '', $having, $serveur, $option!==false);
 }
 
 // http://doc.spip.org/@sql_alter
 function sql_alter($q, $serveur='', $option=true) {
 	$f = sql_serveur('alter', $serveur, $continue = $option==='continue' OR $option===false);
-	if (!$f && $continue) return false;
+	if (!is_string($f) OR !$f) return false;
 	return $f($q, $serveur, $option!==false);
 }
 
 // http://doc.spip.org/@sql_fetch
 function sql_fetch($res, $serveur='', $option=true) {
 	$f = sql_serveur('fetch', $serveur, $continue = $option==='continue' OR $option===false);
-	if (!$f && $continue) return false;
+	if (!is_string($f) OR !$f) return false;
 	return $f($res, NULL, $serveur, $option!==false);
 }
 
 // http://doc.spip.org/@sql_listdbs
 function sql_listdbs($serveur='', $option=true) {
 	$f = sql_serveur('listdbs', $serveur, $continue = $option==='continue' OR $option===false);
-	if (!$f && $continue) return false;
+	if (!is_string($f) OR !$f) return false;
 	return $f($serveur);
 }
 
@@ -113,7 +113,7 @@ function sql_listdbs($serveur='', $option=true) {
 function sql_selectdb($res, $serveur='', $option=true)
 {
 	$f = sql_serveur('selectdb', $serveur, $continue = $option==='continue' OR $option===false);
-	if (!$f && $continue) return false;
+	if (!is_string($f) OR !$f) return false;
 	return $f($res, $serveur, $option!==false);
 }
 
@@ -121,7 +121,7 @@ function sql_selectdb($res, $serveur='', $option=true)
 function sql_count($res, $serveur='', $option=true)
 {
 	$f = sql_serveur('count', $serveur, $continue = $option==='continue' OR $option===false);
-	if (!$f && $continue) return false;
+	if (!is_string($f) OR !$f) return false;
 	return $f($res, $serveur, $option!==false);
 }
 
@@ -129,7 +129,7 @@ function sql_count($res, $serveur='', $option=true)
 function sql_free($res, $serveur='', $option=true)
 {
 	$f = sql_serveur('free', $serveur, $continue = $option==='continue' OR $option===false);
-	if (!$f && $continue) return false;
+	if (!is_string($f) OR !$f) return false;
 	return $f($res);
 }
 
@@ -141,7 +141,7 @@ function sql_free($res, $serveur='', $option=true)
 function sql_insert($table, $noms, $valeurs, $desc=array(), $serveur='', $option=true)
 {
 	$f = sql_serveur('insert', $serveur, $continue = $option==='continue' OR $option===false);
-	if (!$f && $continue) return false;
+	if (!is_string($f) OR !$f) return false;
 	return $f($table, $noms, $valeurs, $desc, $serveur, $option!==false);
 }
 
@@ -149,7 +149,7 @@ function sql_insert($table, $noms, $valeurs, $desc=array(), $serveur='', $option
 function sql_insertq($table, $couples=array(), $desc=array(), $serveur='', $option=true)
 {
 	$f = sql_serveur('insertq', $serveur, $continue = $option==='continue' OR $option===false);
-	if (!$f && $continue) return false;
+	if (!is_string($f) OR !$f) return false;
 	return $f($table, $couples, $desc, $serveur, $option!==false);
 }
 
@@ -157,7 +157,7 @@ function sql_insertq($table, $couples=array(), $desc=array(), $serveur='', $opti
 function sql_insertq_multi($table, $tab_couples=array(), $desc=array(), $serveur='', $option=true)
 {
 	$f = sql_serveur('insertq_multi', $serveur, $continue = $option==='continue' OR $option===false);
-	if (!$f && $continue) return false;
+	if (!is_string($f) OR !$f) return false;
 	return $f($table, $tab_couples, $desc, $serveur, $option!==false);
 }
 
@@ -165,7 +165,7 @@ function sql_insertq_multi($table, $tab_couples=array(), $desc=array(), $serveur
 function sql_update($table, $exp, $where='', $desc=array(), $serveur='', $option=true)
 {
 	$f = sql_serveur('update', $serveur, $continue = $option==='continue' OR $option===false);
-	if (!$f && $continue) return false;
+	if (!is_string($f) OR !$f) return false;
 	return $f($table, $exp, $where, $desc, $serveur, $option!==false);
 }
 
@@ -176,7 +176,7 @@ function sql_update($table, $exp, $where='', $desc=array(), $serveur='', $option
 function sql_updateq($table, $exp, $where='', $desc=array(), $serveur='', $option=true)
 {
 	$f = sql_serveur('updateq', $serveur, $continue = $option==='continue' OR $option===false);
-	if (!$f && $continue) return false;
+	if (!is_string($f) OR !$f) return false;
 	return $f($table, $exp, $where, $desc, $serveur, $option!==false);
 }
 
@@ -184,7 +184,7 @@ function sql_updateq($table, $exp, $where='', $desc=array(), $serveur='', $optio
 function sql_delete($table, $where='', $serveur='', $option=true)
 {
 	$f = sql_serveur('delete', $serveur, $continue = $option==='continue' OR $option===false);
-	if (!$f && $continue) return false;
+	if (!is_string($f) OR !$f) return false;
 	return $f($table, $where, $serveur, $option!==false);
 }
 
@@ -192,7 +192,7 @@ function sql_delete($table, $where='', $serveur='', $option=true)
 function sql_replace($table, $couples, $desc=array(), $serveur='', $option=true)
 {
 	$f = sql_serveur('replace', $serveur, $continue = $option==='continue' OR $option===false);
-	if (!$f && $continue) return false;
+	if (!is_string($f) OR !$f) return false;
 	return $f($table, $couples, $desc, $serveur, $option!==false);
 }
 
@@ -201,7 +201,7 @@ function sql_replace($table, $couples, $desc=array(), $serveur='', $option=true)
 function sql_replace_multi($table, $tab_couples, $desc=array(), $serveur='', $option=true)
 {
 	$f = sql_serveur('replace_multi', $serveur, $continue = $option==='continue' OR $option===false);
-	if (!$f && $continue) return false;
+	if (!is_string($f) OR !$f) return false;
 	return $f($table, $tab_couples, $desc, $serveur, $option!==false);
 }
 
@@ -209,7 +209,7 @@ function sql_replace_multi($table, $tab_couples, $desc=array(), $serveur='', $op
 function sql_drop_table($table, $exist='', $serveur='', $option=true)
 {
 	$f = sql_serveur('drop_table', $serveur, $continue = $option==='continue' OR $option===false);
-	if (!$f && $continue) return false;
+	if (!is_string($f) OR !$f) return false;
 	return $f($table, $exist, $serveur, $option!==false);
 }
 
@@ -222,7 +222,7 @@ function sql_showbase($spip=NULL, $serveur='', $option=true)
 	}
 	
 	$f = sql_serveur('showbase', $serveur, $continue = $option==='continue' OR $option===false);
-	if (!$f && $continue) return false;
+	if (!is_string($f) OR !$f) return false;
 	return $f($spip, $serveur, $option!==false);
 }
 
@@ -236,7 +236,7 @@ function sql_showtable($table, $table_spip = false, $serveur='', $option=true)
 	}
 	
 	$f = sql_serveur('showtable', $serveur, $continue = $option==='continue' OR $option===false);
-	if (!$f && $continue) return false;
+	if (!is_string($f) OR !$f) return false;
 	$f = $f($table, $serveur, $option!==false);
 	if (!$f) return array();
 	if (isset($GLOBALS['tables_principales'][$table]['join']))
@@ -249,7 +249,7 @@ function sql_showtable($table, $table_spip = false, $serveur='', $option=true)
 // http://doc.spip.org/@sql_create
 function sql_create($nom, $champs, $cles=array(), $autoinc=false, $temporary=false, $serveur='', $option=true) {
 	$f = sql_serveur('create', $serveur, $continue = $option==='continue' OR $option===false);
-	if (!$f && $continue) return false;
+	if (!is_string($f) OR !$f) return false;
 	return $f($nom, $champs, $cles, $autoinc, $temporary, $serveur, $option!==false);
 }
 
@@ -257,42 +257,42 @@ function sql_create($nom, $champs, $cles=array(), $autoinc=false, $temporary=fal
 function sql_multi($sel, $lang, $serveur='', $option=true)
 {
   $f = sql_serveur('multi', $serveur, $continue = $option==='continue' OR $option===false);
-	if (!$f && $continue) return false;
+	if (!is_string($f) OR !$f) return false;
 	return $f($sel, $lang);
 }
 
 // http://doc.spip.org/@sql_error
 function sql_error($query='requete inconnue', $serveur='', $option=true) {
 	$f = sql_serveur('error', $serveur, $continue = $option==='continue' OR $option===false);
-	if (!$f && $continue) return false;
+	if (!is_string($f) OR !$f) return false;
 	return $f($query, $serveur, $option!==false);
 }
 
 // http://doc.spip.org/@sql_errno
 function sql_errno($serveur='', $option=true) {
 	$f = sql_serveur('errno', $serveur, $continue = $option==='continue' OR $option===false);
-	if (!$f && $continue) return false;
+	if (!is_string($f) OR !$f) return false;
 	return $f($serveur);
 }
 
 // http://doc.spip.org/@sql_explain
 function sql_explain($q, $serveur='', $option=true) {
 	$f = sql_serveur('explain', $serveur, true, $continue = $option==='continue' OR $option===false);
-	if (!$f && $continue) return false;
+	if (!is_string($f) OR !$f) return false;
 	return @function_exists($f) ? $f($q, $serveur, $option!==false) : false;
 }
 
 // http://doc.spip.org/@sql_optimize
 function sql_optimize($q, $serveur='', $option=true) {
 	$f = sql_serveur('optimize', $serveur, true, $continue = $option==='continue' OR $option===false);
-	if (!$f && $continue) return false;
+	if (!is_string($f) OR !$f) return false;
 	return @function_exists($f) ? $f($q, $serveur, $option!==false) : false;
 }
 
 // http://doc.spip.org/@sql_repair
 function sql_repair($q, $serveur='', $option=true) {
 	$f = sql_serveur('repair', $serveur, true, $continue = $option==='continue' OR $option===false);
-	if (!$f && $continue) return false;
+	if (!is_string($f) OR !$f) return false;
 	return @function_exists($f) ? $f($q, $serveur, $option!==false) : false;
 }
 
@@ -302,7 +302,7 @@ function sql_repair($q, $serveur='', $option=true) {
 // http://doc.spip.org/@sql_query
 function sql_query($ins, $serveur='', $option=true) {
 	$f = sql_serveur('query', $serveur, $continue = $option==='continue' OR $option===false);
-	if (!$f && $continue) return false;
+	if (!is_string($f) OR !$f) return false;
 	return $f($ins, $serveur, $option!==false);
 }
 
@@ -337,7 +337,7 @@ function sql_version($serveur='', $option=true) {
 function sql_hex($val, $serveur='', $option=true)
 {
 	$f = sql_serveur('hex', $serveur, $continue = $option==='continue' OR $option===false);
-	if (!$f && $continue) return false;
+	if (!is_string($f) OR !$f) return false;
 	return $f($val);
 }
 
@@ -353,13 +353,13 @@ function sql_quote($val, $serveur='', $option=true)
 function sql_in($val, $valeurs, $not='', $serveur='', $option=true) {
 	if (is_array($valeurs)) {
 		$f = sql_serveur('quote', $serveur, $continue = $option==='continue' OR $option===false);
-		if (!$f && $continue) return false;
+		if (!is_string($f) OR !$f) return false;
 		$valeurs = join(',', array_map($f, array_unique($valeurs)));
 	} elseif ($valeurs[0]===',') $valeurs = substr($valeurs,1);
 	if (!strlen(trim($valeurs))) return ($not ? "0=0" : '0=1');
 
 	$f = sql_serveur('in', $serveur, $continue = $option==='continue' OR $option===false);
-	if (!$f && $continue) return false;
+	if (!is_string($f) OR !$f) return false;
 	return $f($val, $valeurs, $not, $serveur, $option!==false);
 }
 
-- 
GitLab