Projet

Général

Profil

Paste
Statistiques
| Branche: | Révision:

ryxeo-glpi-git / inc / export.function.php @ b67d8923

Historique | Voir | Annoter | Télécharger (10,5 ko)

1
<?php
2
/*
3
 * @version $Id: export.function.php 7870 2009-01-20 20:24:42Z moyo $
4
 -------------------------------------------------------------------------
5
 GLPI - Gestionnaire Libre de Parc Informatique
6
 Copyright (C) 2003-2009 by the INDEPNET Development Team.
7

8
 http://indepnet.net/   http://glpi-project.org
9
 -------------------------------------------------------------------------
10

11
 LICENSE
12

13
 This file is part of GLPI.
14

15
 GLPI is free software; you can redistribute it and/or modify
16
 it under the terms of the GNU General Public License as published by
17
 the Free Software Foundation; either version 2 of the License, or
18
 (at your option) any later version.
19

20
 GLPI is distributed in the hope that it will be useful,
21
 but WITHOUT ANY WARRANTY; without even the implied warranty of
22
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23
 GNU General Public License for more details.
24

25
 You should have received a copy of the GNU General Public License
26
 along with GLPI; if not, write to the Free Software
27
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
28
 --------------------------------------------------------------------------
29
 */
30

    
31
if (!defined('GLPI_ROOT')){
32
        die("Sorry. You can't access directly to this file");
33
        }
34

    
35
/**
36
 * Print generic Header Column
37
 *
38
 *
39
 *@param $type display type (0=HTML, 1=Sylk,2=PDF,3=CSV)
40
 *@param $value value to display
41
 *@param $num column number
42
 *@param $linkto link display element (HTML specific)
43
 *@param $issort is the sort column ?
44
 *@param $order  order type ASC or DESC
45
 *
46
 *@return string to display
47
 *
48
 **/
49
function displaySearchHeaderItem($type,$value,&$num,$linkto="",$issort=0,$order=""){
50
        global $CFG_GLPI;
51
        $out="";
52
        switch ($type){
53
                case PDF_OUTPUT_LANDSCAPE : //pdf
54
                case PDF_OUTPUT_PORTRAIT :
55
                        global $PDF_HEADER;
56
                        $PDF_HEADER[$num]=utf8_decode(html_clean($value));
57
                        break;
58
                case SYLK_OUTPUT : //sylk
59
                        global $SYLK_HEADER,$SYLK_SIZE;
60
                        $SYLK_HEADER[$num]=sylk_clean($value);
61
                        $SYLK_SIZE[$num]=strlen($SYLK_HEADER[$num]);
62

    
63
//                        $out="F;SDM4;FG0C;".($num == 1 ? "Y1;" : "")."X$num\n";
64
//                        $out.= "C;N;K\"".sylk_clean($value)."\"\n"; 
65
                        break;
66
                case CSV_OUTPUT : //CSV
67
                        $out="\"".csv_clean($value)."\";";
68
                        break;
69
                default :
70

    
71
                        $out="<th>";
72
                        if ($issort) {
73
                                if ($order=="DESC") $out.="<img src=\"".$CFG_GLPI["root_doc"]."/pics/puce-down.png\" alt='' title=''>";
74
                                else $out.="<img src=\"".$CFG_GLPI["root_doc"]."/pics/puce-up.png\" alt='' title=''>";
75
                        }
76

    
77
                        if (!empty($linkto))
78
                                $out.= "<a href=\"$linkto\">";
79

    
80
                        $out.= $value;
81

    
82
                        if (!empty($linkto))
83
                                $out.="</a>";
84

    
85
                        $out.="</th>\n";
86
                        break;
87
        }
88
        $num++;
89
        return $out;
90

    
91
}
92

    
93

    
94
/**
95
 * Print generic normal Item Cell
96
 *
97
 *
98
 *@param $type display type (0=HTML, 1=Sylk,2=PDF,3=CSV)
99
 *@param $value value to display
100
 *@param $num column number
101
 *@param $row  row number
102
 *@param $extraparam extra parameters for display
103
 *
104
 *@return string to display
105
 *
106
 **/
