diff --git a/ecrire/base/import_all.php b/ecrire/base/import_all.php index 115524adf3b3667f0fe727c5c714da943f50a53a..0517fd7cb40d310071977172e90c6af506a7822b 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 4d084622bc0864b75f1a34ae41a7628173679eb3..a5e38328388b294f4585576943c6fd2b6316e18d 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 d93f9b60dc1ad67b0cf693e24d914464c7278416..07d7ce7acfcba60f848753c65b70542e985349ae 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 381f5912be3c5b2833879132b772d86e6815e2e5..1bf8a772db5d2e0e2fdae767a48c6cfc2e26a6f0 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 5057e10c30f116b30de02c41fa329c2df960752b..2d6cc798f8c878b5c5307487cb333cc51ca26886 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 99182556f006f9db34f02e63bc9498dd253622b4..da020705eafe7099178c9cb2dc289df82632c8e6 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 7509e2aa22db70bb30e16a7fca88a381edd575a3..1015c7e93178143d336712dd93ed5d0eb93c4c29 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); + } }