0c192c3ebbd604673b7137c66e457bfb8070f050
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
6 * Copyright (c) 2001-2016 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
13 if (!defined('_ECRIRE_INC_VERSION')) {
16 include_spip('base/dump');
17 include_spip('inc/dump');
20 * Charger #FORMULAIRE_RESTAURER
24 function formulaires_restaurer_charger_dist() {
25 // ici on liste tout, les tables exclue sont simplement non cochees
28 '_dir_dump' => dump_repertoire(),
29 'choisi' => _request('fichier') ?
_request('fichier') : _request('nom'),
30 'nom_sauvegarde' => '',
31 'tout_restaurer' => (_request('check_tables') and !_request('tout_restaurer')) ?
'' : 'oui',
44 function formulaires_restaurer_verifier_dist() {
47 if (!$fichier = _request('fichier') and !$nom = _request('nom_sauvegarde')) {
48 $erreurs['fichier'] = _T('info_obligatoire');
50 $fichier = basename($fichier); // securite
51 if (!file_exists(dump_repertoire() . $fichier)) {
52 $erreurs['fichier'] = _T('dump:erreur_nom_fichier');
57 $nom = basename($nom); // securite
58 if (!file_exists(dump_repertoire() . $nom)) {
59 $erreurs['nom_sauvegarde'] = _T('dump:erreur_nom_fichier');
64 $erreurs['message_erreur'] = _T('dump:erreur_restaurer_verifiez');
68 $archive = dump_repertoire() . $nom;
69 if (!$args = dump_connect_args($archive)) {
70 $erreurs['tout_restaurer'] = _T('dump:erreur_sqlite_indisponible');
73 $tables = base_lister_toutes_tables('dump');
74 $tables = base_saisie_tables('tables', $tables, array(), _request('tables') ?
_request('tables') : array(), 'dump');
75 $erreurs['tables'] = "<ol class='spip'><li class='choix'>\n" . join(
76 "</li>\n<li class='choix'>",
78 ) . "</li></ol><input type='hidden' name='check_tables' value='oui' />\n";
79 if (!count(_request('tables')) and !_request('tout_restaurer') and _request('check_tables')) {
80 $erreurs['tout_restaurer'] = _T('dump:selectionnez_table_a_restaurer');
85 and (!count($erreurs) or (count($erreurs) == 1 and isset($erreurs['tables'])))
87 if (_request('confirm') !== $nom) {
88 $erreurs['message_confirm'] =
90 'dump:info_selection_sauvegarde',
91 array('fichier' => '<i>' . joli_repertoire(dump_repertoire() . $nom) . '</i>')
93 . "<br /><input type='checkbox' name='confirm' value='$nom' id='confirm' /> ";
94 $erreurs['message_confirm'] .= "<label for='confirm'><strong>";
95 if (_request('tables')) {
96 $erreurs['message_confirm'] .= _T('dump:confirmer_ecraser_tables_selection');
98 $erreurs['message_confirm'] .= _T('dump:confirmer_ecraser_base');
100 $erreurs['message_confirm'] .= '</strong></label>';
102 // passer a traiter()
103 unset($erreurs['tables']);
107 if (count($erreurs) and !isset($erreurs['message_erreur'])) {
108 $erreurs['message_erreur'] = '';
109 } // pas de message general automatique ici
118 function formulaires_restaurer_traiter_dist() {
120 $archive = (_request('fichier') ?
_request('fichier') : _request('nom'));
121 $dir_dump = dump_repertoire();
122 $archive = $dir_dump . basename($archive, '.sqlite');
124 $status_file = base_dump_meta_name(0) . '_restauration';
126 if (_request('tout_restaurer')) {
127 $args = dump_connect_args($archive);
129 $tables = base_lister_toutes_tables('dump');
131 $tables = _request('tables');
134 include_spip('inc/dump');
135 $res = dump_init($status_file, $archive, $tables, array('spip_meta' => "impt='oui'"));
138 // on lance l'action restaurer qui va realiser la sauvegarde
139 // et finira par une redirection vers la page sauvegarde_fin
140 include_spip('inc/actions');
141 $redirect = generer_action_auteur('restaurer', $status_file);
143 return array('message_ok' => 'ok', 'redirect' => $redirect);
145 return array('message_erreur' => $res);