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