3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
6 * Copyright (c) 2001-2014 *
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")) return;
14 include_spip('base/dump');
15 include_spip('inc/dump');
18 * Charger #FORMULAIRE_RESTAURER
21 function formulaires_restaurer_charger_dist(){
22 // ici on liste tout, les tables exclue sont simplement non cochees
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',
40 function formulaires_restaurer_verifier_dist() {
42 if (!$fichier=_request('fichier') AND !$nom = _request('nom_sauvegarde'))
43 $erreurs['fichier'] = _T('info_obligatoire');
45 $fichier = basename($fichier); // securite
46 if (!file_exists(dump_repertoire().$fichier))
47 $erreurs['fichier'] = _T('dump:erreur_nom_fichier');
52 $nom = basename($nom); // securite
53 if (!file_exists(dump_repertoire().$nom)) {
54 $erreurs['nom_sauvegarde'] = _T('dump:erreur_nom_fichier');
59 $erreurs['message_erreur'] = _T('dump:erreur_restaurer_verifiez');
63 $archive = dump_repertoire().$nom;
64 if (!$args = dump_connect_args($archive))
65 $erreurs['tout_restaurer'] = _T('dump:erreur_sqlite_indisponible');
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'>",
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');
77 AND (!count($erreurs) OR (count($erreurs)==1 AND isset($erreurs['tables'])))
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');
87 $erreurs['message_confirm'].=_T('dump:confirmer_ecraser_base');
88 $erreurs['message_confirm'].="</strong></label>";
92 unset($erreurs['tables']);
102 function formulaires_restaurer_traiter_dist() {
104 $archive = (_request('fichier')?
_request('fichier'):_request('nom'));
105 $dir_dump = dump_repertoire();
106 $archive = $dir_dump . basename($archive,".sqlite");
108 $status_file = base_dump_meta_name(0)."_restauration";
110 if (_request('tout_restaurer')) {
111 $args = dump_connect_args($archive);
113 $tables = base_lister_toutes_tables('dump');
116 $tables = _request('tables');
118 include_spip('inc/dump');
119 $res = dump_init($status_file, $archive, $tables,array('spip_meta'=>"impt='oui'"));
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);
129 return array('message_erreur'=>$res);