Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 264 | Rev 271 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 264 Rev 270
1
<?php
1
<?php
2
 
2
 
3
class OdsExport extends OdsTriple {
3
class OdsExport extends OdsTriple {
4
	
4
	
5
	const PREFIXE = 'get';
5
	const PREFIXE = 'get';
6
	const ABBR_LISTE_EVENEMENTS = 'evenement';
6
	const ABBR_LISTE_EVENEMENTS = 'evenement';
7
	const ABBR_LISTE_ESPECES = 'espece';
7
	const ABBR_LISTE_ESPECES = 'espece';
8
	const ABBR_LISTE_MILIEUX = 'environnement';
8
	const ABBR_LISTE_MILIEUX = 'environnement';
9
 
9
 
10
	private $type_mime = 'text/html';
10
	private $type_mime = 'text/html';
11
	
11
	
12
	/**
12
	/**
13
 	* Méthodes d'extractions d'informations
13
 	* Méthodes d'extractions d'informations
14
 	*/
14
 	*/
15
	
15
	
16
	/**
16
	/**
17
     * Méthode appelée avec une requête de type GET.
17
     * Méthode appelée avec une requête de type GET.
18
     *
18
     *
19
     */
19
     */
20
    function getElement($param = array()) {
20
    function getElement($param = array()) {
21
    	
21
    	
22
    	$type = $param[0];
22
    	$type = $param[0];
23
    	    	
23
    	    	
24
        if ($type == '*' || is_numeric($type)) {
24
        if ($type == '*' || is_numeric($type)) {
25
            $info = $this->getElementParDefaut($param);
25
            $info = $this->getElementParDefaut($param);
26
        } else {
26
        } else {
27
            $methode = self::PREFIXE.$type;
27
            $methode = self::PREFIXE.$type;
28
            if (method_exists($this, $methode)) {
28
            if (method_exists($this, $methode)) {
29
                array_shift($param);
29
                array_shift($param);
30
                $info = $this->$methode($param);
30
                $info = $this->$methode($param);
31
            } else {
31
            } else {
32
                $this->messages[] = "Le type d'information demandé '$type' n'est pas disponible.";
32
                $this->messages[] = "Le type d'information demandé '$type' n'est pas disponible.";
33
            }
33
            }
34
        }
34
        }
35
 
35
 
-
 
36
		$this->envoyer($info,$this->type_mime);
-
 
37
    }
-
 
38
    
-
 
39
    public function getExportStationJson() {
-
 
40
    
-
 
41
    	$donnees = $this->getExportStation();
-
 
42
    	$donnees_formatees = $this->formaterListeStationPourExportJson($donnees);
-
 
43
    
-
 
44
    	$this->type_mime = 'application/json';
-
 
45
    
-
 
46
    	return $donnees_formatees;
-
 
47
    }
-
 
48
    
-
 
49
    public function getExportStation($start = null,$limit = null, $order_by = 'oo_date') {
-
 
50
    
-
 
51
    	$requete_selection_stations = 'SELECT * FROM ods_stations ';    
-
 
52
    	$res_selection_stations = $this->executerRequete($requete_selection_stations);
-
 
53
    
-
 
54
    	return $res_selection_stations;
-
 
55
    }
-
 
56
    
-
 
57
    public function formaterListeStationPourExportJson($tableau_stations_infos) {
-
 
58
    
-
 
59
    	$gestionnaire_especes = new OdsEspece($this->config);
-
 
60
    	$gestionnaire_communes = new OdsCommune($this->config);
-
 
61
    	$gestionnaire_utilisateurs = new OdsUtilisateur($this->config);
-
 
62
    
-
 
63
    	$especes = $gestionnaire_especes->getToutesEspeces();
-
 
64
    	$evenements = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_EVENEMENTS);
-
 
65
    	$milieux = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_MILIEUX);
-
 
66
    	$utilisateurs = $gestionnaire_utilisateurs->getListeUtilisateurAvecInfosComplementairesFormateeId();
-
 
67
    	$communes = $gestionnaire_communes->obtenirCommunesLieesAStationIndexeesCodeInsee();
-
 
68
  
-
 
69
    	$resultats_formates = array();
-
 
70
    	$stats = array('total' => count($tableau_stations_infos));
-
 
71
    	
-
 
72
    	foreach($tableau_stations_infos as $stations_infos) {    		
-
 
73
    		$commune = isset($communes[$stations_infos['os_ce_commune']]['oc_nom']) ? $communes[$stations_infos['os_ce_commune']]['oc_nom'] : '';
-
 
74
    		
-
 
75
    		$id_station = $stations_infos['os_id_station'];
-
 
76
    		$resultats_formates[$id_station]['nom'] = $stations_infos['os_nom'];
-
 
77
    		$resultats_formates[$id_station]['code_commune'] = is_numeric($stations_infos['os_ce_commune']) ? substr($stations_infos['os_ce_commune'], 0, 2) : '';
-
 
78
    		$resultats_formates[$id_station]['nom_commune'] = $commune;
-
 
79
    		$resultats_formates[$id_station]['latitude'] = $stations_infos['os_latitude'];
-
 
80
    		$resultats_formates[$id_station]['longitude'] = $stations_infos['os_longitude'];
-
 
81
    		$resultats_formates[$id_station]['altitude'] = $stations_infos['os_altitude'];
-
 
82
    		$resultats_formates[$id_station]['type_participant'] = 'Particulier';
-
 
83
    		
-
 
84
    		if(isset($utilisateurs[$stations_infos['os_ce_participant']])) {
-
 
85
    			$participant = $utilisateurs[$stations_infos['os_ce_participant']];
-
 
86
    			$resultats_formates[$id_station]['participant']['id'] = $participant['uid'];
-
 
87
    			$resultats_formates[$id_station]['participant']['nom'] = $participant['name'];
-
 
88
    			$resultats_formates[$id_station]['type_participant'] = isset($participant['profile_type']) ? $participant['profile_type'] : 'Particulier';
-
 
89
    		} else {
-
 
90
    			$resultats_formates[$id_station]['participant']['id'] = null;
-
 
91
    			$resultats_formates[$id_station]['participant']['nom'] = 'Anonyme';
-
 
92
    			$resultats_formates[$id_station]['type_participant'] = 'Particulier';
-
 
93
    		}
-
 
94
    		if(isset($stats[$resultats_formates[$id_station]['type_participant']])) {
-
 
95
    			$stats[$resultats_formates[$id_station]['type_participant']]++;
-
 
96
    		} else {
-
 
97
    			$stats[$resultats_formates[$id_station]['type_participant']] = 1;
-
 
98
    		}
-
 
99
    	}
-
 
100
    	$resultat = array('stats' => $stats, 'stations' => $resultats_formates);
-
 
101
    	
36
	$this->envoyer($info,$this->type_mime);
102
    	return $resultat;
37
    }
103
    }
