source: spip-zone/_plugins_/csv_import/exec/csvimport_telecharger.php @ 39368

Last change on this file since 39368 was 39368, checked in by gilles.vincent@…, 10 years ago
  • Il ne faut pas passer les paramètres par défaut en argument des appels de fonction (dans csvimport_importcsv())
  • un cas extrème dans lequel le foreach() plante : création d'un export sans se donner les droits
  • spip_fetch_array() est déprécié (sous 2.1)
  • indentation
File size: 4.4 KB
Line 
1<?php
2/*
3 * CSVimport
4 * Plug-in d'import csv dans les tables spip et d'export CSV des tables
5 *
6 * Auteur :
7 * Cedric MORIN
8 * notre-ville.net
9 * © 2005,2009 - Distribue sous licence GNU/GPL
10 *
11 */
12
13include_spip("inc/csvimport");
14include_spip("inc/presentation");
15
16function exec_csvimport_telecharger(){
17        $table = _request('table');
18        $retour = _request('retour');
19
20        $delim = _request('delim');
21        if ($delim == 'TAB') $delim = "\t";
22
23        if (!$retour)
24                $retour = generer_url_ecrire('csvimport_tous');
25       
26        $operations = array();
27       
28        $titre = _T("csvimport:export_table",array('table'=>$table));
29        $is_importable = csvimport_table_importable($table,$titre,$operations);
30        if (in_array('export',$operations))
31                $csvimport_export_actif = true;
32       
33       
34        if ((!$delim)&&($csvimport_export_actif)){
35                $icone = "../"._DIR_PLUGIN_CSVIMPORT."img_pack/csvimport-24.png";
36                //
37                // Affichage de la page
38                //
39                $commencer_page = charger_fonction('commencer_page', 'inc');
40                pipeline('exec_init',array('args'=>$_GET,'data'=>''));
41                       
42                echo $commencer_page($titre,"csvimport");
43               
44                echo debut_gauche('',true);
45
46                $raccourcis = icone_horizontale(_T('csvimport:administrer_tables'), generer_url_ecrire("csvimport_admin"), "../"._DIR_PLUGIN_CSVIMPORT."img_pack/csvimport-24.png", "", false);
47                $raccourcis .= icone_horizontale(_T('csvimport:import_export_tables'), generer_url_ecrire("csvimport_tous"), "../"._DIR_PLUGIN_CSVIMPORT."img_pack/csvimport-24.png", "", false);
48
49                echo bloc_des_raccourcis($raccourcis);
50
51                echo pipeline('affiche_gauche',array('args'=>array('exec'=>'csvimport_telecharger','table'=>$table),'data'=>''));
52               
53                echo creer_colonne_droite("",true);
54                echo pipeline('affiche_droite',array('args'=>array('exec'=>'csvimport_telecharger','table'=>$table),'data'=>''));
55                echo debut_droite("",true);
56
57                $milieu = '';
58               
59                $milieu .= "<div class='entete-formulaire'>";
60                //
61                // Icones retour
62                //
63                if ($retour) {
64                        $milieu .= icone_inline(_T('icone_retour'), $retour, $icone, "rien.gif",$GLOBALS['spip_lang_left']);
65                }
66                $milieu .= gros_titre($titre,'', false);
67                $milieu .= "</div>";
68
69                $milieu .= "<div class='formulaire_spip'>";
70                $action = generer_url_ecrire("csvimport_telecharger","table=$table&retour=$retour");
71                $milieu .= "\n<form action='$action' method='post' class='formulaire_editer'><div>".form_hidden($action);
72                $milieu .= "<ul><li><label for='delim'>"._T("csvimport:export_format")."</label>";
73                $milieu .= "<select name='delim' id='delim'>\n";
74                $milieu .= "<option value=','>"._T("csvimport:export_classique")."</option>\n";
75                $milieu .= "<option value=';'>"._T("csvimport:export_excel")."</option>\n";
76                $milieu .= "<option value='TAB'>"._T("csvimport:export_tabulation")."</option>\n";
77                $milieu .= "</select></li></ul>";
78                $milieu .= "<p class='boutons'><input type='submit' class='submit' name='ok' value='"._T('bouton_download')."' /></p>\n";
79                $milieu .= "</div></form>";
80                $milieu .= "</div>";
81
82                echo pipeline('affiche_milieu',array('args'=>array('exec'=>'csvimport_telecharger','table'=>$table),'data'=>$milieu));
83
84                echo fin_gauche(), fin_page();
85                exit;
86       
87        }
88       
89        $csvimport_tables_auth = csvimport_tables_auth();
90        if ($csvimport_export_actif){
91                if (isset($csvimport_tables_auth[$table]['field']))
92                        $tablefield=$csvimport_tables_auth[$table]['field'];
93                else
94                        $tablefield=array_keys($tables_principales[$table]['field']);
95       
96                //
97                // Telechargement du contenu de la table au format CSV
98                //
99       
100                $output = csvimport_csv_ligne($tablefield,$delim);
101                //$tablefield = array_flip($tablefield);
102
103                $result = sql_select('*',$table);
104                while ($row=sql_fetch($result)){
105                        $ligne=array();
106                        foreach($tablefield as $key)
107                                if (isset($row[$key]))
108                                        $ligne[]=$row[$key];
109                                else
110                                        $ligne[]="";
111                        $output .= csvimport_csv_ligne($ligne,$delim);
112                }
113
114                $charset = $GLOBALS['meta']['charset'];
115
116
117                $filename = preg_replace(',[^-_\w]+,', '_', translitteration(textebrut(typo($titre))));
118
119                // Excel ?
120                if ($delim == ',')
121                        $extension = 'csv';
122                else {
123                        $extension = 'xls';
124                        # Excel n'accepte pas l'utf-8 ni les entites html... on fait quoi?
125                        include_spip('inc/charsets');
126                        $output = unicode2charset(charset2unicode($output), 'iso-8859-1');
127                        $charset = 'iso-8859-1';
128                }
129
130                Header("Content-Type: text/comma-separated-values; charset=$charset");
131                Header("Content-Disposition: attachment; filename=$filename.$extension");
132                //Header("Content-Type: text/plain; charset=$charset");
133                Header("Content-Length: ".strlen($output));
134                echo $output;
135                exit;
136        }
137        else {
138                include_spip('inc/minipres');
139                echo minipres();
140        }
141}
142?>
Note: See TracBrowser for help on using the repository browser.