Subversion Repositories eFlore/Applications.coel

Rev

Rev 1531 | Rev 1540 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1531 Rev 1537
Line 12... Line 12...
12
 * @copyright 2010
12
 * @copyright 2010
13
 */
13
 */
14
class CoelExport extends Coel {
14
class CoelExport extends Coel {
Line 15... Line 15...
15
	
15
	
16
	const META_LISTE_STOCK_PARAMS = 1020;// Liste des paramètres de contrôle environnemental d'un local
16
	const META_LISTE_STOCK_PARAMS = 1020;// Liste des paramètres de contrôle environnemental d'un local
-
 
17
	const META_LISTES_EXPERTISE_COLLECTION = '1040,1041,1043,1045,1046,1049,1050,1053,1057,1081';// Liste des métadonnées pour les informations des des collections
17
	const META_LISTES_EXPERTISE_COLLECTION = '';// Liste des métadonnées pour les informations des des collections 
18
	
18
	private $format = null;
19
	private $format = null;
19
	private $service = null;
20
	private $service = null;
20
	private $squelette = null;
21
	private $squelette = null;
Line 117... Line 118...
117
	private function getServiceStructureExpertise() {
118
	private function getServiceStructureExpertise() {
118
		$donnees = array();
119
		$donnees = array();
119
		$projet_id = $this->parametres['projet'];
120
		$projet_id = $this->parametres['projet'];
Line 120... Line 121...
120
		
121
		
121
		// Construction de la requête
122
		// Construction de la requête
122
		$requete = 'SELECT '.(($this->distinct) ? 'SELECT DISTINCT' : '').' '.
123
		$requete = 'SELECT '.(($this->distinct) ? 'DISTINCT' : '').' '.
123
					'	cs_id_structure, '.
124
					'	cs_id_structure, '.
124
					'	SUM(csap_bota_travail_hebdo_tps) AS personnel_heure_nbre, '.
125
					'	SUM(csap_bota_travail_hebdo_tps) AS personnel_heure_nbre, '.
125
					'	cs_nom, csc_truk_stockage_parametre '.
126
					'	cs_nom, csc_truk_stockage_parametre '.
126
					'FROM coel_structure '. 
127
					'FROM coel_structure '. 
Line 132... Line 133...
132
					((!is_null($this->start) && !is_null($this->limit)) ? "LIMIT $this->start,$this->limit " : '');
133
					((!is_null($this->start) && !is_null($this->limit)) ? "LIMIT $this->start,$this->limit " : '');
133
		$message_echec = "La requête a retourné aucun résultat.";
134
		$message_echec = "La requête a retourné aucun résultat.";
134
		$structures = $this->executerRequete($requete, $message_echec);
135
		$structures = $this->executerRequete($requete, $message_echec);
Line 135... Line 136...
135
		
136
		
136
		// Construction de la requête
137
		// Construction de la requête
137
		$requete = 'SELECT '.(($this->distinct) ? 'SELECT DISTINCT' : '').' '.
138
		$requete = 'SELECT '.(($this->distinct) ? 'DISTINCT' : '').' '.
138
					'	cs_id_structure, '.
139
					'	cs_id_structure, '.
139
					'	COUNT(cc_id_collection) AS collection_nbre '.
140
					'	COUNT(cc_id_collection) AS collection_nbre '.
140
					'FROM coel_structure '.
141
					'FROM coel_structure '.
141
					'	LEFT JOIN coel_collection ON (cs_id_structure = cc_ce_structure) '.
142
					'	LEFT JOIN coel_collection ON (cs_id_structure = cc_ce_structure) '.
Line 166... Line 167...
166
				$collections_par_structure[$collection['cs_id_structure']] = $nbre;
167
				$collections_par_structure[$collection['cs_id_structure']] = $nbre;
167
			}
168
			}
Line 168... Line 169...
168
			
169
			
169
			// Traitement final des données concernant les structures 
170
			// Traitement final des données concernant les structures 
170
			foreach ($structures as $structure) {
-
 
171
				// Traitement des paramêtres de stockage
-
 
172
				$truk_stockage_parametres = explode(';;', trim($structure['csc_truk_stockage_parametre'], ' ;'));
-
 
173
				$export_stockage_parametres = array();
-
 
174
				foreach ($truk_stockage_parametres as $param_code) {
-
 
175
					$param_code = preg_replace('/^AUTRE##/', '', trim($param_code));
-
 
176
					$param_txt = preg_match('/^[0-9]+$/', $param_code) ? $parametres[$param_code]['nom'] : $param_code;
-
 
177
					$export_stockage_parametres[] = addcslashes($param_txt, '"');
-
 
178
				}
-
 
179
				
171
			foreach ($structures as $structure) {
180
				$id_structure = $structure['cs_id_structure'];
172
				$id_structure = $structure['cs_id_structure'];
181
				$nom = addcslashes($structure['cs_nom'], '"');
173
				$nom = addcslashes($structure['cs_nom'], '"');
182
				$stockage_params = implode(' ; ', $export_stockage_parametres);
174
				$stockage_params = implode(' ; ', $export_stockage_parametres);
183
				$stockage_params_nbre = count($export_stockage_parametres);
175
				$stockage_params_nbre = count($export_stockage_parametres);
Line 198... Line 190...
198
		$contenu = $this->executerService($donnees);
190
		$contenu = $this->executerService($donnees);
199
		return $contenu;
191
		return $contenu;
200
	}
192
	}
Line 201... Line 193...
201
	
193
	
202
	private function getServiceCollectionExpertise() {
-
 
203
		$donnees = array();
194
	private function getServiceCollectionExpertise() {
204
		$projet_id = $this->parametres['projet'];
195
		$projet_id = $this->parametres['projet'];
205
		
196
 
206
		// Construction de la requête
197
		// Construction de la requête
207
		$requete = 'SELECT '.(($this->distinct) ? 'SELECT DISTINCT' : '').' '.
198
		$requete = 'SELECT '.(($this->distinct) ? 'DISTINCT' : '').' '.
208
					'	cc_id_collection, '.
199
					'	cc_id_collection, '.
209
					'	cc_nom, cs_nom, cc_ce_specimen_type, cc_description, cc_truk_periode_constitution, '.
200
					'	cc_nom, cs_nom, cc_ce_specimen_type, cc_description, cc_truk_periode_constitution, '.
210
					'	cc_truk_couverture_lieu, ccb_truk_etiquette_renseignement, ccb_truk_nature, '.
201
					'	cc_truk_couverture_lieu, ccb_truk_etiquette_renseignement, ccb_truk_nature, '.
211
					'	ccb_truk_unite_base, ccb_ce_etat_general, ccb_truk_etiquette_fixation_support, '.
202
					'	ccb_truk_unite_base, ccb_ce_etat_general, ccb_truk_etiquette_fixation_support, '.
Line 216... Line 207...
216
					'	LEFT JOIN coel_structure ON (cs_id_structure = cc_ce_structure) '.
207
					'	LEFT JOIN coel_structure ON (cs_id_structure = cc_ce_structure) '.
217
					( is_null($projet_id) ? '' : "WHERE cc_ce_projet = $projet_id ").			
208
					( is_null($projet_id) ? '' : "WHERE cc_ce_projet = $projet_id ").			
218
					'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'cc_nom ASC').' '.
209
					'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'cc_nom ASC').' '.
219
					((!is_null($this->start) && !is_null($this->limit)) ? "LIMIT $this->start,$this->limit " : '');
210
					((!is_null($this->start) && !is_null($this->limit)) ? "LIMIT $this->start,$this->limit " : '');
220
		$message_echec = "La requête a retourné aucun résultat.";
211
		$message_echec = "La requête a retourné aucun résultat.";
221
		$structures = $this->executerRequete($requete, $message_echec);
212
		$collections = $this->executerRequete($requete, $message_echec);
Line 222... Line 213...
222
		
213
		
223
		// Récupération des métadonnées nécessaires
214
		// Récupération des métadonnées nécessaires
224
		$requete = 	'SELECT cmlv_id_valeur, cmlv_ce_parent, cmlv_nom, cmlv_abreviation '.
215
		$requete = 	'SELECT cmlv_id_valeur, cmlv_ce_parent, cmlv_nom, cmlv_abreviation '.
225
					'FROM coel_meta_liste_valeur '.
216
					'FROM coel_meta_liste_valeur '.
226
					'WHERE cmlv_ce_parent IN ('.self::META_LISTES_EXPERTISE_COLLECTION.') ';
217
					'WHERE cmlv_ce_parent IN ('.self::META_LISTES_EXPERTISE_COLLECTION.') ';
227
		$message_echec = "La requête de recherche des métadonnées a retourné aucun résultat.";
218
		$message_echec = "La requête de recherche des métadonnées a retourné aucun résultat.";
Line 228... Line 219...
228
		$metadonnees = $this->executerRequete($requete, $message_echec);
219
		$metadonnees = $this->executerRequete($requete, $message_echec);
229
		
220
		
230
		// Traitement des données
-
 
231
		if ($structures !== false) {
-
 
232
			// Traitement des métadonnées
221
		// Traitement des données
233
			$parametres = array(0 => array('nom' => 'Non renseigné', 'abr' => 'NR'));
-
 
234
			foreach ($metadonnees as $meta) {
-
 
235
				$parametres[$meta['cmlv_id_valeur']] = array('nom' => $meta['cmlv_nom'], 'abr' => $meta['cmlv_abreviation']);
-
 
236
			}
222
		$donnees = array();
237
			
223
		if ($collections !== false) {
238
			// Traitement du nombre de collection par structure
224
			// Instanciation des objets nécessaires aux traitements
239
			$collections_par_structure = array();
-
 
240
			foreach ($collections_nbre as $collection) {
-
 
241
				$nbre = (empty($collection['collection_nbre'])) ? 0 : $collection['collection_nbre'];
-
 
Line 242... Line 225...
242
				$collections_par_structure[$collection['cs_id_structure']] = $nbre;
225
			$ontologie = new Ontologie($metadonnees);
243
			}
226
			$utilTruck = new UtilTruck($ontologie);
244
			
-
 
245
			// Traitement final des données concernant les structures 
227
			
246
			foreach ($structures as $structure) {
228
			// Traitement final des données concernant les structures 
247
				$truk_stockage_parametres = explode(';;', trim($structure['csc_truk_stockage_parametre'], ' ;'));
229
			foreach ($collections as $collection) {
248
				$export_stockage_parametres = array();
230
				$id_collection = $collection['cc_id_collection'];
249
				foreach ($truk_stockage_parametres as $param_code) {
231
				$nom = self::nettoyerGuillemets($collection['cc_nom']);
250
					$param_code = preg_replace('/^AUTRE##/', '', trim($param_code));
-
 
251
					$param_txt = preg_match('/^[0-9]+$/', $param_code) ? $parametres[$param_code]['nom'] : $param_code;
-
 
252
					$export_stockage_parametres[] = addcslashes($param_txt, '"');
232
				$nom_structure = self::nettoyerGuillemets($collection['cs_nom']);
253
				}
233
				$specimen_type = $utilTruck->construireTxtListeOntologie($collection['cc_ce_specimen_type']);
254
				
234
				$description = self::nettoyerGuillemets($collection['cc_description']);
255
				$id_structure = $structure['cs_id_structure'];
235
				$periode_constitution = $utilTruck->construireTxtListeOntologie($collection['cc_truk_periode_constitution']);
256
				$nom = addcslashes($structure['cs_nom'], '"');
236
				$couverture_lieu = $utilTruck->construireTxtListeOntologie($collection['cc_truk_couverture_lieu']);
257
				$stockage_params = implode(' ; ', $export_stockage_parametres);
-
 
Line 258... Line 237...
258
				$collection_nbre = $collections_par_structure[$structure['cs_id_structure']];
237
				$etiquette_renseignement = $utilTruck->construireTxtListeOntologie($collection['ccb_truk_etiquette_renseignement']);
259
				$collection_nbre = empty($collection_nbre) ? 0 : $collection_nbre;
238
				$nature = $utilTruck->construireTxtListeOntologie($collection['ccb_truk_nature']);
-
 
239
				$parts_total = $collection['ccb_truk_unite_base'];
260
				$personnel_heure_nbre = empty($structure['personnel_heure_nbre']) ? 0 : $structure['personnel_heure_nbre'];
240
				
-
 
241
				$donnees['collections'][$id_collection] = array(
-
 
242
					'nom' => $nom,
261
				
243
					'nom_structure' => $nom_structure, 
262
				$donnees['structures'][$id_structure] = array(
244
					'specimen_type' => $specimen_type,
-
 
245
					'description' => $description,
-
 
246
					'periode_constitution' => $periode_constitution,
-
 
247
					'couverture_lieu' => $couverture_lieu,
263
					'nom' => $nom, 
248
					'etiquette_renseignement' => $etiquette_renseignement,
264
					'stockage_params' => $stockage_params,
249
					'nature' => $nature,
Line 265... Line 250...
265
					'collection_nbre' => $collection_nbre,
250
					'parts_total' => $parts_total
266
					'personnel_heure_nbre' => $personnel_heure_nbre);
251
					);
Line 277... Line 262...
277
			$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
262
			$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
278
			if ($infos === false) {
263
			if ($infos === false) {
279
				$this->messages[] = $message_echec;
264
				$this->messages[] = $message_echec;
280
			}
265
			}
281
		} catch (PDOException $e) {
266
		} catch (PDOException $e) {
282
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
267
			$this->messages[] = sprintf($this->getTxt('sql_erreur_requete'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
283
		}
268
		}
284
		return $infos;
269
		return $infos;
285
	}
270
	}
Line 286... Line 271...
286
	
271
	
287
	private function executerService($donnees) {
272
	private function executerService($donnees) {
288
		// Création du contenu à partir d'un template PHP
273
		// Création du contenu à partir d'un template PHP
289
		$contenu = Coel::traiterSquelettePhp($this->squelette, $donnees);
274
		$contenu = Coel::traiterSquelettePhp($this->squelette, $donnees);
290
		return $contenu;
275
		return $contenu;
-
 
276
	}
-
 
277
	
-
 
278
	private static function nettoyerGuillemets($txt) {
-
 
279
		$txt = preg_replace('/"/', '""', $txt);
-
 
280
		return $txt;
291
	}
281
	}
292
}	
282
}