Subversion Repositories Sites.obs-saisons.fr

Rev

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

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