Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 1654 Rev 1659
1
<?php
1
<?php
2
/**
2
/**
3
* Service fournissant des informations concernant le CEL au format RSS1, RSS2 ou ATOM.
3
* Service fournissant des informations concernant le CEL au format RSS1, RSS2 ou ATOM.
4
* Encodage en entrée : utf8
4
* Encodage en entrée : utf8
5
* Encodage en sortie : utf8
5
* Encodage en sortie : utf8
6
* Format du service :
6
* Format du service :
7
* /CelWidgetExport/format
7
* /CelWidgetExport/format
8
* /CelWidgetExport/csv
8
* /CelWidgetExport/csv
9
*
9
*
10
* Les paramêtres :
10
* Les paramêtres :
11
*  - "start" indique le numéro du premier item à afficher
11
*  - "start" indique le numéro du premier item à afficher
12
*  - "limit" nombre d'items à afficher
12
*  - "limit" nombre d'items à afficher
13
*
13
*
14
* @author Aurélien Peronnet <aurelien@tela-botanica.org>
14
* @author Aurélien Peronnet <aurelien@tela-botanica.org>
15
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
15
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
16
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
16
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
17
* @version $Id$
17
* @version $Id$
18
* @copyright 2012
18
* @copyright 2012
19
*/
19
*/
20
 
20
 
21
set_include_path(get_include_path() . PATH_SEPARATOR . dirname(dirname(realpath(__FILE__))) . '/lib');
21
set_include_path(get_include_path() . PATH_SEPARATOR . dirname(dirname(realpath(__FILE__))) . '/lib');
22
// la sortie est binaire (xls), mais OLE n'est pas compatible E_ALL en PHP-5.4
22
// la sortie est binaire (xls), mais OLE n'est pas compatible E_ALL en PHP-5.4
23
//error_reporting(error_reporting() ^ E_STRICT);
23
//error_reporting(error_reporting() ^ E_STRICT);
24
require_once("lib/OLE.php");
24
require_once("lib/OLE.php");
25
require_once("lib/Spreadsheet/Excel/Writer.php");
25
require_once("lib/Spreadsheet/Excel/Writer.php");
26
 
26
 
