Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 232 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
210 aurelien 1
<?php
2
// declare(encoding='UTF-8');
3
/**
4
 * Classe de gestion des epeces.
5
 *
6
 * @package     Collection
7
 * @category    Php 5.2
8
 * @author      Aurélien PERONNET <aurelien@tela-botanica.org>
9
 * @copyright   2010 Tela-Botanica
10
 * @license     http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
11
 * @license     http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
12
 * @version     SVN: $Id: Espece.php 152 2010-09-06 16:19:12Z jpm $
13
 */
14
class Export extends aControleur {
15
 
16
	public function __construct()  {
17
 
18
		parent::__construct();
19
        $this->initialiser();
20
    }
21
 
22
    public function executerActionParDefaut() {
23
    	return $this->envoyerFichierCSVExportObservation();
24
    }
25
 
26
    public function initialiser() {
27
 
28
    }
29
 
30
	// +---------------------------------------------------------------------------------------------------------------+
31
    // METHODES D'AFFICHAGE DE FORMULAIRE
32
    public function envoyerFichierCSVExportObservation() {
33
 
34
    	$donnees = array();
35
 
36
    	$export_dao = new ExportDao();
37
    	$export = $export_dao->getExportObservations();
38
    	$csv = $this->convertirTableauAssocVersCSV($export);
39
 
40
    	$this->envoyerFichier($csv);
41
    }
42
 
43
	public function convertirTableauAssocVersCSV($tableau) {
232 aurelien 44
 
210 aurelien 45
		$csv = '';
46
 
232 aurelien 47
		if(count($tableau > 0)) {
48
			unset($tableau[0]['pseudo_participant']);
49
			unset($tableau[0]['mail_participant']);
50
 
51
			$colonnes = array_keys($tableau[0]);
52
 
53
			$csv .= implode(';',$colonnes).";\n";
54
 
55
			foreach($tableau as $elements) {
56
				unset($elements['pseudo_participant']);
57
				unset($elements['mail_participant']);
287 aurelien 58
				$ligne = "";
59
				// parcours des cases de chaque ligne nécessaire car si on utilise implode
60
				// les valeurs vides ne sont pas prises et ça décale les colonnes
61
				foreach ($elements as $element) {
62
					$ligne .= '"'.$element.'";';
63
				}
64
				$csv .= $ligne."\n";
232 aurelien 65
			}
210 aurelien 66
		}
67
 
68
		return $csv;
69
	}
70
 
71
	public function envoyerFichier($contenu) {
72
 
73
		$nom_fichier = "observations_export.csv";
74
		$chemin_fichier = Config::get('chemin_fichiers_temp').'/'.$nom_fichier;
75
 
76
		file_put_contents($chemin_fichier, $contenu);
77
 
78
		$contenu = file_get_contents($chemin_fichier);
79
		$taille_fichier = filesize($chemin_fichier);
80
 
81
		unlink($chemin_fichier);
82
 
83
		ini_set('zlib.output_compression','Off');
84
 
85
		header('Pragma: public');
86
		header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
87
		header('Cache-Control: must-revalidate, pre-check=0, post-check=0, max-age=0');
88
 
89
		header('Content-Tranfer-Encoding: none');
90
 
91
		header('Content-Type: application/octetstream; name="'.$nom_fichier.'"');
92
		header('Content-Disposition: attachement; filename="'.$nom_fichier.'"');
93
 
94
		header('Content-Length: '.$taille_fichier);
95
 
96
		echo $contenu;
97
		exit();
98
	}
99
}
100
 
101
?>