CVS: spip/ecrire inc_base.php3, 1.88, 1.89 install.php3, 1.53, 1.54 upgrade.php3, 1.17, 1.18

Update of /home/spip-cvs/spip/ecrire
In directory miel:/tmp/cvs-serv17638/ecrire

Modified Files:
  inc_base.php3 install.php3 upgrade.php3
Log Message:
vérification des droits ALTER TABLE

Index: inc_base.php3

RCS file: /home/spip-cvs/spip/ecrire/inc_base.php3,v
retrieving revision 1.88
retrieving revision 1.89
diff -u -d -r1.88 -r1.89
--- inc_base.php3 26 Sep 2003 23:55:40 -0000 1.88
+++ inc_base.php3 27 Sep 2003 23:13:37 -0000 1.89
@@ -612,11 +612,12 @@
}

-function maj_version ($version, $test = true) {
+function maj_version($version, $test = true) {
   if ($test) {
     spip_query("REPLACE spip_meta (nom, valeur) VALUES ('version_installee', '$version')");
     spip_log("mise a jour de la base vers $version");
- } else {
+ }
+ else {
     include_ecrire ('inc_lang.php3');
     echo _T('alerte_maj_impossible', array('version' => $version));
     exit;
@@ -642,13 +643,26 @@
   if (!$version_installee) {
     $version_installee = $spip_version;
     maj_version($version_installee);
+ return true;
   }
-
+
+ //
+ // Verification des droits de modification sur la base
+ //
+
+ spip_query("DROP TABLE IF EXISTS spip_test");
+ spip_query("CREATE TABLE spip_test (a INT)");
+ spip_query("ALTER TABLE spip_test ADD b INT");
+ spip_query("INSERT INTO spip_test (b) VALUES (1)");
+ $result = spip_query("SELECT b FROM spip_test");
+ spip_query("ALTER TABLE spip_test DROP b");
+ if (!$result) return false;
+
   //
   // Selection en fonction de la version
   //
   if ($version_installee < 0.98) {
-
+
     spip_query("ALTER TABLE spip_articles ADD maj TIMESTAMP");
     spip_query("ALTER TABLE spip_articles ADD export VARCHAR(10) DEFAULT 'oui'");
     spip_query("ALTER TABLE spip_articles ADD images TEXT DEFAULT ''");
@@ -657,10 +671,10 @@
     spip_query("ALTER TABLE spip_articles ADD INDEX id_rubrique (id_rubrique)");
     spip_query("ALTER TABLE spip_articles ADD visites INTEGER DEFAULT '0' NOT NULL");
     spip_query("ALTER TABLE spip_articles ADD referers BLOB NOT NULL");
-
+
     spip_query("ALTER TABLE spip_auteurs ADD maj TIMESTAMP");
     spip_query("ALTER TABLE spip_auteurs ADD pgp BLOB NOT NULL");
-
+
     spip_query("ALTER TABLE spip_auteurs_articles ADD INDEX id_auteur (id_auteur), ADD INDEX id_article (id_article)");
   
     spip_query("ALTER TABLE spip_rubriques ADD maj TIMESTAMP");
@@ -677,7 +691,7 @@
     spip_query("ALTER TABLE spip_forum ADD INDEX id_parent (id_parent), ADD INDEX id_rubrique (id_rubrique), ADD INDEX id_article(id_article), ADD INDEX id_breve(id_breve)");
     maj_version (0.98);
   }
-
+
   if ($version_installee < 0.99) {
   
     $query = "SELECT DISTINCT id_article FROM spip_forum WHERE id_article!=0 AND id_parent=0";
@@ -1338,7 +1352,7 @@
     spip_query("UPDATE spip_rubriques SET lang=MID(lang,2,8) WHERE langue_choisie = 'non'");
     maj_version (1.707);
   }
-
+
   if ($version_installee < 1.708) {
     spip_query("ALTER TABLE spip_breves ADD lang VARCHAR(10) DEFAULT '' NOT NULL");
     spip_query("ALTER TABLE spip_breves ADD langue_choisie VARCHAR(3) DEFAULT 'non'");
@@ -1399,6 +1413,7 @@
     maj_version (1.718);
   }

+ return true;
}

?>

Index: install.php3

RCS file: /home/spip-cvs/spip/ecrire/install.php3,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -d -r1.53 -r1.54
--- install.php3 25 Sep 2003 00:49:30 -0000 1.53
+++ install.php3 27 Sep 2003 23:13:37 -0000 1.54
@@ -168,7 +168,7 @@
   $deja_installe = !spip_sql_errno();

   creer_base();
- maj_base();
+ $maj_ok = maj_base();

   $query = "SELECT COUNT(*) FROM spip_articles";
   $result = spip_query_db($query);
@@ -182,7 +182,7 @@
   echo "-->";

- if ($result_ok) {
+ if ($result_ok && $maj_ok) {
     $conn = "<"."?php\n";
     $conn .= "if (defined(\"_ECRIRE_INC_CONNECT\")) return;\n";
     $conn .= "define(\"_ECRIRE_INC_CONNECT\", \"1\");\n";
@@ -203,6 +203,9 @@
     echo "<DIV align='$spip_lang_right'><INPUT TYPE='submit' CLASS='fondl' NAME='Valider' VALUE='"._T('bouton_suivant')." >>'>";

     echo "</FORM>";
+ }
+ else if (!$maj_ok) {
+ echo _T('alerte_maj_impossible', array('version' => $spip_version));
   }
   else {
     echo "<B>"._T('avis_operation_echec')."</B> "._T('texte_operation_echec');

Index: upgrade.php3

RCS file: /home/spip-cvs/spip/ecrire/upgrade.php3,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- upgrade.php3 17 Mar 2003 11:19:57 -0000 1.17
+++ upgrade.php3 27 Sep 2003 23:13:37 -0000 1.18
@@ -55,16 +55,24 @@
include_ecrire ("inc_base.php3");

creer_base();
-maj_base();
-ecrire_acces();
+$ok = maj_base();

-init_config();
+if ($ok) {
+ ecrire_acces();
+ init_config();

-$hash = calculer_action_auteur("purger_cache");
-$redirect = rawurlencode("index.php3");
+ $hash = calculer_action_auteur("purger_cache");
+ $redirect = rawurlencode("index.php3");
+}

fin_admin($upgrade_titre);

-@header ("Location: ../spip_cache.php3?purger_cache=oui&id_auteur=$connect_id_auteur&hash=$hash&redirect=$redirect");
+if ($ok)
+ @header ("Location: ../spip_cache.php3?purger_cache=oui&id_auteur=$connect_id_auteur&hash=$hash&redirect=$redirect");
+else {
+ include_ecrire ('inc_lang.php3');
+ echo _T('alerte_maj_impossible', array('version' => $spip_version));
+ exit;
+}

?>