38
	
104
	
39
	public function getExportObservation($start = null,$limit = null, $order_by = 'oo_date') {
105
	public function getExportObservation($start = null,$limit = null, $order_by = 'oo_date') {
40
						
106
						
41
		$requete_selection_observations = 'SELECT * FROM ods_observations '.
107
		$requete_selection_observations = 'SELECT * FROM ods_observations '.
42
									' LEFT JOIN ods_individus '. 
108
									' LEFT JOIN ods_individus '. 
43
									' ON oi_id_individu = oo_ce_individu'.
109
									' ON oi_id_individu = oo_ce_individu'.
44
									' LEFT JOIN ods_stations '.
110
									' LEFT JOIN ods_stations '.
45
									' ON oi_ce_station = os_id_station '.
111
									' ON oi_ce_station = os_id_station '.
46
									' LEFT JOIN ods_communes '.
112
									' LEFT JOIN ods_communes '.
47
									'ON os_ce_commune = oc_code_insee ';
113
									'ON os_ce_commune = oc_code_insee ';
48
		
114
		
49
		$requete_selection_observations .= $this->construireConditionRequete();
115
		$requete_selection_observations .= $this->construireConditionRequete();
50
		$requete_selection_observations .= ' ORDER BY oo_date DESC';
116
		$requete_selection_observations .= ' ORDER BY oo_date DESC';
51
		
117
		
52
		$res_selection_observations = $this->executerRequete($requete_selection_observations);
118
		$res_selection_observations = $this->executerRequete($requete_selection_observations);
53
				
119
				
54
		return $res_selection_observations;
120
		return $res_selection_observations;
55
	}
121
	}
