source: spip-zone/_core_/plugins/dump/action/telecharger_dump.php @ 109752

Last change on this file since 109752 was 109752, checked in by spip.franck@…, 23 months ago

Bonne année aussi aux plugins-dist :-D

File size: 2.0 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2018                                                *
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
13if (!defined('_ECRIRE_INC_VERSION')) {
14        return;
15}
16
17include_spip('inc/dump');
18include_spip('inc/autoriser');
19
20/**
21 * Telecharger un dump quand on est webmestre
22 *
23 * @param string $arg
24 */
25function action_telecharger_dump_dist($arg = null) {
26        if (!$arg) {
27                $securiser_action = charger_fonction('securiser_action', 'inc');
28                $arg = $securiser_action();
29        }
30
31        $file = dump_repertoire() . basename($arg, '.sqlite') . '.sqlite';
32
33        if (
34                file_exists($file)
35                and autoriser('webmestre')
36        ) {
37                // Vider tous les tampons pour ne pas provoquer de Fatal memory exhausted
38                $level = @ob_get_level();
39                while ($level--) {
40                        @ob_end_clean();
41                }
42
43                $f = basename($file);
44                // ce content-type est necessaire pour eviter des corruptions de zip dans ie6
45                header('Content-Type: application/octet-stream');
46
47                header("Content-Disposition: attachment; filename=\"$f\";");
48                header('Content-Transfer-Encoding: binary');
49
50                // fix for IE catching or PHP bug issue
51                header('Pragma: public');
52                header('Expires: 0'); // set expiration time
53                header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
54
55                if ($cl = filesize($file)) {
56                        header('Content-Length: ' . $cl);
57                }
58                readfile($file);
59        } else {
60                http_status(404);
61                include_spip('inc/minipres');
62                echo minipres(_T('erreur') . ' 404', _T('info_acces_interdit'));
63        }
64
65        // et on finit comme ca d'un coup
66        exit;
67}
Note: See TracBrowser for help on using the repository browser.