27
class CelWidgetExport extends Cel {
27
class CelWidgetExport extends Cel {
28
	
28
	
29
	private $nom_fichier_export = 'cel_export';
29
	private $nom_fichier_export = 'cel_export';
30
	private $parametres_autorises = array(
30
	private $parametres_autorises = array(
31
		'id_utilisateur' => 'ce_utilisateur',
31
		'id_utilisateur' => 'ce_utilisateur',
32
		'utilisateur' => 'courriel_utilisateur',
32
		'utilisateur' => 'courriel_utilisateur',
33
		'commune' => 'zone_geo',
33
		'commune' => 'zone_geo',
34
		'dept' => 'departement',
34
		'dept' => 'departement',
35
		'departement' => 'departement',
35
		'departement' => 'departement',
36
		'lieudit' => 'lieudit',
36
		'lieudit' => 'lieudit',
37
		'station' => 'station',
37
		'station' => 'station',
38
		'projet' => 'mots_cles',
38
		'projet' => 'mots_cles',
39
		'num_taxon' => 'nt',
39
		'num_taxon' => 'nt',
40
		'date_debut' => 'date_debut',
40
		'date_debut' => 'date_debut',
41
		'date_fin' => 'date_fin',
41
		'date_fin' => 'date_fin',
42
		'taxon' => 'taxon',
42
		'taxon' => 'taxon',
43
		'annee' => 'annee',
43
		'annee' => 'annee',
44
		'mois' => 'mois',
44
		'mois' => 'mois',
45
		'jour' => 'jour',
45
		'jour' => 'jour',
46
		'recherche' => 'recherche',
46
		'recherche' => 'recherche',
47
		'id_mots_cles' => 'id_mots_cles',
47
		'id_mots_cles' => 'id_mots_cles',
48
		'debut' => 'debut',
48
		'debut' => 'debut',
49
		'limite' => 'limite',
49
		'limite' => 'limite',
50
		'format' => 'format',
50
		'format' => 'format',
51
		'colonnes' => 'colonnes',
51
		'colonnes' => 'colonnes',
52
		'transmission' => 'transmission'
52
		'transmission' => 'transmission'
53
	);
53
	);
54
	
54
	
55
	private $limite_decoupage_defaut = 9000; 
55
	private $limite_decoupage_defaut = 9000; 
56
	
56
	
57
	private $format = 'csv';
57
	private $format = 'csv';
-
 
58
	
-
 
59
	public $id_utilisateur = null;
58
	
60
	
59
	public function getRessource() {
61
	public function getRessource() {
60
		return $this->getElement(array());
62
		return $this->getElement(array());
61
	}
63
	}
62
		
64
		
63
	/**
65
	/**
64
	 * Méthode appelée avec une requête de type GET.
66
	 * Méthode appelée avec une requête de type GET.
65
	 */
67
	 */
66
	public function getElement($params = array()) {		
68
	public function getElement($params = array()) {		
67
		if(count($params) > 0) {
69
		if(count($params) > 0) {
68
			switch(strtolower($params[0])) {
70
			switch(strtolower($params[0])) {
69
				case 'calcul':
71
				case 'calcul':
70
					$this->getCalcul();
72
					$this->getCalcul();
71
				break;
73
				break;
72
				
74
				
73
				case 'export':
75
				case 'export':
74
					$this->getExport();
76
					$this->getExport();
75
				break;
77
				break;
76
				
78
				
77
				default:
79
				default:
78
					$this->getExport();
80
					$this->getExport();
79
			}
81
			}
80
		} else {
82
		} else {
81
			$this->getExport();
83
			$this->getExport();
82
		}
84
		}
83
	}
85
	}
84
	
86
	
85
	private function getCalcul() {
87
	private function getCalcul() {
86
		$criteres = $this->traiterParametresAutorises($_GET);
88
		$criteres = $this->traiterParametresAutorises($_GET);
87
 
89
 
88
		$criteres['transmission'] = 1;
90
		$criteres['transmission'] = 1;
89
		if($this->doitEtPeutExporterObsPrivees($criteres)) {
91
		if($this->doitEtPeutExporterObsPrivees($criteres)) {
90
			unset($criteres['transmission']);
92
			unset($criteres['transmission']);
-
 
93
			$this->id_utilisateur = $criteres['id_utilisateur'];
91
		}
94
		}
92
		$chercheur_observations = new RechercheObservation($this->config);
95
		$chercheur_observations = new RechercheObservation($this->config);
93
		
96
		
94
		$numero_page = isset($criteres['debut']) ? $criteres['debut'] : 0;
97
		$numero_page = isset($criteres['debut']) ? $criteres['debut'] : 0;
95
		$limite = isset($criteres['limite']) ? $criteres['limite'] : 0;
98
		$limite = isset($criteres['limite']) ? $criteres['limite'] : 0;
96
		$colonnes = isset($criteres['colonnes']) ? $criteres['colonnes'] : 'standard,avance';
99
		$colonnes = isset($criteres['colonnes']) ? $criteres['colonnes'] : 'standard,avance';
97
		
100
		
98
		unset($criteres['limite']);
101
		unset($criteres['limite']);
99
		unset($criteres['debut']);
102
		unset($criteres['debut']);
100
		unset($criteres['format']);
103
		unset($criteres['format']);
101
		unset($criteres['colonnes']);
104
		unset($criteres['colonnes']);
102
		
105
		
103
		$nb_observations = $chercheur_observations->compterObservations(null, $criteres);
106
		$nb_observations = $chercheur_observations->compterObservations(null, $criteres);
104
		$limite_decoupage = $this->calculerNbLignesMaxParFichier();
107
		$limite_decoupage = $this->calculerNbLignesMaxParFichier();
105
		
108
		
106
		$url_telechargements = array();
109
		$url_telechargements = array();
107
		$intervalle = 0;
110
		$intervalle = 0;
108
		
111
		
109
		$params_url = $criteres;
112
		$params_url = $criteres;
110
		unset($params_url['transmission']);
113
		unset($params_url['transmission']);
111
		do {
114
		do {
112
			$base_url = $this->config['settings']['baseURLAbsolu'].'CelWidgetExport/export';
115
			$base_url = $this->config['settings']['baseURLAbsolu'].'CelWidgetExport/export';
113
			$params_url['debut'] = $intervalle;
116
			$params_url['debut'] = $intervalle;
114
			$params_url['limite'] = $limite_decoupage;
117
			$params_url['limite'] = $limite_decoupage;
115
			$url_telechargement_fichier = $base_url;
118
			$url_telechargement_fichier = $base_url;
116
			$url_telechargements[] = $base_url.'?'.http_build_query($params_url).'&format='.$this->format.'&colonnes='.$colonnes;
119
			$url_telechargements[] = $base_url.'?'.http_build_query($params_url).'&format='.$this->format.'&colonnes='.$colonnes;
117
			$intervalle += $limite_decoupage;
120
			$intervalle += $limite_decoupage;
118
			$nb_observations -= $limite_decoupage;
121
			$nb_observations -= $limite_decoupage;
119
		} while($nb_observations >= $limite_decoupage);
122
		} while($nb_observations >= $limite_decoupage);
120
		
123
		
121
		$this->envoyerJson($url_telechargements);
124
		$this->envoyerJson($url_telechargements);
122
	}
125
	}
123
	
126
	
124
	private function calculerNbLignesMaxParFichier() {
127
	private function calculerNbLignesMaxParFichier() {
125
		$limite = $this->limite_decoupage_defaut;
128
		$limite = $this->limite_decoupage_defaut;
126
		switch($this->format) {
129
		switch($this->format) {
127
			case 'csv':
130
			case 'csv':
128
				$limite = 20000;
131
				$limite = 20000;
129
				break;
132
				break;
130
			case 'xls':
133
			case 'xls':
131
				$limite = 8000;
134
				$limite = 8000;
132
				break;
135
				break;
133
		}
136
		}
134
		return $limite;
137
		return $limite;
135
	}
138
	}
136
	
139
	
137
	private function getExport() {
140
	private function getExport() {
138
		$criteres = $this->traiterParametresAutorises($_GET);
141
		$criteres = $this->traiterParametresAutorises($_GET);
139
		$criteres['transmission'] = 1;
142
		$criteres['transmission'] = 1;
140
		if($this->doitEtPeutExporterObsPrivees($criteres)) {
143
		if($this->doitEtPeutExporterObsPrivees($criteres)) {
141
			unset($criteres['transmission']);
144
			unset($criteres['transmission']);
142
		}
145
		}
143
		$chercheur_observations = new RechercheObservation($this->config);
146
		$chercheur_observations = new RechercheObservation($this->config);
144
		
147
		
145
		$debut = isset($criteres['debut']) ? $criteres['debut'] : 0;
148
		$debut = isset($criteres['debut']) ? $criteres['debut'] : 0;
146
		$limite = isset($criteres['limite']) ? $criteres['limite'] : 0;
149
		$limite = isset($criteres['limite']) ? $criteres['limite'] : 0;
147
		$colonnes = isset($criteres['colonnes']) ? $criteres['colonnes'] : 'standard,avance';
150
		$colonnes = isset($criteres['colonnes']) ? $criteres['colonnes'] : 'standard,avance';
148
		
151
		
149
		unset($criteres['limite']);
152
		unset($criteres['limite']);
150
		unset($criteres['debut']);
153
		unset($criteres['debut']);
151
		unset($criteres['format']);
154
		unset($criteres['format']);
152
		unset($criteres['colonnes']);
155
		unset($criteres['colonnes']);
153
		
156
		
154
		$observations = $chercheur_observations->rechercherObservations(null, $criteres, $debut, $limite)->get();
157
		$observations = $chercheur_observations->rechercherObservations(null, $criteres, $debut, $limite)->get();
-
 
158
		$ids = array();
-
 
159
		foreach($observations as &$obs) {
-
 
160
			$ids[] = $obs['id_observation'];
-
 
161
		}
-
 
162
		$gestion_champs_etendus = new GestionChampsEtendus($this->config, 'obs');
-
 
163
    	$champs_supp_par_obs = $gestion_champs_etendus->consulterParLots($ids);
-
 
164
    	$colonnes_champs_supp_par_obs = $gestion_champs_etendus->consulterClesParLots($ids);
-
 
165
 
-
 
166
    	// TODO: tous les champs étendus et les paramètres supplémentaires devraient être passés en un seul
-
 
167
    	// tableau (et chaque formateur csv, xls etc... pourrait également être dans une classe à part)
155
		switch($this->format) {
168
		switch($this->format) {
156
			case 'csv':
169
			case 'csv':
157
				$csv = $this->convertirEnCsv($observations, $colonnes);
170
				$csv = $this->convertirEnCsv($observations, $colonnes, $colonnes_champs_supp_par_obs, $champs_supp_par_obs);
158
				$this->envoyerCsv($csv);
171
				$this->envoyerCsv($csv);
159
				break;
172
				break;
160
			case 'xls':
173
			case 'xls':
161
				$xls = $this->convertirEnXls($observations, $colonnes);
174
				$xls = $this->convertirEnXls($observations, $colonnes, $colonnes_champs_supp_par_obs, $champs_supp_par_obs);
162
				$this->envoyerXls($xls);
175
				$this->envoyerXls($xls);
163
				break;
176
				break;
164
			default:
177
			default:
165
		}
178
		}
166
	}
179
	}
167
	
180
	
168
	protected function traiterParametresAutorises(Array $parametres) {
181
	protected function traiterParametresAutorises(Array $parametres) {
169
		$parametres_traites = array();
182
		$parametres_traites = array();
170
		$this->format = (isset($parametres['format']) && $parametres['format'] != '') ? $parametres['format'] : $this->format;
183
		$this->format = (isset($parametres['format']) && $parametres['format'] != '') ? $parametres['format'] : $this->format;
171
		foreach($parametres as $cle => $valeur) {
184
		foreach($parametres as $cle => $valeur) {
172
			if(trim($valeur) != '' && isset($this->parametres_autorises[$cle])) {
185
			if(trim($valeur) != '' && isset($this->parametres_autorises[$cle])) {
173
				$parametres_traites[$this->parametres_autorises[$cle]] = $valeur;
186
				$parametres_traites[$this->parametres_autorises[$cle]] = $valeur;
174
			}
187
			}
175
		}
188
		}
176
		return $parametres_traites;
189
		return $parametres_traites;
177
	}
190
	}
178
	
191
	
179
	private function envoyerCsv($csv) {
192
	private function envoyerCsv($csv) {
180
		header('Content-Type: text/csv; charset=UTF-8');
193
		header('Content-Type: text/csv; charset=UTF-8');
181
		header('Content-Disposition: attachment;filename='.$this->nom_fichier_export.'.csv');
194
		header('Content-Disposition: attachment;filename='.$this->nom_fichier_export.'.csv');
182
		echo $csv;
195
		echo $csv;
183
		exit;
196
		exit;
184
	}
197
	}
185
	
198
	
186
	private function envoyerXls($workbook) {
199
	private function envoyerXls($workbook) {
187
		$workbook->close();
200
		$workbook->close();
188
		exit;
201
		exit;
189
	}
202
	}
190
	
203
	
191
	private function convertirEnCsv($data, $colonnes)
204
	private function convertirEnCsv($data, $colonnes, $colonnes_supplementaires, $champs_supplementaires = array())
192
	{
205
	{
193
		$chemin_temp = "php://temp";
206
		$chemin_temp = "php://temp";
194
		$outstream = fopen($chemin_temp, 'r+');
207
		$outstream = fopen($chemin_temp, 'r+');
195
		$intitule_champs = array();
208
		$intitule_champs = array();
-
 
209
		$nb_colonnes_supp = count($colonnes_supplementaires);
196
		$groupe_colonnes = FormateurGroupeColonne::nomEnsembleVersListeColonnes($colonnes);
210
		$groupe_colonnes = FormateurGroupeColonne::nomEnsembleVersListeColonnes($colonnes);
197
		foreach($data as &$ligne) {
211
		foreach($data as &$ligne) {
-
 
212
			$id_obs = $ligne['id_observation'];
198
			$ligne = $this->filtrerDonneesSensibles($ligne);
213
			$ligne = $this->filtrerDonneesSensibles($ligne);
199
			$ligne = FormateurGroupeColonne::getLigneObservation($ligne, $groupe_colonnes);
214
			$ligne = FormateurGroupeColonne::getLigneObservation($ligne, $groupe_colonnes, $this);
-
 
215
			$ligne_supp = $nb_colonnes_supp > 0 ? array_fill(0, $nb_colonnes_supp, '') : array();
-
 
216
			if(isset($champs_supplementaires[$id_obs])) {
-
 
217
				$ligne_supp = $this->traiterLigneEtendue($colonnes_supplementaires, $champs_supplementaires[$id_obs]);
-
 
218
			}
-
 
219
			$ligne += $ligne_supp;
200
			if(empty($intitule_champs)) {
220
			if(empty($intitule_champs)) {
201
				$intitule_champs = FormateurGroupeColonne::getIntitulesColonnes($groupe_colonnes);
221
				$intitule_champs = FormateurGroupeColonne::getIntitulesColonnes($groupe_colonnes);
-
 
222
				foreach($colonnes_supplementaires as $colonne_sup) {
-
 
223
					$intitule_champs[] = $colonne_sup;
-
 
224
				}
202
				fputcsv($outstream, $intitule_champs, ',', '"');			
225
				fputcsv($outstream, $intitule_champs, ',', '"');			
203
			}
226
			}
204
			fputcsv($outstream, $ligne, ',', '"');
227
			fputcsv($outstream, $ligne, ',', '"');
205
		}
228
		}
206
		rewind($outstream);
229
		rewind($outstream);
207
		$csv = stream_get_contents($outstream);
230
		$csv = stream_get_contents($outstream);
208
		fclose($outstream);
231
		fclose($outstream);
209
		return $csv;
232
		return $csv;
210
	}
233
	}
211
	
234
	
212
	private function convertirEnXls($data, $colonnes) {		
235
	private function convertirEnXls($data, $colonnes,  $colonnes_supplementaires, $champs_supplementaires = array()) {		
213
		$this->extendSpreadsheetProductor = new SpreadsheetProductor();
236
		$this->extendSpreadsheetProductor = new SpreadsheetProductor();
214
		$this->extendSpreadsheetProductor->initSpreadsheet();
237
		$this->extendSpreadsheetProductor->initSpreadsheet();
-
 
238
		
-
 
239
		$nb_colonnes_supp = count($colonnes_supplementaires);
215
		
240
		
216
		$workbook = new Spreadsheet_Excel_Writer();
241
		$workbook = new Spreadsheet_Excel_Writer();
217
		$worksheet = $workbook->addWorksheet('Liste');
242
		$worksheet = $workbook->addWorksheet('Liste');
218
		$workbook->setTempDir($this->config['cel']['chemin_stockage_temp']);
243
		$workbook->setTempDir($this->config['cel']['chemin_stockage_temp']);
219
		$workbook->setVersion(8);
244
		$workbook->setVersion(8);
220
 
245
 
221
		$worksheet->setInputEncoding('utf-8');
246
		$worksheet->setInputEncoding('utf-8');
222
		$workbook->send($this->nom_fichier_export.'.xls');
247
		$workbook->send($this->nom_fichier_export.'.xls');
223
		
248
		
224
		$nb_lignes = 1;
249
		$nb_lignes = 1;
225
		$groupe_colonnes = FormateurGroupeColonne::nomEnsembleVersListeColonnes($colonnes);
250
		$groupe_colonnes = FormateurGroupeColonne::nomEnsembleVersListeColonnes($colonnes);
226
		foreach($data as &$ligne) {
251
		foreach($data as &$ligne) {
-
 
252
			$id_obs = $ligne['id_observation'];
227
			$ligne = $this->filtrerDonneesSensibles($ligne);
253
			$ligne = $this->filtrerDonneesSensibles($ligne);
228
			$ligne = FormateurGroupeColonne::getLigneObservation($ligne, $groupe_colonnes);
254
			$ligne = FormateurGroupeColonne::getLigneObservation($ligne, $groupe_colonnes, $this);
229
			if(empty($intitule_champs)) {
255
			if(empty($intitule_champs)) {
230
				$indice = 0;
256
				$indice = 0;
231
				$intitule_champs = FormateurGroupeColonne::getIntitulesColonnes($groupe_colonnes);
257
				$intitule_champs = FormateurGroupeColonne::getIntitulesColonnes($groupe_colonnes);
-
 
258
				foreach($colonnes_supplementaires as $colonne_sup) {
-
 
259
					$intitule_champs[] = $colonne_sup;
-
 
260
				}
232
				foreach ($intitule_champs as &$intitule) {	
261
				foreach ($intitule_champs as &$intitule) {	
233
					$colonne = $intitule_champs[$indice];
262
					$colonne = $intitule_champs[$indice];
234
					$worksheet->write(0,$indice,$colonne);
263
					$worksheet->write(0,$indice,$colonne);
235
					$indice++;
264
					$indice++;
236
				}
265
				}
237
			}
266
			}
-
 
267
			$ligne_supp = $nb_colonnes_supp > 0 ? array_fill(0, $nb_colonnes_supp, '') : array();
-
 
268
			if(isset($champs_supplementaires[$id_obs])) {
-
 
269
				$ligne_supp = $this->traiterLigneEtendue($colonnes_supplementaires, $champs_supplementaires[$id_obs]);
-
 
270
			}
-
 
271
			$ligne += $ligne_supp;
238
			$indice = 0;
272
			$indice = 0;
239
			foreach($ligne as &$champ) {
273
			foreach($ligne as &$champ) {
240
				$worksheet->write($nb_lignes,$indice,$champ);
274
				$worksheet->write($nb_lignes,$indice,$champ);
241
				$indice++;
275
				$indice++;
242
			}
276
			}
243
			$nb_lignes++;
277
			$nb_lignes++;
244
		}
278
		}
245
		return $workbook;
279
		return $workbook;
246
	}
280
	}
-
 
281
	
-
 
282
	private function traiterLigneEtendue(&$colonnes_etendues, &$ligne_champs_etendus) {
-
 
283
		$ligne_etendue_aplatie = $this->aplatirChampsEtendus($ligne_champs_etendus);
-
 
284
		$ligne_etendue_fmt = array();
-
 
285
		foreach($colonnes_etendues as $colonne) {
-
 
286
			if(!isset($ligne_etendue_aplatie[$colonne])) {
-
 
287
				$ligne_etendue_fmt[$colonne] = ''; 
-
 
288
			} else {
-
 
289
				$ligne_etendue_fmt[$colonne] = $ligne_etendue_aplatie[$colonne];
-
 
290
			}
-
 
291
		}
-
 
292
		return $ligne_etendue_fmt;
-
 
293
	}
-
 
294
	
-
 
295
	private function aplatirChampsEtendus(&$ligne_champs_etendus) {
-
 
296
		$champs_etendus_fmt = array();
-
 
297
		foreach($ligne_champs_etendus as $champ) {
-
 
298
			$champs_etendus_fmt[$champ->cle] = $champ->valeur;
-
 
299
		}
-
 
300
		return $champs_etendus_fmt;
-
 
301
	}
247
	
302
	
248
	private function filtrerDonneesSensibles($ligne) {
303
	private function filtrerDonneesSensibles($ligne) {
249
		if(stripos($ligne['mots_cles_texte'], 'sensible') !== false) {
304
		if(stripos($ligne['mots_cles_texte'], 'sensible') !== false) {
250
			$ligne['latitude'] = '';
305
			$ligne['latitude'] = '';
251
			$ligne['longitude'] = '';
306
			$ligne['longitude'] = '';
252
		}
307
		}
253
		return $ligne;
308
		return $ligne;
254
	}
309
	}
255
	
310
	
256
	private function nettoyerChaine($chaine) {
311
	private function nettoyerChaine($chaine) {
257
		$chaine = str_replace("\n",' ',$chaine);
312
		$chaine = str_replace("\n",' ',$chaine);
258
		$chaine = str_replace("\t",'',$chaine);
313
		$chaine = str_replace("\t",'',$chaine);
259
		return $chaine;
314
		return $chaine;
260
	}
315
	}
261
	
316
	
262
	private function doitEtPeutExporterObsPrivees($criteres) {
317
	private function doitEtPeutExporterObsPrivees($criteres) {
263
		return isset($criteres['ce_utilisateur']) && 
318
		return isset($criteres['ce_utilisateur']) && 
264
					$this->peutExporterObsPrivees($criteres['ce_utilisateur']);
319
					$this->peutExporterObsPrivees($criteres['ce_utilisateur']);
265
	}
320
	}
266
	
321
	
267
	private function peutExporterObsPrivees($id_utilisateur) {
322
	private function peutExporterObsPrivees($id_utilisateur) {
268
		$gestion_utilisateur = new User($this->config);
323
		$gestion_utilisateur = new User($this->config);
269
		$utilisateur = $gestion_utilisateur->obtenirIdentiteConnectee();
324
		$utilisateur = $gestion_utilisateur->obtenirIdentiteConnectee();
270
		return $utilisateur['connecte'] && 
325
		return $utilisateur['connecte'] && 
271
				$utilisateur['id_utilisateur'] != '' &&
326
				$utilisateur['id_utilisateur'] != '' &&
272
				$id_utilisateur == $utilisateur['id_utilisateur'];
327
				$id_utilisateur == $utilisateur['id_utilisateur'];
273
	}
328
	}
274
}
329
}
275
?>
330
?>