56
	
122
	
57
	private function creerFiltreIdZoneGeo($valeurMasque) {
123
	private function creerFiltreIdZoneGeo($valeurMasque) {
58
		$masque = '';
124
		$masque = '';
59
		$dept = $valeurMasque;
125
		$dept = $valeurMasque;
60
		$dept = sprintf('%02s', $dept);
126
		$dept = sprintf('%02s', $dept);
61
		$dept = sprintf("%-'_5s", $dept);
127
		$dept = sprintf("%-'_5s", $dept);
62
		$masque = " oc_code_insee LIKE ".$this->proteger($dept);
128
		$masque = " oc_code_insee LIKE ".$this->proteger($dept);
63
		return $masque;
129
		return $masque;
64
	}
130
	}
65
	
131
	
66
	public function construireConditionRequete() {
132
	public function construireConditionRequete() {
67
		
133
		
68
		$condition = ' WHERE oo_date != "0000-00-00" AND DAY(oo_date) != "00" AND ';
134
		$condition = ' WHERE oo_date != "0000-00-00" AND DAY(oo_date) != "00" AND ';
69
		
135
		
70
		foreach($_GET as $cle => $valeur) {
136
		foreach($_GET as $cle => $valeur) {
71
			
137
			
72
			switch($cle) {
138
			switch($cle) {
73
			
139
			
74
				case 'type_espece':
140
				case 'type_espece':
75
					$condition .= 'oi_ce_espece IN (SELECT oe_id_espece FROM ods_especes WHERE oe_ce_type = '.$this->proteger($valeur).')';
141
					$condition .= 'oi_ce_espece IN (SELECT oe_id_espece FROM ods_especes WHERE oe_ce_type = '.$this->proteger($valeur).')';
76
				break;
142
				break;
77
				
143
				
78
				case 'annee':
144
				case 'annee':
79
					if($this->anneesMultiplesDemandees($valeur)) {
145
					if($this->anneesMultiplesDemandees($valeur)) {
80
						$valeur = rtrim($valeur,',');
146
						$valeur = rtrim($valeur,',');
81
						$condition .= 'YEAR(oo_date) IN ('.$valeur.')';						
147
						$condition .= 'YEAR(oo_date) IN ('.$valeur.')';						
82
					} else {
148
					} else {
83
						$condition .= 'YEAR(oo_date) ';
149
						$condition .= 'YEAR(oo_date) ';
84
						$condition .= ' = '.$this->proteger($valeur);
150
						$condition .= ' = '.$this->proteger($valeur);
85
					}
151
					}
86
				break;
152
				break;
87
				
153
				
88
				case 'mois':
154
				case 'mois':
89
					$condition .= 'MONTH(oo_date) <= '.$this->proteger($valeur);
155
					$condition .= 'MONTH(oo_date) <= '.$this->proteger($valeur);
90
				break;
156
				break;
91
				
157
				
92
				case 'espece':
158
				case 'espece':
93
					$condition .= 'oi_ce_espece IN ('.$valeur.') ';
159
					$condition .= 'oi_ce_espece IN ('.$valeur.') ';
94
				break;
160
				break;
95
				
161
				
96
				case 'evenement':
162
				case 'evenement':
97
					$condition .= 'oo_ce_evenement = '.$this->proteger($valeur);
163
					$condition .= 'oo_ce_evenement = '.$this->proteger($valeur);
98
				break;
164
				break;
99
				
165
				
100
				case 'utilisateur':
166
				case 'utilisateur':
101
					$condition .= 'oo_ce_participant = '.$this->proteger($valeur);	
167
					$condition .= 'oo_ce_participant = '.$this->proteger($valeur);	
102
				break;
168
				break;
103
				
169
				
104
				case 'departement' :
170
				case 'departement' :
105
					$condition .= $this->creerFiltreIdZoneGeo($valeur);
171
					$condition .= $this->creerFiltreIdZoneGeo($valeur);
106
				break;
172
				break;
107
				
173
				
108
				case 'region' :
174
				case 'region' :
109
					$requete_association_region .= 'SELECT * FROM ods_triples WHERE ot_ce_parent = 36 AND ot_valeur = '.$valeur;
175
					$requete_association_region .= 'SELECT * FROM ods_triples WHERE ot_ce_parent = 36 AND ot_valeur = '.$valeur;
110
					$listeAssociationRegions = $this->executerRequete($requete_association_region);
176
					$listeAssociationRegions = $this->executerRequete($requete_association_region);
111
					$departements = array();
177
					$departements = array();
112
					foreach ($listeAssociationRegions as $associationRegion) {
178
					foreach ($listeAssociationRegions as $associationRegion) {
113
						$departements[] = $this->creerFiltreIdZoneGeo($associationRegion['ot_cle']);
179
						$departements[] = $this->creerFiltreIdZoneGeo($associationRegion['ot_cle']);
114
					}
180
					}
115
					$condition .= ' ('. implode(' OR ', $departements).')';
181
					$condition .= ' ('. implode(' OR ', $departements).')';
116
				break;
182
				break;
117
				default:
183
				default:
118
			}
184
			}
119
			
185
			
120
			$condition .= ' AND ';
186
			$condition .= ' AND ';
121
		}
187
		}
122
		
188
		
123
		$condition = rtrim($condition,'AND ');
189
		$condition = rtrim($condition,'AND ');
124
		
190
		
125
		$id_demo = $this->config['appli']['id_participant_demo'];
191
		$id_demo = $this->config['appli']['id_participant_demo'];
126
		$id_admin = $this->config['appli']['id_participant_admin'];
192
		$id_admin = $this->config['appli']['id_participant_admin'];
127
		
193
		
128
		$condition .= ' AND oo_ce_participant != '.$id_demo;
194
		$condition .= ' AND oo_ce_participant != '.$id_demo;
129
		$condition .= ' AND oo_ce_participant != '.$id_admin;
195
		$condition .= ' AND oo_ce_participant != '.$id_admin;
130
		
196
		
131
		return $condition;
197
		return $condition;
132
	}
198
	}
