Subversion Repositories Applications.referentiel

Rev

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

Rev 348 Rev 356
Line 197... Line 197...
197
	* Si un des paramètres est absent, il prendre la valeur *
197
	* Si un des paramètres est absent, il prendre la valeur *
198
	*/
198
	*/
199
	public function getElementExport($param) {
199
	public function getElementExport($param) {
200
		// Initialisation des variables
200
		// Initialisation des variables
201
		$info = array();
201
		$info = array();
202
		$p = $this->traiterParametresUrl(array("ref","version","champs","filtre"), $param, false);
202
		$p = $this->traiterParametresUrl(array("ref","version","champs","filtre", "encodage"), $param, false);
203
		$ref = $p['ref'].'_v'.$p['version'];
203
		$ref = $p['ref'].'_v'.$p['version'];
204
		$racine_tmp = $this->config['chemins']['chemin_tmp'];
204
		$racine_tmp = $this->config['chemins']['chemin_tmp'];
205
		$dossier = $racine_tmp.date('Y_m_d').'/';
205
		$dossier = $racine_tmp.date('Y_m_d').'/';
206
		if(!is_dir($dossier)){
206
		if(!is_dir($dossier)){
207
			mkdir($dossier);
207
			mkdir($dossier);
Line 212... Line 212...
212
			$champs = $this->formaterColonnes($p['champs'], $ref);		
212
			$champs = $this->formaterColonnes($p['champs'], $ref);		
213
			$requete = 'SELECT "'.implode('","', $champs['titre']).'" UNION (SELECT '.implode(', ',$champs['select']).
213
			$requete = 'SELECT "'.implode('","', $champs['titre']).'" UNION (SELECT '.implode(', ',$champs['select']).
214
				" INTO OUTFILE '".$fichier."' CHARACTER SET utf8 FIELDS TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '' LINES TERMINATED BY '\n' ". 
214
				" INTO OUTFILE '".$fichier."' CHARACTER SET utf8 FIELDS TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '' LINES TERMINATED BY '\n' ". 
215
			" FROM $ref a left join $ref b on b.num_nom=a.num_nom_retenu";
215
			" FROM $ref a left join $ref b on b.num_nom=a.num_nom_retenu";
Line -... Line 216...
-
 
216
	
216
	
217
	
217
			if (isset($p['filtre']) && $p['filtre'] != "*") {
218
			if (isset($p['filtre']) && $p['filtre'] != "*") {
218
				$param_filtres = explode(",",$p["filtre"]);
219
				$param_filtres = explode(",",$p["filtre"]);
219
				$dernier_filtre = array_pop($param_filtres);
220
				$dernier_filtre = array_pop($param_filtres);
-
 
221
				$filtres = array("nnr"=>"a.num_nom = a.num_nom_retenu", "pre" => "a.presence = 'P'");
220
				$filtres = array("nnr"=>"a.num_nom = a.num_nom_retenu", "pre" => "a.presence = 'P'");
222
				if ($dernier_filtre != '' && $dernier_filtre != '*')  { 
221
				if (!isset($filtres[$dernier_filtre])) { // si il s'agit du filtre famille
223
					if (!isset($filtres[$dernier_filtre])) {// si il s'agit du filtre famille
222
					$filtres["fam"] = "a.famille = '".$dernier_filtre."'";
224
						$filtres["fam"] = "a.famille = '".$dernier_filtre."'";
-
 
225
						$dernier_filtre = "fam";
-
 
226
					}
223
					$dernier_filtre = "fam";
227
					array_push($param_filtres, $dernier_filtre);
224
				}
-
 
-
 
228
				}
225
				array_push($param_filtres, $dernier_filtre);
229
				
226
				$requete .= " WHERE ".implode(" AND ",array_intersect_key($filtres, array_flip($param_filtres)));
230
				$requete .= " WHERE ".implode(" AND ",array_intersect_key($filtres, array_flip($param_filtres)));
227
			}
231
			}
228
			$requete .= ")";
232
			$requete .= ")";
229
			// Récupération des résultats
233
			// Récupération des résultats
Line 236... Line 240...
236
				}
240
				}
237
			} catch (PDOException $e) {
241
			} catch (PDOException $e) {
238
				$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage()).$requete;
242
				$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage()).$requete;
239
			}
243
			}
240
		}
244
		}
-
 
245
		
Line 241... Line 246...
241
	
246
	
242
		return $fichier;
247
		return $fichier;
Line -... Line 248...
-
 
248
	}
243
	}
249
	
244
	
250
	
245
	private function formaterColonnes($colonnes, $ref) {
251
	private function formaterColonnes($colonnes, $ref) {
246
		$colonnesOrdonnees = array("nn" => array("a.num_nom", "num_nom", "Numéro nomenclatural"),
252
		$colonnesOrdonnees = array("nn" => array("a.num_nom", "num_nom", "Numéro nomenclatural"),
247
								"nr" => array("a.num_nom_retenu", "num_nom_retenu", "Numéro nomenclatural du nom retenu"),
253
								"nr" => array("a.num_nom_retenu", "num_nom_retenu", "Numéro nomenclatural du nom retenu"),
Line 276... Line 282...
276
								"stcult" => array("a.statut_culture", "statut_culture", "Statut de culture"),
282
								"stcult" => array("a.statut_culture", "statut_culture", "Statut de culture"),
277
								"notes" => array("a.notes", "notes", "Remarques"),
283
								"notes" => array("a.notes", "notes", "Remarques"),
278
								"nomadd" => array("a.nom_addendum", "nom_addendum", "Commentaires nomenclaturaux"),
284
								"nomadd" => array("a.nom_addendum", "nom_addendum", "Commentaires nomenclaturaux"),
279
								"nsr" => array("b.nom_sci as nom_sci_retenu", "nom_sci", "Nom retenu sans auteur"),
285
								"nsr" => array("b.nom_sci as nom_sci_retenu", "nom_sci", "Nom retenu sans auteur"),
280
								"hom" => array("a.homonyme", "homonyme", "Homonymie"),
286
								"hom" => array("a.homonyme", "homonyme", "Homonymie"),
-
 
287
								"syn" => array("CASE a.num_nom_retenu WHEN a.num_nom THEN 'retenu' 
-
 
288
																	WHEN '' THEN 'ambigu' 
-
 
289
																	ELSE 'synonyme' END AS synonymie", "num_nom_retenu", "Statut du nom" ),
281
								"synprop" => array("a.synonyme_proparte", "synonyme_proparte", "Synonyme proprate"),
290
								"synprop" => array("a.synonyme_proparte", "synonyme_proparte", "Synonyme proprate"),
282
								"syndout" => array("a.synonyme_douteux", "synonyme_douteux", "Synonyme douteux"),
291
								"syndout" => array("a.synonyme_douteux", "synonyme_douteux", "Synonyme douteux"),
283
								"synmapp" => array("a.synonyme_mal_applique", "synonyme_mal_applique", "Synonyme mal appliqué"),
292
								"synmapp" => array("a.synonyme_mal_applique", "synonyme_mal_applique", "Synonyme mal appliqué"),
284
								"synorth" => array("a.synonyme_orthographique", "synonyme_orthographique", "Synonyme orthographique"),
293
								"synorth" => array("a.synonyme_orthographique", "synonyme_orthographique", "Synonyme orthographique"),
285
								"orthori" => array("a.orthographe_originelle", "orthographe_originelle", "Orthographe originelle"),
294
								"orthori" => array("a.orthographe_originelle", "orthographe_originelle", "Orthographe originelle"),