[SPIP] +2.1.12
[velocampus/web/www.git] / www / ecrire / action / export_all.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2011 *
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')) return;
14
15 include_spip('inc/lang');
16 include_spip('inc/actions');
17 include_spip('base/dump');
18
19 // http://doc.spip.org/@action_export_all_dist
20 function action_export_all_dist()
21 {
22 $securiser_action = charger_fonction('securiser_action', 'inc');
23 $arg = $securiser_action();
24
25 @list(, $gz, $archive, $rub, $version) = explode(',', $arg);
26 $meta = base_dump_meta_name($rub);
27 $dir = base_dump_dir($meta);
28 $file = $dir . $archive;
29
30 utiliser_langue_visiteur();
31 export_all_fin($file, $meta, $rub);
32 }
33
34 // http://doc.spip.org/@export_all_fin
35 function export_all_fin($file, $meta, $rub)
36 {
37 global $spip_lang_left,$spip_lang_right;
38
39 $metatable = $meta . '_tables';
40 $tables_sauvegardees = isset($GLOBALS['meta'][$metatable])?unserialize($GLOBALS['meta'][$metatable]):array();
41 effacer_meta($meta);
42 effacer_meta($metatable);
43
44 $size = @(!file_exists($file) ? 0 : filesize($file));
45
46 if (!$size) {
47 $corps = _T('avis_erreur_sauvegarde', array('type'=>'.', 'id_objet'=>'. .'));
48
49 } else {
50 $subdir = dirname($file);
51 $dir = dirname($subdir);
52 $nom = basename($file);
53 $dest = $dir . '/' . $nom;
54 if (file_exists($dest)) {
55 $n = 1;
56 while (@file_exists($new = "$dir/$n-$nom")) $n++;
57 @rename($dest, $new);
58 }
59 if (@rename($file, $dest)) {
60 spip_unlink($subdir);
61 spip_log("$file renomme en $dir/$nom");
62 }
63 // ne pas effrayer inutilement: il peut y avoir moins de fichiers
64 // qu'annonce' si certains etaient vides
65
66 $n = _T('taille_octets', array('taille' => number_format($size, 0, ' ', ' ')));
67
68 // cette chaine est a refaire car il y a double ambiguite:
69 // - si plusieurs SPIP dans une base SQL (cf table_prefix)
70 // - si on exporte seulement une rubrique
71 # _T('info_sauvegarde_reussi_02',
72
73 if ($rub) {
74 $titre = sql_getfetsel('titre', 'spip_rubriques', "id_rubrique=$rub");
75 $titre = _T('info_sauvegarde_rubrique_reussi',
76 array('archive' => ':<br /><b>'.joli_repertoire("$dir/$nom")."</b> ($n)", 'titre' => "<b>$titre</b>"));
77 }
78 else
79 $titre = _T('info_sauvegarde_reussi_02',
80 array('archive' => ':<br /><b>'.joli_repertoire("$dir/$nom")."</b> ($n)"));
81
82 $corps = "<p style='text-align: $spip_lang_left'>".
83 $titre .
84 " <a href='" . generer_url_ecrire() . "'>".
85 _T('info_sauvegarde_reussi_03')
86 . "</a> "
87 ._T('info_sauvegarde_reussi_04')
88 . "</p>\n";
89
90 include_spip('inc/filtres');
91 $corps .= "<div style='text-align: $spip_lang_right'>"
92 . bouton_action(_T("retour"), generer_url_ecrire())
93 . "</div>";
94
95 // afficher la liste des tables qu'on a sauvegarde
96 sort($tables_sauvegardees);
97 $n = floor(count($tables_sauvegardees)/2);
98 $corps .= "<div style='width:49%;float:left;'><ul><li>" . join('</li><li>', array_slice($tables_sauvegardees,0,$n)) . "</li></ul></div>"
99 . "<div style='width:49%;float:left;'><ul><li>" . join('</li><li>', array_slice($tables_sauvegardees,$n)) . "</li></ul></div>"
100 . "<div class='nettoyeur'></div>";
101 }
102 include_spip('inc/minipres');
103 echo minipres(_T('info_sauvegarde'), $corps);
104 exit;
105 }
106
107
108 ?>