133
	
199
	
134
	private function anneesMultiplesDemandees($annee) {
200
	private function anneesMultiplesDemandees($annee) {
135
		// un ensemble d'identifiants est une suite d'identifiants séparés par des virgules
201
		// un ensemble d'identifiants est une suite d'identifiants séparés par des virgules
136
		// sans virgule terminale
202
		// sans virgule terminale
137
		$reg_exp = "/^(([0-9])+,)*([0-9])+$/";
203
		$reg_exp = "/^(([0-9])+,)*([0-9])+$/";
138
		return preg_match($reg_exp, $annee);
204
		return preg_match($reg_exp, $annee);
139
	}
205
	}
140
	
206
	
141
	public function getExportObservationPlat() {
207
	public function getExportObservationPlat() {
142
				
208
				
143
		$donnees = $this->getExportObservation();
209
		$donnees = $this->getExportObservation();
144
		$donnees_formatees = $this->formaterPourExportCSV($donnees);	
210
		$donnees_formatees = $this->formaterListeObservationPourExportCSV($donnees);	
145
			
211
			
146
		return $donnees_formatees ;
212
		return $donnees_formatees ;
147
	}
213
	}
148
	
214
	
149
	public function getExportObservationJson() {
215
	public function getExportObservationJson() {
150
		
216
		
151
		$donnees = $this->getExportObservation();
217
		$donnees = $this->getExportObservation();
152
		$donnees_formatees = $this->formaterPourExportJson($donnees);
218
		$donnees_formatees = $this->formaterListeObservationPourExportJson($donnees);
153
 
219
 
154
		$this->type_mime = 'application/json';
220
		$this->type_mime = 'application/json';
155
		
221
		
156
		return $donnees_formatees;
222
		return $donnees_formatees;
157
	}
223
	}
