source: spip-zone/_plugins_/_stable_/mes_fichiers/action/export_all.php @ 14453

Last change on this file since 14453 was 14453, checked in by james@…, 14 years ago

On essaye d'enchaîner la sauvegarde avec la création du fichier zip. C'est encore un peu brut.
Il y a à assurer plus de contrôles et à placer le fichier final au bon endroit.
Faudra fignoler la cosmétique du truc.
Après on aura plus qu'à faire le contraire : dezipper puis lancer la restauration.

Pour l'instant, le principe, c'est qu'une fois la sauvegarde de base terminée, on envoie l'utilisateur à l'action de création du zip, on peut imaginer que ce soit automatique. (patches bienvenus)

Sinon, ça fait toucher à pas mal de choses, on surcharge 3 fichiers pour le moment, ça sera sans doute autant pour la restauration. :/

File size: 3.6 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2007                                                *
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")) return;
14
15include_spip('inc/export');
16include_spip('inc/minipres');
17
18// http://doc.spip.org/@action_export_all_dist
19function action_export_all_dist()
20{
21        global $spip_lang_left,$spip_lang_right;
22       
23        $securiser_action = charger_fonction('securiser_action', 'inc');
24        $arg = $securiser_action();
25
26        // determine upload va aussi initialiser l'index "restreint"
27        $dir = determine_upload();
28        if (!$GLOBALS['auteur_session']['restreint'] AND file_exists(_DIR_DUMP))
29                $dir = _DIR_DUMP;
30
31        list($quoi, $gz, $archive, $zip) = split(',', $arg);
32       
33        $file =  $dir . $archive;
34
35        include_spip('inc/meta');
36        utiliser_langue_visiteur();
37        if ($quoi =='start'){
38                // creer l'en tete du fichier et retourner dans l'espace prive
39                include_spip('inc/export');
40                ecrire_fichier($file, export_entete(),false);
41                ecrire_meta("status_dump", "$gz::$archive::1::0::$zip",'non');
42                ecrire_metas();
43                include_spip('inc/headers');
44                  // suite=1 ne sert qu'a distinguer cette redirection
45                  // d'avec l'appel initial sinon FireFox croit malin
46                  // d'optimiser la redirection
47                redirige_par_entete(generer_url_ecrire('export_all',"suite=1", true));
48        }elseif ($quoi=='end'){
49                lire_metas();
50                $tables_sauvegardees = isset($GLOBALS['meta']['status_dump_tables'])?unserialize($GLOBALS['meta']['status_dump_tables']):array();
51                effacer_meta("status_dump");
52                effacer_meta("status_dump_tables");
53                effacer_meta("export_session_id");
54                ecrire_metas();
55
56                $size = @(!file_exists($file) ? 0 : filesize($file));
57
58                if (!$size) {
59                        $corps = _T('avis_erreur_sauvegarde', array('type'=>'.', 'id_objet'=>'. .'));
60       
61                } else {
62        // ne pas effrayer inutilement: il peut y avoir moins de fichiers
63        // qu'annonce' si certains etaient vides
64                        $n = _T('taille_octets', array('taille' => number_format($size, 0, ' ', ' ')));
65               
66                        $corps = "<p style='text-align: $spip_lang_left'>".
67                          _T('mesfichiers:info_sauvegarde_reussi_02',
68                             array('archive' => ':<br /><b>'.joli_repertoire($file)."</b> ($n)")) .
69                          " <a href='" .  ($zip ? generer_url_action("mes_fichiers") : generer_url_ecrire()) . "'>".
70                        _T('mesfichiers:info_sauvegarde_reussi_03')
71                        . "</a> "
72                        ._T('mesfichiers:info_sauvegarde_reussi_04', array('fichier' => joli_repertoire($file.$zip)))
73                        . "</p>\n";
74                       
75                        $corps .= "<p style='text-align: $spip_lang_right'>".
76                          " <a href='" . ($zip ? generer_url_action("mes_fichiers") : generer_url_ecrire()) . "'>" .
77                          _T("retour") .
78                          "</a></p>";
79                                               
80                        // afficher la liste des tables qu'on a sauvegarde
81                        $tables_sauvegardees = array_keys($tables_sauvegardees);
82                        sort($tables_sauvegardees);
83                        $n = floor(count($tables_sauvegardees)/2);
84                        $corps .= "<div style='width:49%;float:left;'><ul><li>" . join('</li><li>', array_slice($tables_sauvegardees,0,$n)) . "</li></ul></div>"
85                        . "<div style='width:49%;float:left;'><ul><li>" . join('</li><li>', array_slice($tables_sauvegardees,$n)) . "</li></ul></div>"
86                        . "<br class='nettoyeur' />";
87                }
88                echo minipres(_T('info_sauvegarde'), $corps);
89                exit;
90        }
91}
92?>
Note: See TracBrowser for help on using the repository browser.