source: spip-zone/_core_/plugins/dump/formulaires/restaurer.php @ 93610

Last change on this file since 93610 was 93610, checked in by cedric@…, 5 years ago

Indentation et regles de codage selon http://www.spip.net/fr_article3497.html#regles_codage

File size: 4.6 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2015                                                *
7 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
8 *                                                                         *
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\***************************************************************************/
12
13if (!defined("_ECRIRE_INC_VERSION")) {
14        return;
15}
16include_spip('base/dump');
17include_spip('inc/dump');
18
19/**
20 * Charger #FORMULAIRE_RESTAURER
21 *
22 * @return array
23 */
24function formulaires_restaurer_charger_dist() {
25        // ici on liste tout, les tables exclue sont simplement non cochees
26
27        $valeurs = array(
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',
32                'fichier' => '',
33                'tri' => 'nom',
34        );
35
36        return $valeurs;
37}
38
39/**
40 * Verifier
41 *
42 * @return array
43 */
44function formulaires_restaurer_verifier_dist() {
45        $erreurs = array();
46        $nom = "";
47        if (!$fichier = _request('fichier') AND !$nom = _request('nom_sauvegarde')) {
48                $erreurs['fichier'] = _T('info_obligatoire');
49        } elseif ($fichier) {
50                $fichier = basename($fichier); // securite
51                if (!file_exists(dump_repertoire() . $fichier)) {
52                        $erreurs['fichier'] = _T('dump:erreur_nom_fichier');
53                } else {
54                        $nom = $fichier;
55                }
56        } else {
57                $nom = basename($nom); // securite
58                if (!file_exists(dump_repertoire() . $nom)) {
59                        $erreurs['nom_sauvegarde'] = _T('dump:erreur_nom_fichier');
60                        $nom = "";
61                }
62        }
63        if (!$nom) {
64                $erreurs['message_erreur'] = _T('dump:erreur_restaurer_verifiez');
65        }
66
67        if ($nom) {
68                $archive = dump_repertoire() . $nom;
69                if (!$args = dump_connect_args($archive)) {
70                        $erreurs['tout_restaurer'] = _T('dump:erreur_sqlite_indisponible');
71                }
72                dump_serveur($args);
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("</li>\n<li class='choix'>",
76                                $tables
77                        ) . "</li></ol><input type='hidden' name='check_tables' value='oui' />\n";
78                if (!count(_request('tables')) AND !_request('tout_restaurer') AND _request('check_tables')) {
79                        $erreurs['tout_restaurer'] = _T('dump:selectionnez_table_a_restaurer');
80                }
81        }
82
83        if ($nom
84                AND (!count($erreurs) OR (count($erreurs) == 1 AND isset($erreurs['tables'])))
85        ) {
86                if (_request('confirm') !== $nom) {
87                        $erreurs['message_confirm'] =
88                                _T('dump:info_selection_sauvegarde',
89                                        array('fichier' => '<i>' . joli_repertoire(dump_repertoire() . $nom) . "</i>"))
90                                . "<br /><input type='checkbox' name='confirm' value='$nom' id='confirm' /> ";
91                        $erreurs['message_confirm'] .= "<label for='confirm'><strong>";
92                        if (_request('tables')) {
93                                $erreurs['message_confirm'] .= _T('dump:confirmer_ecraser_tables_selection');
94                        } else {
95                                $erreurs['message_confirm'] .= _T('dump:confirmer_ecraser_base');
96                        }
97                        $erreurs['message_confirm'] .= "</strong></label>";
98                } else // passer a traiter()
99                {
100                        unset($erreurs['tables']);
101                }
102        }
103
104        if (count($erreurs) AND !isset($erreurs['message_erreur'])) {
105                $erreurs['message_erreur'] = '';
106        } // pas de message general automatique ici
107        return $erreurs;
108}
109
110/**
111 * Traiter
112 *
113 * @return array
114 */
115function formulaires_restaurer_traiter_dist() {
116
117        $archive = (_request('fichier') ? _request('fichier') : _request('nom'));
118        $dir_dump = dump_repertoire();
119        $archive = $dir_dump . basename($archive, ".sqlite");
120
121        $status_file = base_dump_meta_name(0) . "_restauration";
122
123        if (_request('tout_restaurer')) {
124                $args = dump_connect_args($archive);
125                dump_serveur($args);
126                $tables = base_lister_toutes_tables('dump');
127        } else {
128                $tables = _request('tables');
129        }
130
131        include_spip('inc/dump');
132        $res = dump_init($status_file, $archive, $tables, array('spip_meta' => "impt='oui'"));
133
134        if ($res === true) {
135                // on lance l'action restaurer qui va realiser la sauvegarde
136                // et finira par une redirection vers la page sauvegarde_fin
137                include_spip('inc/actions');
138                $redirect = generer_action_auteur('restaurer', $status_file);
139
140                return array('message_ok' => 'ok', 'redirect' => $redirect);
141        } else {
142                return array('message_erreur' => $res);
143        }
144}
145
146
147?>
Note: See TracBrowser for help on using the repository browser.