158
	
224
	
159
	public function formaterPourExportJson($tableau_observations_infos) {
225
	public function formaterListeObservationPourExportJson($tableau_observations_infos) {
160
		
226
		
161
		$gestionnaire_especes = new OdsEspece($this->config);
227
		$gestionnaire_especes = new OdsEspece($this->config);
162
		$gestionnaire_communes = new OdsCommune($this->config);
228
		$gestionnaire_communes = new OdsCommune($this->config);
163
				
229
				
164
		$especes = $gestionnaire_especes->getToutesEspeces();
230
		$especes = $gestionnaire_especes->getToutesEspeces();
165
		$evenements = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_EVENEMENTS);
231
		$evenements = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_EVENEMENTS);
166
		$milieux = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_MILIEUX);
232
		$milieux = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_MILIEUX);
167
		
233
		
168
		$resultats_formates = array();
234
		$resultats_formates = array();
169
		
235
		
170
		foreach($tableau_observations_infos as $observations_infos) {
236
		foreach($tableau_observations_infos as $observations_infos) {
171
		
237
		
172
			$id_espece = $observations_infos['oi_ce_espece'];
238
			$id_espece = $observations_infos['oi_ce_espece'];
173
			$nom_espece =  $especes[$id_espece]['nom_scientifique'];
239
			$nom_espece =  $especes[$id_espece]['nom_scientifique'];
174
				
240
				
175
			$id_evenement = $observations_infos['oo_ce_evenement'];
241
			$id_evenement = $observations_infos['oo_ce_evenement'];
176
			$chaine_evenement = $evenements[$id_evenement]['ot_cle'];
242
			$chaine_evenement = $evenements[$id_evenement]['ot_cle'];
177
				
243
				
178
			$infos_evenement = $this->renvoyerInformationStadeAPartirChaineTriple($chaine_evenement);
244
			$infos_evenement = $this->renvoyerInformationStadeAPartirChaineTriple($chaine_evenement);
179
				
245
				
180
			$date_observation_formatee = date($this->config['appli']['format_date'], strtotime($observations_infos['oo_date']));
246
			$date_observation_formatee = date($this->config['appli']['format_date'], strtotime($observations_infos['oo_date']));
181
			
247
			
182
			$id_observation = $observations_infos['oo_id_observation'];
248
			$id_observation = $observations_infos['oo_id_observation'];
183
			$infos_formatees = array(
249
			$infos_formatees = array(
184
				'date' => $date_observation_formatee,
250
				'date' => $date_observation_formatee,
185
				'evenenement' => $infos_evenement['nom'],
251
				'evenenement' => $infos_evenement['nom'],
186
				'code_bbch' => $infos_evenement['numero'],
252
				'code_bbch' => $infos_evenement['numero'],
187
				'nom_scientifique' => $nom_espece,
253
				'nom_scientifique' => $nom_espece,
188
				'id_espece' => $id_espece,
254
				'id_espece' => $id_espece,
189
				'participant' => $observations_infos['os_ce_participant']
255
				'participant' => $observations_infos['os_ce_participant']
190
			);
256
			);
191
			
257
			
192
			$id_station = $observations_infos['oi_ce_station'];
258
			$id_station = $observations_infos['oi_ce_station'];
193
			
259
			
194
			if(!isset($resultats_formates[$id_station])) {
260
			if(!isset($resultats_formates[$id_station])) {
195
				$resultats_formates[$id_station]['station'] = $observations_infos['os_nom'];
261
				$resultats_formates[$id_station]['station'] = $observations_infos['os_nom'];
196
				$resultats_formates[$id_station]['code_commune'] = $observations_infos['os_ce_commune'];
262
				$resultats_formates[$id_station]['code_commune'] = $observations_infos['os_ce_commune'];
197
				//$resultats_formates[$id_station]['nom_commune'] = $gestionnaire_communes->obtenirNomCommuneParCodeInsee($observations_infos['os_ce_commune']);
263
				//$resultats_formates[$id_station]['nom_commune'] = $gestionnaire_communes->obtenirNomCommuneParCodeInsee($observations_infos['os_ce_commune']);
198
				$resultats_formates[$id_station]['latitude'] = $observations_infos['os_latitude'];
264
				$resultats_formates[$id_station]['latitude'] = $observations_infos['os_latitude'];
199
				$resultats_formates[$id_station]['longitude'] = $observations_infos['os_longitude'];
265
				$resultats_formates[$id_station]['longitude'] = $observations_infos['os_longitude'];
200
				$resultats_formates[$id_station]['altitude'] = $observations_infos['os_altitude'];
266
				$resultats_formates[$id_station]['altitude'] = $observations_infos['os_altitude'];
201
				$resultats_formates[$id_station]['milieu'] = $milieux[$observations_infos['os_ce_environnement']]['ot_valeur'];
267
				$resultats_formates[$id_station]['milieu'] = $milieux[$observations_infos['os_ce_environnement']]['ot_valeur'];
202
				$resultats_formates[$id_station]['participant'] = $observations_infos['os_ce_participant'];
268
				$resultats_formates[$id_station]['participant'] = $observations_infos['os_ce_participant'];
203
			}
269
			}
204
			
270
			
205
			$resultats_formates[$id_station]['obs'][$id_observation] = $infos_formatees;
271
			$resultats_formates[$id_station]['obs'][$id_observation] = $infos_formatees;
206
		}
272
		}