107
function displaySearchItem($type,$value,&$num,$row,$extraparam=''){
108
        $out="";
109
        switch ($type){
110
                case PDF_OUTPUT_LANDSCAPE : //pdf
111
                case PDF_OUTPUT_PORTRAIT :
112
                        global $PDF_ARRAY,$PDF_HEADER;
113
                        $PDF_ARRAY[$row][$num]=utf8_decode(html_clean($value));
114
                        break;
115
                case SYLK_OUTPUT : //sylk
116
                        global $SYLK_ARRAY,$SYLK_HEADER,$SYLK_SIZE;
117
                        $SYLK_ARRAY[$row][$num]=sylk_clean($value);
118
                        $SYLK_SIZE[$num]=max($SYLK_SIZE[$num],strlen($SYLK_ARRAY[$row][$num]));
119

    
120
//                        $out="F;P3;FG0L;".($num == 1 ? "Y".$row.";" : "")."X$num\n";
121
//                        $out.= "C;N;K\"".sylk_clean($value)."\"\n"; 
122
                        break;
123
                      case CSV_OUTPUT : //csv
124
                            $out="\"".csv_clean($value)."\";";
125
                            break;
126
                default :
127
                        $out="<td $extraparam>".$value."</td>\n";
128
                        break;
129
        }
130
        $num++;
131
        return $out;
132

    
133
}
134

    
135
/**
136
 * Print generic error
137
 *
138
 *
139
 *@param $type display type (0=HTML, 1=Sylk,2=PDF,3=CSV)
140
 *
141
 *@return string to display
142
 *
143
 **/
144
function displaySearchError($type){
145
        global $LANG;
146
        $out="";
147
        switch ($type){
148
                case PDF_OUTPUT_LANDSCAPE : //pdf
149
                case PDF_OUTPUT_PORTRAIT :
150
                        break;
151
                case SYLK_OUTPUT : //sylk
152
                        break;
153
                case CSV_OUTPUT : //csv
154
                            break;
155
                default :
156
                        $out= "<div class='center'><strong>".$LANG["search"][15]."</strong></div>\n";
157
                        break;
158
        }
159
        return $out;
160

    
161
}
162
/**
163
 * Print generic footer
164
 *
165
 *
166
 *@param $type display type (0=HTML, 1=Sylk,2=PDF,3=CSV)
167
 *@param $title title of file : used for PDF
168
 *
169
 *@return string to display
170
 *
171
 **/
