[SPIP] v3.2.1-->v3.2.3
[lhc/web/www.git] / www / plugins-dist / dump / base / restaurer.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2019 *
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 include_spip('inc/actions');
19
20 /**
21 * Restauration d'une sauvegarde
22 *
23 * @param string $titre Titre de la page
24 * @param bool $reprise true s'il s'agit d'une reprise de sauvegarde
25 */
26 function base_restaurer_dist($titre = '', $reprise = false) {
27 $status_file = _DUMP_STATUS_FILE;
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 $redirect = parametre_url(generer_action_auteur('restaurer', _DUMP_STATUS_FILE), 'step', intval(_request('step') + 1), '&');
34
35 $timeout = ini_get('max_execution_time');
36 // valeur conservatrice si on a pas reussi a lire le max_execution_time
37 if (!$timeout) {
38 $timeout = 30;
39 } // parions sur une valeur tellement courante ...
40 $max_time = time() + $timeout / 2;
41
42 include_spip('inc/minipres');
43 @ini_set('zlib.output_compression', '0'); // pour permettre l'affichage au fur et a mesure
44
45 $titre = _T('dump:restauration_en_cours') . ' (' . count($status['tables']) . ') ';
46 $balise_img = chercher_filtre('balise_img');
47 $titre .= $balise_img(chemin_image('searching.gif'));
48 echo(install_debut_html($titre));
49 // script de rechargement auto sur timeout
50 echo http_script("window.setTimeout('location.href=\"" . $redirect . "\";'," . ($timeout * 1000) . ')');
51 echo "<div style='text-align: left'>\n";
52
53 dump_serveur($status['connect']);
54 spip_connect('dump');
55
56 // au premier coup on ne fait rien sauf afficher l'ecran de sauvegarde
57 if (_request('step')) {
58 $options = array(
59 'callback_progression' => 'dump_afficher_progres',
60 'max_time' => $max_time,
61 'no_erase_dest' => lister_tables_noerase(),
62 'where' => $status['where'] ? $status['where'] : array(),
63 'desc_tables_dest' => array()
64 );
65 if ($desc = sql_getfetsel('valeur', 'spip_meta', "nom='dump_structure_temp'", '', '', '', '', 'dump')
66 and $desc = unserialize($desc)
67 ) {
68 $options['desc_tables_dest'] = $desc;
69 }
70 $res = base_copier_tables($status_file, $status['tables'], 'dump', '', $options);
71 } else {
72 // mais on en profite pour reparer les version base pour etre sur de ne pas les perdre
73 sql_updateq('spip_meta', array('impt' => 'oui'), "nom='version_installee'", '', 'dump');
74 sql_updateq('spip_meta', array('impt' => 'oui'), "nom LIKE '%_base_version'", '', 'dump');
75 }
76
77 echo("</div>\n");
78
79 if (!$res) {
80 echo dump_relance($redirect);
81 }
82
83 echo(install_fin_html());
84 ob_end_flush();
85 flush();
86
87 if (!$res) {
88 exit;
89 }
90
91 // quand on sort de $export avec true c'est qu'on a fini
92 dump_end(_DUMP_STATUS_FILE, 'restaurer');
93 include_spip('inc/headers');
94 echo redirige_formulaire(generer_url_ecrire('restaurer', 'status=' . _DUMP_STATUS_FILE, '', true, true));
95 }
96 }