207
		
273
		
208
		return $resultats_formates;
274
		return $resultats_formates;
209
	}
275
	}
210
	
276
	
211
	public function getFichierExportObservationCsv() {
277
	public function getFichierExportObservationCsv() {
212
				
278
				
213
		$donnees = $this->getExportObservation();
279
		$donnees = $this->getExportObservation();
214
		$donnees_formatees = $this->formaterPourExportCSV($donnees);		
280
		$donnees_formatees = $this->formaterListeObservationPourExportCSV($donnees);		
215
		$chaine_csv = $this->convertirTableauAssocVersCSV($donnees_formatees);
281
		$chaine_csv = $this->convertirTableauAssocVersCSV($donnees_formatees);
216
			
282
			
217
		$this->envoyerFichier($chaine_csv);
283
		$this->envoyerFichier($chaine_csv);
218
	}
284
	}
219
	
285
	
220
	public function formaterPourExportCSV($tableau_observations_infos) {
286
	public function formaterListeObservationPourExportCSV($tableau_observations_infos) {
221
		
287
		
222
		$gestionnaire_especes = new OdsEspece($this->config);
288
		$gestionnaire_especes = new OdsEspece($this->config);
223
		$gestionnaire_communes = new OdsCommune($this->config);
289
		$gestionnaire_communes = new OdsCommune($this->config);
224
		$gestionnaire_utilisateurs = new OdsUtilisateur($this->config);
290
		$gestionnaire_utilisateurs = new OdsUtilisateur($this->config);
225
				
291
				
226
		$especes = $gestionnaire_especes->getToutesEspeces();
292
		$especes = $gestionnaire_especes->getToutesEspeces();
227
		$evenements = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_EVENEMENTS);
293
		$evenements = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_EVENEMENTS);
228
		$milieux = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_MILIEUX);
294
		$milieux = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_MILIEUX);
229
		
295
		
230
		$codes_insee_communes = array();
296
		$codes_insee_communes = array();
231
		
297
		
232
		$resultats_formates = array();
298
		$resultats_formates = array();
233
		
299
		