172
function displaySearchFooter($type,$title=""){
173
        global $LANG;
174
        $out="";
175
        switch ($type){
176
                case PDF_OUTPUT_LANDSCAPE : //pdf
177
                        global $PDF_HEADER,$PDF_ARRAY;
178
                        $pdf= new Cezpdf('a4','landscape');
179
                        $pdf->selectFont(GLPI_ROOT."/lib/ezpdf/fonts/Helvetica.afm");
180
                        $pdf->ezStartPageNumbers(750,10,10,'left',"GLPI PDF export - ".convDate(date("Y-m-d"))." - ".count($PDF_ARRAY)." ".utf8_decode($LANG["pager"][5])."- {PAGENUM}/{TOTALPAGENUM}");
181
                        $options=array('fontSize'=>8,'colGap'=>2,'maxWidth'=>800,'titleFontSize'=>8,);
182
                        $pdf->ezTable($PDF_ARRAY,$PDF_HEADER,utf8_decode($title),$options);
183
                        $pdf->ezStream();
184

    
185
                        break;
186
                case PDF_OUTPUT_PORTRAIT : //pdf
187
                        global $PDF_HEADER,$PDF_ARRAY;
188
                        $pdf= new Cezpdf('a4','portrait');
189
                        $pdf->selectFont(GLPI_ROOT."/lib/ezpdf/fonts/Helvetica.afm");
190
                        $pdf->ezStartPageNumbers(550,10,10,'left',"GLPI PDF export - ".convDate(date("Y-m-d"))." - ".count($PDF_ARRAY)." ".utf8_decode($LANG["pager"][5])."- {PAGENUM}/{TOTALPAGENUM}");
191
                        $options=array('fontSize'=>8,'colGap'=>2,'maxWidth'=>565,'titleFontSize'=>8,);
192
                        $pdf->ezTable($PDF_ARRAY,$PDF_HEADER,utf8_decode($title),$options);
193
                        $pdf->ezStream();
194

    
195
                        break;
196
                case SYLK_OUTPUT : //sylk
197

    
198
                        global $SYLK_HEADER,$SYLK_ARRAY,$SYLK_SIZE;
199
                        // largeurs des colonnes
200
                        foreach ($SYLK_SIZE as $num => $val) {
201
                                $out.= "F;W".$num." ".$num." ".min(50,$val)."\n";
202
                        }
203
                        $out.="\n";
204
                        // Header
205
                        foreach ($SYLK_HEADER as $num => $val){
206
                                $out.="F;SDM4;FG0C;".($num == 1 ? "Y1;" : "")."X$num\n";
207
                                $out.= "C;N;K\"".sylk_clean($val)."\"\n"; 
208
                                $out.="\n";
209
                        }
210
                        // Datas
211
                        foreach ($SYLK_ARRAY as $row => $tab){
212
                                foreach ($tab as $num => $val){
213
                                        $out.="F;P3;FG0L;".($num == 1 ? "Y".$row.";" : "")."X$num\n";
214
                                        $out.= "C;N;K\"".sylk_clean($val)."\"\n"; 
215
                                }
216
                        }
217

    
218
                        $out.= "E\n";
219
                        break;
220
                case CSV_OUTPUT : //csv
221
                            break;
222
                default :
223
                        $out= "</table></div>\n";
224
                        break;
225
        }
226
        return $out;
227

    
228
}
229
/**
230
 * Print generic footer
231
 *
232
 *
233
 *@param $type display type (0=HTML, 1=Sylk,2=PDF,3=CSV)
234
 *@param $cols number of columns
235
 *@param $rows  number of rows
236
 *@param $fixed  used tab_cadre_fixe table for HTML export ?  
237
 *
238
 *@return string to display
239
 *
240
 **/
241
function displaySearchHeader($type,$rows,$cols,$fixed=0){
242
        $out="";
243
        switch ($type){
244
                case PDF_OUTPUT_LANDSCAPE : //pdf
245
                case PDF_OUTPUT_PORTRAIT :
246
                        global $PDF_ARRAY,$PDF_HEADER;
247
                        $PDF_ARRAY=array();
248
                        $PDF_HEADER=array();
249
                        break;
250
                case SYLK_OUTPUT : // Sylk
251
                        global $SYLK_ARRAY,$SYLK_HEADER,$SYLK_SIZE;
252
                        $SYLK_ARRAY=array();
253
                        $SYLK_HEADER=array();
254
                        $SYLK_SIZE=array();
255

    
256
//                        define("FORMAT_REEL",   1); // #,##0.00
257
//                        define("FORMAT_ENTIER", 2); // #,##0
258
//                        define("FORMAT_TEXTE",  3); // @
259

    
260
//                        $cfg_formats[FORMAT_ENTIER] = "FF0";
261
//                        $cfg_formats[FORMAT_REEL]   = "FF2";
262
//                        $cfg_formats[FORMAT_TEXTE]  = "FG0";
263

    
264
                        // entetes HTTP
265
                        // --------------------------------------------------------------------
266
                        header("Expires: Mon, 26 Nov 1962 00:00:00 GMT");
267
                        header('Pragma: private'); /// IE BUG + SSL
268
                        //header('Pragma: no-cache'); 
269
                        header('Cache-control: private, must-revalidate'); /// IE BUG + SSL
270
                        header("Content-disposition: filename=glpi.slk");
271
                        header('Content-type: application/octetstream');
272

    
273

    
274
                        // entete du fichier
275
                        // --------------------------------------------------------------------
276
                        echo "ID;PGLPI_EXPORT\n"; // ID;Pappli
277
                        echo "\n";
278
                        // formats
279
                        echo "P;PGeneral\n";      
280
                        echo "P;P#,##0.00\n";       // P;Pformat_1 (reels)
281
                        echo "P;P#,##0\n";          // P;Pformat_2 (entiers)
282
                        echo "P;P@\n";              // P;Pformat_3 (textes)
283
                        echo "\n";
284
                        // polices
285
                        echo "P;EArial;M200\n";
286
                        echo "P;EArial;M200\n";
287
                        echo "P;EArial;M200\n";
288
                        echo "P;FArial;M200;SB\n";
289
                        echo "\n";
290
                        // nb lignes * nb colonnes
291
                        echo "B;Y".$rows;
292
                        echo ";X".$cols."\n"; // B;Yligmax;Xcolmax
293
                        echo "\n";
294

    
295
                        break;
296
                case CSV_OUTPUT : // csv
297
                        header("Expires: Mon, 26 Nov 1962 00:00:00 GMT");
298
                        header('Pragma: private'); /// IE BUG + SSL
299
                        header('Cache-control: private, must-revalidate'); /// IE BUG + SSL
300
                        header("Content-disposition: filename=glpi.csv");
301
                        header('Content-type: application/octetstream');
302
                        break;
303
                default :
304
                        if ($fixed){
305
                                $out="<div class='center'><table border='0' class='tab_cadre_fixehov'>\n";
306
                        } else {
307
                                $out="<div class='center'><table border='0' class='tab_cadrehov'>\n";
308
                        }
309
                        break;
310
        }
311
        return $out;
312

    
313
}
314

    
315
/**
316
 * Print generic new line
317
 *
318
 *
319
 *@param $type display type (0=HTML, 1=Sylk,2=PDF,3=CSV)
320
 *@param $odd is it a new odd line ?
321
 *
322
 *@return string to display
323
 *
324
 **/
