source: spip-zone/_plugins_/trad-lang/trunk/action/tradlang_exporter_langue.php @ 82034

Last change on this file since 82034 was 82034, checked in by kent1@…, 7 years ago

Exporter en CSV

utiliser sql_allfetsel + foreach au lieur de sql_select + while + sql_fetch

Petites améliorations

File size: 2.5 KB
Line 
1<?php
2/**
3 *
4 * Trad-lang v2
5 * Plugin SPIP de traduction de fichiers de langue
6 * © Florent Jugla, Fil, kent1
7 *
8 * Action permettant de récupérer un fichier de langue
9 *
10 */
11if (!defined("_ECRIRE_INC_VERSION")) return;
12
13function action_tradlang_exporter_langue_dist(){
14        $securiser_action = charger_fonction('securiser_action', 'inc');
15        $arg = $securiser_action();
16        if (!preg_match(",^([0-9]+)\/(\w+)?(\/?(\w*))?(\/?(\w*))$,", $arg, $r))
17                spip_log("action_tradlang_exporter_langue_dist $arg pas compris","tradlang");
18
19        $id_tradlang_module = intval($r[1]);
20        $lang_cible = $r[2];
21        $type = $r[4] ? $r[4] : false;
22        $tout = ($r[6] == 'non') ? false : true;
23        if($lang_cible && intval($id_tradlang_module) && sql_countsel('spip_tradlangs','id_tradlang_module='.intval($id_tradlang_module).' AND lang='.sql_quote($lang_cible))){
24                $module = sql_getfetsel('module','spip_tradlang_modules','id_tradlang_module='.intval($id_tradlang_module));
25                $tradlang_sauvegarde_module = charger_fonction('tradlang_sauvegarde_module','inc');
26                $fichier = $tradlang_sauvegarde_module($module,$lang_cible,false,$type,$tout);
27                if(file_exists($fichier)){
28
29                        // supprimer et vider les buffers qui posent des problemes de memory limit
30                        // http://www.php.net/manual/en/function.readfile.php#81032
31                        // Copie du plugin acces restreint action/api_docrestreint.php
32                        @ini_set("zlib.output_compression","0"); // pour permettre l'affichage au fur et a mesure
33                        @ini_set("output_buffering","off");
34                        @ini_set('implicit_flush', 1);
35                        @ob_implicit_flush(1);
36                        while ($level--){
37                                @ob_end_clean();
38                        }
39
40                        switch($type){
41                                case 'po':
42                                        header('Content-Type: application/x-gettext;');
43                                break;
44                                case 'csv';
45                                        header('Content-type: text/csv');
46                                default:
47                                        header('Content-Type: application/x-httpd-php;');
48                        }
49                        header('Content-Length: '.filesize($fichier));
50                        header('Content-Transfer-Encoding: binary'); 
51                        header("Pragma: public"); // required
52                        header("Expires: 0");
53                        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
54                        header("Cache-Control: private",false); // required for certain browsers
55                        header('Content-Disposition: attachment; filename="'.basename($fichier).'"');
56                        readfile($fichier);
57                        die();
58                }else{
59                        include_spip('inc/minipres');
60                        echo minipres();
61                }
62        }else{
63                include_spip('inc/minipres');
64                echo minipres();
65        }
66        $redirect = _request('redirect');
67        if($redirect){
68                $redirect = parametre_url($redirect,'var_lang_crea',$lang_crea,'&');
69                include_spip('inc/headers');
70                redirige_par_entete($redirect);
71        }
72}
73?>
Note: See TracBrowser for help on using the repository browser.