234
		foreach($tableau_observations_infos as $observations_infos) {
300
		foreach($tableau_observations_infos as $observations_infos) {
235
		
301
		
236
			$id_espece = $observations_infos['oi_ce_espece'];
302
			$id_espece = $observations_infos['oi_ce_espece'];
237
			$nom_espece =  $especes[$id_espece]['nom_scientifique'];
303
			$nom_espece =  $especes[$id_espece]['nom_scientifique'];
238
				
304
				
239
			$id_evenement = $observations_infos['oo_ce_evenement'];
305
			$id_evenement = $observations_infos['oo_ce_evenement'];
240
			$chaine_evenement = $evenements[$id_evenement]['ot_cle'];
306
			$chaine_evenement = $evenements[$id_evenement]['ot_cle'];
241
				
307
				
242
			$infos_evenement = $this->renvoyerInformationStadeAPartirChaineTriple($chaine_evenement);
308
			$infos_evenement = $this->renvoyerInformationStadeAPartirChaineTriple($chaine_evenement);
243
				
309
				
244
			$date_observation_formatee = date($this->config['appli']['format_date'], strtotime($observations_infos['oo_date']));
310
			$date_observation_formatee = date($this->config['appli']['format_date'], strtotime($observations_infos['oo_date']));
245
			
311
			
246
			$id_observation = $observations_infos['oo_id_observation'];
312
			$id_observation = $observations_infos['oo_id_observation'];
247
			
313
			
248
			$infos_formatees = array(
314
			$infos_formatees = array(
249
				'id_observation' => $id_observation,
315
				'id_observation' => $id_observation,
250
				'date' => $date_observation_formatee,
316
				'date' => $date_observation_formatee,
251
				'evenenement' => $infos_evenement['nom'],
317
				'evenenement' => $infos_evenement['nom'],
252
				'code_bbch' => $infos_evenement['numero'],
318
				'code_bbch' => $infos_evenement['numero'],
253
				'nom_scientifique' => $nom_espece,
319
				'nom_scientifique' => $nom_espece,
254
				'station' => $observations_infos['os_nom'],
320
				'station' => $observations_infos['os_nom'],
255
				'code_commune' => $observations_infos['os_ce_commune'],
321
				'code_commune' => $observations_infos['os_ce_commune'],
256
				'nom_commune' => '',
322
				'nom_commune' => '',
257
				'latitude' => $observations_infos['os_latitude'],
323
				'latitude' => $observations_infos['os_latitude'],
258
				'longitude' => $observations_infos['os_longitude'],
324
				'longitude' => $observations_infos['os_longitude'],
259
				'altitude' => $observations_infos['os_altitude'],
325
				'altitude' => $observations_infos['os_altitude'],
260
				'milieu' => $milieux[$observations_infos['os_ce_environnement']]['ot_valeur'],
326
				'milieu' => $milieux[$observations_infos['os_ce_environnement']]['ot_valeur'],
261
				'id_participant' => $observations_infos['os_ce_participant'],
327
				'id_participant' => $observations_infos['os_ce_participant'],
262
				'pseudo_participant' => '',
328
				'pseudo_participant' => '',
263
				'mail_participant' => ''
329
				'mail_participant' => ''
264
			);
330
			);
265
			
331
			
266
			$resultats_formates[] = $infos_formatees;
332
			$resultats_formates[] = $infos_formatees;
267
			
333
			
268
			if(is_numeric($observations_infos['os_ce_commune'])) {
334
			if(is_numeric($observations_infos['os_ce_commune'])) {
269
				$codes_insee_communes[] = $observations_infos['os_ce_commune'];
335
				$codes_insee_communes[] = $observations_infos['os_ce_commune'];
270
			}
336
			}
271
		}
337
		}
272
		
338
		
273
		$correspondance_codes_insee_noms = $gestionnaire_communes->obtenirTableauNomsCommunesParTableauCodesInsee($codes_insee_communes);
339
		$correspondance_codes_insee_noms = $gestionnaire_communes->obtenirTableauNomsCommunesParTableauCodesInsee($codes_insee_communes);
274
		$correspondance_id_utilisateur = $gestionnaire_utilisateurs->getListeUtilisateurFormateeId();
340
		$correspondance_id_utilisateur = $gestionnaire_utilisateurs->getListeUtilisateurFormateeId();
275
		
341
		