325
function displaySearchNewLine($type,$odd=false){
326
        $out="";
327
        switch ($type){
328
                case PDF_OUTPUT_LANDSCAPE : //pdf
329
                case PDF_OUTPUT_PORTRAIT :
330
                        break;
331
                case SYLK_OUTPUT : //sylk
332
//                        $out="\n";
333
                        break;
334
                case CSV_OUTPUT : //csv
335
                            break;
336
                default :
337
                        $class=" class='tab_bg_2' ";
338
                        if ($odd){
339
                                $class=" class='tab_bg_1' ";
340
                        }
341
                        $out="<tr $class>";
342
                        break;
343
        }
344
        return $out;
345
}
346
/**
347
 * Print generic end line
348
 *
349
 *
350
 *@param $type display type (0=HTML, 1=Sylk,2=PDF,3=CSV)
351
 *
352
 *@return string to display
353
 *
354
 **/
355
function displaySearchEndLine($type){
356
        $out="";
357
        switch ($type){
358
                case PDF_OUTPUT_LANDSCAPE : //pdf
359
                case PDF_OUTPUT_PORTRAIT :
360
                        break;
361
                case SYLK_OUTPUT : //sylk
362
                        break;
363
                case CSV_OUTPUT : //csv
364
                            $out="\n";
365
                            break;
366
                default :
367
                        $out="</tr>";
368
                        break;
369
        }
370
        return $out;
371
}
372

    
373
/**
374
 * Clean display value for csv export
375
 *
376
 *
377
 *@param $value string value
378
 *
379
 *@return clean value
380
 *
381
 **/
382
function csv_clean($value){
383

    
384
//        $value=utf8_decode($value);
385
        if (get_magic_quotes_runtime()) $value=stripslashes($value);
386
//        $value=preg_replace('/\x0A/',' ',$value);
387
//        $value=preg_replace('/\x0D/',NULL,$value);
388
        $value=ereg_replace("\"","''",$value);
389
//        $value=str_replace(';', ',', $value);
390
        $value=html_clean($value);
391

    
392
        return $value;
393
}
394

    
395
/**
396
 * Clean display value for sylk export
397
 *
398
 *
399
 *@param $value string value
400
 *
401
 *@return clean value
402
 *
403
 **/
404
function sylk_clean($value){
405

    
406
//        $value=utf8_decode($value);
407
        if (get_magic_quotes_runtime()) $value=stripslashes($value);
408
        $value=preg_replace('/\x0A/',' ',$value);
409
        $value=preg_replace('/\x0D/',NULL,$value);
410
        $value=ereg_replace("\"","''",$value);
411
        $value=str_replace(';', ';;', $value);
412
        $value=html_clean($value);
413

    
414
        return $value;
415
}
416

    
417
?>
Redmine Appliance - Powered by TurnKey Linux