From 82450e514ae6a069a85a4f5e10c6b94ce3db155f Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Fri, 5 Oct 2007 12:23:46 +0000 Subject: [PATCH] =?UTF-8?q?Installation=20plus=20propre,=20sans=20message?= =?UTF-8?q?=20d'erreur.=20Attention,=20la=20fonction=20d'abstraction=20{{{?= =?UTF-8?q?showbase}}}=20introduite=20[10371]=C2=A0change=20l=C3=A9g=C3=A8?= =?UTF-8?q?rement=20de=20sp=C3=A9cification:=20si=20son=20argument=20est?= =?UTF-8?q?=20fourni,=20il=20est=20pris=20tel=20quel=20comme=20op=C3=A9ran?= =?UTF-8?q?de=20de=20ILIKE.=20Rien=20de=20chang=C3=A9=20si=20ps=20d'argume?= =?UTF-8?q?nt.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/base/abstract_sql.php | 19 +++++++++++-------- ecrire/install/etape_3.php | 23 +++++++++++------------ 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/ecrire/base/abstract_sql.php b/ecrire/base/abstract_sql.php index 53f8722a0e..638a38a000 100644 --- a/ecrire/base/abstract_sql.php +++ b/ecrire/base/abstract_sql.php @@ -49,9 +49,12 @@ function sql_get_charset($charset, $serveur=''){ // le nom http du charset differe parfois du nom SQL utf-8 ==> utf8 etc. $desc = spip_connect($serveur); $c = @$desc['charsets'][$charset]; - if (!$c) return false; - if (!function_exists($f=@$desc['get_charset'])) return false; - if ($f($c, $serveur)) return $c; + if ($c) { + if (function_exists($f=@$desc['get_charset'])) + if ($f($c, $serveur)) return $c; + } + spip_log("SPIP ne connait pas les Charsets disponibles sur le serveur $serveur. Le serveur choisira seul."); + return false; } // Cette fonction est systematiquement appelee par les squelettes @@ -174,15 +177,15 @@ function sql_replace($table, $values, $desc=array(), $serveur='') } // http://doc.spip.org/@sql_showbase -function sql_showbase($spip=true, $serveur='') +function sql_showbase($spip=NULL, $serveur='') { - if ($spip){ + if ($spip == NULL){ $connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0]; - $prefixe = $connexion['prefixe']; - } else $prefixe =''; + $spip = $connexion['prefixe'] . '%'; + } $f = sql_serveur('showbase', $serveur); - return $f("$prefixe%", $serveur); + return $f($spip, $serveur); } // http://doc.spip.org/@sql_showtable diff --git a/ecrire/install/etape_3.php b/ecrire/install/etape_3.php index cbd173f654..8535ff4172 100644 --- a/ecrire/install/etape_3.php +++ b/ecrire/install/etape_3.php @@ -74,15 +74,10 @@ function install_bases(){ $GLOBALS['connexions'][$server_db]['prefixe'] = $table_prefix; $GLOBALS['connexions'][$server_db]['db'] = $sel_db; - // s'il y a erreur c'est qu'elle est nouvelle - $nouvelle = !@$fquery("SELECT COUNT(*) FROM spip_meta", $server_db); - - if ($nouvelle) { - // rouvrir la connexion apres l'erreur - $GLOBALS['connexions'][$server_db] = spip_connect_db($adresse_db, 0, $login_db, $pass_db, '', $server_db); - $GLOBALS['connexions'][$server_db]['prefixe'] = $table_prefix; - $GLOBALS['connexions'][$server_db]['db'] = $sel_db; + $old = sql_showbase($table_prefix . "_meta", $server_db); + if ($old) $old = sql_fetch($old, $server_db); + if (!$old) { // Si possible, demander au serveur d'envoyer les textes // dans le codage std de SPIP, @@ -97,8 +92,12 @@ function install_bases(){ $charset['collation']; $GLOBALS['meta']['charset_sql_connexion'] = $charset['charset']; - } else spip_log(_DEFAULT_CHARSET . " inconnu du serveur SQL"); - + $charsetbase = $charset['charset']; + } else { + spip_log(_DEFAULT_CHARSET . " inconnu du serveur SQL"); + $charsetbase = 'standard'; + } + spip_log("Creation des tables. Codage $charsetbase"); creer_base($server_db); // AT LAST // memoriser avec quel charset on l'a creee @@ -111,7 +110,7 @@ function install_bases(){ } else { // pour recreer les tables disparues au besoin - + spip_log("Table des Meta deja la. Verification des autres."); creer_base($server_db); $r = $fquery("SELECT valeur FROM spip_meta WHERE nom='version_installee'", $server_db); @@ -130,7 +129,7 @@ function install_bases(){ : test_rappel_nom_base_mysql($server_db); $result_ok = @$fquery("SELECT COUNT(*) FROM spip_meta", $server_db); - if (!$result_ok) return "<!--\n$nouvelle $ligne_rappel\n-->"; + if (!$result_ok) return "<!--\nvielle = $old rappel= $ligne_rappel\n-->"; if($chmod) { install_fichier_connexion(_FILE_CHMOD_TMP, "@define('_SPIP_CHMOD', ". sprintf('0%3o',$chmod).");\n"); -- GitLab