0aa09211152a685d213b7c66d430d1c10638cfd2
[lhc/web/www.git] / www / plugins-dist / dump / inc / 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 include_spip('inc/dump');
18
19 /**
20 * Fonction principale de sauvegarde
21 * En mode sqlite on passe par une copie de base a base (dans l'API de SPIP)
22 *
23 * @param string $status_file Nom du fichier de status (stocke dans _DIR_TMP)
24 * @param string $redirect Redirection apres la sauvegarde
25 * @return bool
26 */
27 function inc_sauvegarder_dist($status_file, $redirect = '') {
28 $status_file = _DIR_TMP . basename($status_file) . '.txt';
29 if (!lire_fichier($status_file, $status)
30 or !$status = unserialize($status)
31 ) {
32 } else {
33 $timeout = ini_get('max_execution_time');
34 // valeur conservatrice si on a pas reussi a lire le max_execution_time
35 if (!$timeout) {
36 $timeout = 30;
37 } // parions sur une valeur tellement courante ...
38 $max_time = time() + $timeout / 2;
39
40 include_spip('inc/minipres');
41 @ini_set('zlib.output_compression', '0'); // pour permettre l'affichage au fur et a mesure
42
43 $titre = _T('dump:sauvegarde_en_cours') . ' (' . count($status['tables']) . ') ';
44 $balise_img = chercher_filtre('balise_img');
45 $titre .= $balise_img(chemin_image('searching.gif'));
46 echo(install_debut_html($titre));
47 // script de rechargement auto sur timeout
48 echo http_script("window.setTimeout('location.href=\"" . $redirect . "\";'," . ($timeout * 1000) . ')');
49 echo "<div style='text-align: left'>\n";
50
51 dump_serveur($status['connect']);
52 spip_connect('dump');
53
54 // au premier coup on ne fait rien sauf afficher l'ecran de sauvegarde
55 $res = false;
56 if (_request('step')) {
57 $options = array(
58 'callback_progression' => 'dump_afficher_progres',
59 'max_time' => $max_time,
60 'no_erase_dest' => lister_tables_noerase(),
61 'where' => $status['where'] ? $status['where'] : array(),
62 );
63 $res = base_copier_tables($status_file, $status['tables'], '', 'dump', $options);
64 }
65
66 echo("</div>\n");
67
68 if (!$res and $redirect) {
69 echo dump_relance($redirect);
70 }
71 echo(install_fin_html());
72 if (@ob_get_contents()) {
73 ob_end_flush();
74 }
75 flush();
76
77 return $res;
78 }
79 }