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