From c89566998a44a0091852566cf6f052807e0f1b13 Mon Sep 17 00:00:00 2001 From: Cerdic <cedric@yterium.com> Date: Mon, 7 Apr 2008 19:57:36 +0000 Subject: [PATCH] permettre de retrouver son site lorsque une restauration echoue : - on peut se connecter avec un id_auteur=0 - si on ne sait pas quoi restaurer, il faut au moins sortir de la pour recuperer la main --- ecrire/base/import_all.php | 1 + ecrire/exec/import_all.php | 10 +++++++- ecrire/inc/auth.php | 7 ++++-- ecrire/inc/session.php | 5 ++-- ecrire/maj/vieille_base/1917/create.php | 4 +-- ecrire/maj/vieille_base/1927/create.php | 4 +-- ecrire/maj/vieille_base/create.php | 33 ++++++++++++++++--------- 7 files changed, 43 insertions(+), 21 deletions(-) diff --git a/ecrire/base/import_all.php b/ecrire/base/import_all.php index 115524adf3..0517fd7cb4 100644 --- a/ecrire/base/import_all.php +++ b/ecrire/base/import_all.php @@ -112,6 +112,7 @@ function import_all_fin($request) { effacer_meta('restauration_charset_sql_connexion'); effacer_meta('attributs_archive_restauration'); effacer_meta('restauration_table_prefix'); + effacer_meta('restauration_table_prefix_source'); effacer_meta('vieille_version_installee'); if ($request['insertion'] == 'passe2') sql_drop_table("spip_translate"); diff --git a/ecrire/exec/import_all.php b/ecrire/exec/import_all.php index 4d084622bc..a5e3832838 100644 --- a/ecrire/exec/import_all.php +++ b/ecrire/exec/import_all.php @@ -47,7 +47,15 @@ function exec_import_all_dist() array('archive' => $archive)); $admin = charger_fonction('admin', 'inc'); echo $admin('import_all', $action, $commentaire, !$insert); - } else redirige_url_ecrire(); + } else { + // on ne sait pas quoi importer, il faut sortir de la ! + include_spip('base/import_all'); + import_all_fin(array()); + include_spip('inc/import'); + detruit_restaurateur(); + effacer_meta('admin'); + redirige_url_ecrire(); + } } // http://doc.spip.org/@import_queldir diff --git a/ecrire/inc/auth.php b/ecrire/inc/auth.php index d93f9b60dc..07d7ce7acf 100644 --- a/ecrire/inc/auth.php +++ b/ecrire/inc/auth.php @@ -78,7 +78,9 @@ function inc_auth_dist() { // Session valide en cours ? if (isset($_COOKIE['spip_session'])) { $session = charger_fonction('session', 'inc'); - if ($connect_id_auteur = $session()) { + if ($connect_id_auteur = $session() + OR $connect_id_auteur===0 // reprise sur restauration + ) { $auth_can_disconnect = true; } else unset($_COOKIE['spip_session']); } @@ -114,7 +116,8 @@ function inc_auth_dist() { } $where = (is_numeric($connect_id_auteur) - AND $connect_id_auteur>0) ? + /*AND $connect_id_auteur>0*/ // reprise lors des restaurations + ) ? "id_auteur=$connect_id_auteur" : (!$connect_login ? '' : "login=" . sql_quote($connect_login)); diff --git a/ecrire/inc/session.php b/ecrire/inc/session.php index 381f5912be..1bf8a772db 100644 --- a/ecrire/inc/session.php +++ b/ecrire/inc/session.php @@ -46,6 +46,7 @@ function inc_session_dist($auteur=false) // http://doc.spip.org/@ajouter_session function ajouter_session($auteur) { + if (!is_numeric($auteur['id_auteur'])) return false; // Si le client a deja une session valide pour son id_auteur // on conserve le meme fichier $auteur['id_auteur'] = intval($auteur['id_auteur']); @@ -93,7 +94,7 @@ function session_get($nom) { // (auteurs identifies seulement) // http://doc.spip.org/@actualiser_sessions function actualiser_sessions($auteur){ - if (!intval($id_auteur = $auteur['id_auteur'])) + if (!is_numeric($auteur['id_auteur'])) return; // memoriser l'auteur courant (celui qui modifie la fiche) @@ -215,7 +216,7 @@ function verifier_session($change=false) { ajouter_session($GLOBALS['visiteur_session']); } - return $GLOBALS['visiteur_session']['id_auteur']; + return is_numeric($GLOBALS['visiteur_session']['id_auteur'])?$GLOBALS['visiteur_session']['id_auteur']:null; } // Code a inserer par inc/presentation pour rejouer la session diff --git a/ecrire/maj/vieille_base/1917/create.php b/ecrire/maj/vieille_base/1917/create.php index 5057e10c30..2d6cc798f8 100644 --- a/ecrire/maj/vieille_base/1917/create.php +++ b/ecrire/maj/vieille_base/1917/create.php @@ -25,10 +25,10 @@ function maj_vieille_base_1917_create() { # if ($vu) return; else $vu = true; foreach($tables_principales as $k => $v) - spip_create_table($k, $v['field'], $v['key'], true); + spip_create_vieille_table($k, $v['field'], $v['key'], true); foreach($tables_auxiliaires as $k => $v) - spip_create_table($k, $v['field'], $v['key'], false); + spip_create_vieille_table($k, $v['field'], $v['key'], false); foreach($tables_images as $k => $v) spip_query("INSERT IGNORE INTO spip_types_documents (extension, inclus, titre, id_type) VALUES ('$k', 'image', '" . diff --git a/ecrire/maj/vieille_base/1927/create.php b/ecrire/maj/vieille_base/1927/create.php index 99182556f0..da020705ea 100644 --- a/ecrire/maj/vieille_base/1927/create.php +++ b/ecrire/maj/vieille_base/1927/create.php @@ -25,10 +25,10 @@ function maj_vieille_base_1927_create() { # if ($vu) return; else $vu = true; foreach($tables_principales as $k => $v) - spip_mysql_create($k, $v['field'], $v['key'], true); + spip_create_vieille_table($k, $v['field'], $v['key'], true); foreach($tables_auxiliaires as $k => $v) - spip_mysql_create($k, $v['field'], $v['key'], false); + spip_create_vieille_table($k, $v['field'], $v['key'], false); foreach($tables_images as $k => $v) spip_query_db("INSERT IGNORE INTO spip_types_documents (extension, inclus, titre, id_type) VALUES ('$k', 'image', '" . diff --git a/ecrire/maj/vieille_base/create.php b/ecrire/maj/vieille_base/create.php index 7509e2aa22..1015c7e931 100644 --- a/ecrire/maj/vieille_base/create.php +++ b/ecrire/maj/vieille_base/create.php @@ -14,7 +14,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return; $serveur_vieille_base =0; -function spip_create_table($table,$fields,$keys,$autoinc){ +function spip_create_vieille_table($table,$fields,$keys,$autoinc){ static $fcreate = null; $serveur = $GLOBALS['serveur_vieille_base']; if (!$fcreate) $fcreate = sql_serveur('create', $serveur); @@ -30,25 +30,34 @@ function maj_vieille_base_create_dist($version_cible){ $new_prefixe = "XXspip$version"; // ici on ecrit la meta dans la table 'officielle' ecrire_meta('restauration_table_prefix',$new_prefixe,'non'); - ecrire_meta('vieille_version_installee',$version,'non'); + ecrire_meta('vieille_version_installee',$version_cible,'non'); + $metas = $GLOBALS['meta']; - //$GLOBALS['table_prefix'] = $new_prefixe; - //lire_metas(); $prefixe_source = $GLOBALS['connexions'][0]['prefixe']; $GLOBALS['serveur_vieille_base'] = 0; $GLOBALS['connexions'][$GLOBALS['serveur_vieille_base']] = $GLOBALS['connexions'][0]; $GLOBALS['connexions'][$GLOBALS['serveur_vieille_base']]['prefixe'] = $new_prefixe; + lire_metas(); + + if (!isset($GLOBALS['meta']['restauration_table_prefix_source'])) { - $create = charger_fonction('create',"maj/vieille_base/$version"); - $create(); + $create = charger_fonction('create',"maj/vieille_base/$version"); + $create(); + + // reecrire les metas dans la table provisoire + foreach($metas as $k=>$v) + ecrire_meta($k,$v); + ecrire_meta('restauration_table_prefix_source',$prefixe_source,'non'); - // reecrire les metas dans la table provisoire - foreach($GLOBALS['meta'] as $k=>$v) - ecrire_meta($k,$v); - ecrire_meta('restauration_table_prefix_source',$prefixe_source,'non'); + // noter le numero de version installee + ecrire_meta('version_installee',$version,'non'); + } - // noter le numero de version installee - ecrire_meta('version_installee',$version_cible,'non'); + if ($version_cible!=$GLOBALS['meta']['version_installee']) { + // upgrader jusqu'a la cible + include_spip('base/upgrade'); + maj_base($version_cible); + } } -- GitLab