276
		foreach($resultats_formates as &$resultat) {
342
		foreach($resultats_formates as &$resultat) {
277
			
343
			
278
			if(isset($correspondance_codes_insee_noms[$resultat['code_commune']]) && trim($correspondance_codes_insee_noms[$resultat['code_commune']]) != '') {								
344
			if(isset($correspondance_codes_insee_noms[$resultat['code_commune']]) && trim($correspondance_codes_insee_noms[$resultat['code_commune']]) != '') {								
279
				$resultat['nom_commune'] = $correspondance_codes_insee_noms[$resultat['code_commune']];
345
				$resultat['nom_commune'] = $correspondance_codes_insee_noms[$resultat['code_commune']];
280
			}
346
			}
281
			
347
			
282
			$resultat['pseudo_participant'] = $correspondance_id_utilisateur[$resultat['id_participant']]['name'];
348
			$resultat['pseudo_participant'] = $correspondance_id_utilisateur[$resultat['id_participant']]['name'];
283
			$resultat['mail_participant'] = $correspondance_id_utilisateur[$resultat['id_participant']]['mail'];
349
			$resultat['mail_participant'] = $correspondance_id_utilisateur[$resultat['id_participant']]['mail'];
284
		}
350
		}
285
		
351
		
286
		return $resultats_formates;
352
		return $resultats_formates;
287
	}
353
	}
288
	
354
	
289
	public function convertirTableauAssocVersCSV($tableau) {
355
	public function convertirTableauAssocVersCSV($tableau) {
290
		
356
		
291
		$csv = '';
357
		$csv = '';
292
		$colonnes = array_keys($tableau[0]);
358
		$colonnes = array_keys($tableau[0]);
293
		$csv .= implode(';',$colonnes).";\n";
359
		$csv .= implode(';',$colonnes).";\n";
294
		
360
		
295
		foreach($tableau as $elements) {
361
		foreach($tableau as $elements) {
296
			$csv .= implode(';',$elements).";\n";
362
			$csv .= implode(';',$elements).";\n";
297
		}
363
		}
298
		
364
		
299
		return $csv;
365
		return $csv;
300
	}
366
	}
301
	
367
	
302
	public function envoyerFichier($contenu) {
368
	public function envoyerFichier($contenu) {
303
		
369
		
304
		$nom_fichier = "observations_export.csv";
370
		$nom_fichier = "observations_export.csv";
305
		$chemin_fichier = $this->config['appli']['chemin_fichiers_temp'].'/'.$nom_fichier;
371
		$chemin_fichier = $this->config['appli']['chemin_fichiers_temp'].'/'.$nom_fichier;
306
		
372
		
307
		file_put_contents($chemin_fichier, $contenu);	
373
		file_put_contents($chemin_fichier, $contenu);	
308
			
374
			
309
		$contenu = file_get_contents($chemin_fichier);
375
		$contenu = file_get_contents($chemin_fichier);
310
		$taille_fichier = filesize($chemin_fichier);
376
		$taille_fichier = filesize($chemin_fichier);
311
		
377
		
312
		unlink($chemin_fichier);
378
		unlink($chemin_fichier);
313
		
379
		
314
		ini_set('zlib.output_compression','Off');
380
		ini_set('zlib.output_compression','Off');
315
		
381
		
316
		header('Pragma: public');
382
		header('Pragma: public');
317
		header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
383
		header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
318
		header('Cache-Control: must-revalidate, pre-check=0, post-check=0, max-age=0');
384
		header('Cache-Control: must-revalidate, pre-check=0, post-check=0, max-age=0');
319
		
385
		
320
		header('Content-Tranfer-Encoding: none');
386
		header('Content-Tranfer-Encoding: none');
321
		
387
		
322
		header('Content-Type: application/octetstream; name="'.$nom_fichier.'"');
388
		header('Content-Type: application/octetstream; name="'.$nom_fichier.'"');
323
		header('Content-Disposition: attachement; filename="'.$nom_fichier.'"');
389
		header('Content-Disposition: attachement; filename="'.$nom_fichier.'"');
324
		
390
		
325
		header('Content-Length: '.$taille_fichier);
391
		header('Content-Length: '.$taille_fichier);
326
		
392
		
327
		echo $contenu;
393
		echo $contenu;
328
		exit();
394
		exit();
329
	}
395
	}
330
	
396
	
331
	private function formaterInformationPourEnvoi($tableauinfos) {
397
	private function formaterInformationPourEnvoi($tableauinfos) {
332
 
398
 
333
	}
399
	}
334
}
400
}
335
?>
401
?>