fa7da2c9e6af45ff0f4dfa7ff78edf1b675bd3bc
[lhc/web/www.git] / www / plugins-dist / dump / action / sauvegarder.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')) {
14 return;
15 }
16
17 /**
18 *
19 * On arrive ici depuis le #FORMULAIRE_SAUVEGARDER
20 * - l'initialisation a ete faite avant redirection
21 * - on enchaine sur inc/sauvegarder, qui remplit le dump et renvoie ici a chaque timeout
22 * - a chaque coup on relance inc/sauvegarder
23 * - lorsque inc/sauvegarder a fini, il retourne true
24 * - on renvoie vers exec=sauvegarder pour afficher le resume
25 *
26 */
27
28 include_spip('base/dump');
29 include_spip('inc/dump');
30
31 /**
32 * Sauvegarder par morceaux
33 *
34 * @param string $arg
35 */
36 function action_sauvegarder_dist($arg = null) {
37 if (!$arg) {
38 $securiser_action = charger_fonction('securiser_action', 'inc');
39 $arg = $securiser_action();
40 }
41
42 $status_file = $arg;
43 $redirect = parametre_url(generer_action_auteur('sauvegarder', $status_file), 'step', intval(_request('step') + 1), '&');
44
45 // lancer export qui va se relancer jusqu'a sa fin
46 $sauvegarder = charger_fonction('sauvegarder', 'inc');
47 utiliser_langue_visiteur();
48 // quand on sort de $export avec true c'est qu'on a fini
49 if ($sauvegarder($status_file, $redirect)) {
50 dump_end($status_file, 'sauvegarder');
51 include_spip('inc/headers');
52 echo redirige_formulaire(generer_url_ecrire('sauvegarder', 'status=' . $status_file, '', true, true));
53 }
54
55 // forcer l'envoi du buffer par tous les moyens !
56 echo(str_repeat("<br />\r\n", 256));
57 while (@ob_get_level()) {
58 @ob_flush();
59 @flush();
60 @ob_end_flush();
61 }
62 }