Subversion Repositories eFlore/Projets.eflore-projets

Rev

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

Rev 180 Rev 277
Line 54... Line 54...
54
	/** Valeur du paramètre de requete recherche :
54
	/** Valeur du paramètre de requete recherche :
55
	 *  - stricte : le masque est passé tel quel à l'opérateur LIKE.
55
	 *  - stricte : le masque est passé tel quel à l'opérateur LIKE.
56
	 *  - etendue : ajout automatique du signe % à la place des espaces et en fin de masque avec utilisation de LIKE.
56
	 *  - etendue : ajout automatique du signe % à la place des espaces et en fin de masque avec utilisation de LIKE.
57
	 *  - floue : recherche tolérante vis-à-vis d'approximations ou d'erreurs (fautes d'orthographe par exemple) */
57
	 *  - floue : recherche tolérante vis-à-vis d'approximations ou d'erreurs (fautes d'orthographe par exemple) */
58
	protected $recherche;
58
	protected $recherche;
59
 
59
	
60
	/** Permet de stocker le tableau de résultat (non encodé en json) */
60
	/** Permet de stocker le tableau de résultat (non encodé en json) */
61
	protected $table_retour = array();
61
	protected $table_retour = array();
62
	/** Stocke le nombre total de résultats de la requete principale. Est calculée lors de l'assemblage de la requete */
62
	/** Stocke le nombre total de résultats de la requete principale. Est calculée lors de l'assemblage de la requete */
63
	protected $total_resultat;
63
	protected $total_resultat;
Line 71... Line 71...
71
				$this->recherche = $this->parametres['recherche'];
71
				$this->recherche = $this->parametres['recherche'];
72
			}
72
			}
73
			foreach ($this->parametres as $param => $valeur) {
73
			foreach ($this->parametres as $param => $valeur) {
74
				switch ($param) {
74
				switch ($param) {
75
					case 'masque' :
75
					case 'masque' :
76
						$this->ajouterLeFiltreMasque('nom_vernaculaire', $valeur);
76
						$this->ajouterFiltreMasque('nom_vernaculaire', $valeur);
77
						break;
77
						break;
78
					case 'masque.nt' :
78
					case 'masque.nt' :
79
						$this->ajouterLeFiltreMasque('num_taxon', $valeur);
79
						$this->ajouterFiltreMasque('num_taxon', $valeur);
80
						break;
80
						break;
81
					case 'masque.nv' :
81
					case 'masque.nv' :
82
						$this->ajouterLeFiltreMasque('nom_vernaculaire', $valeur);
82
						$this->ajouterFiltreMasque('nom_vernaculaire', $valeur);
83
						break;
83
						break;
84
					case 'masque.lg' :
84
					case 'masque.lg' :
85
						$this->ajouterLeFiltreMasque('code_langue', $valeur);
85
						$this->ajouterFiltreMasque('code_langue', $valeur);
86
						break;
86
						break;
87
					case 'masque.cce' :
87
					case 'masque.cce' :
88
						$this->ajouterLeFiltreMasque('num_statut', $valeur);
88
						$this->ajouterFiltreMasque('num_statut', $valeur);
89
						break;
89
						break;
90
					case 'retour.format' :
90
					case 'retour.format' :
91
						$this->retour_format = $valeur;
91
						$this->retour_format = $valeur;
92
						break;
92
						break;
93
					case 'navigation.depart' :
93
					case 'navigation.depart' :
Line 107... Line 107...
107
				}
107
				}
108
			}
108
			}
109
		}
109
		}
110
	}
110
	}
Line 111... Line 111...
111
 
111
 
112
	public function ajouterLeFiltreMasque($nom_champ, $valeur) {
112
	public function ajouterFiltreMasque($nom_champ, $valeur) {
113
		if ($nom_champ == 'num_taxon') { // si il s'agit d'un chiffre
113
		if ($nom_champ == 'num_taxon') { // si il s'agit d'un chiffre
114
			$this->requete_condition[] = $nom_champ.' = '.$this->getBdd()->proteger($valeur);
114
			$this->requete_condition[] = $nom_champ.' = '.$this->getBdd()->proteger($valeur);
115
		} else {
115
		} else {
116
			if ($this->recherche == 'floue') {
116
			if ($this->recherche == 'floue') {
Line 184... Line 184...
184
	public function assemblerLaRequete() {
184
	public function assemblerLaRequete() {
185
		$requete = ' SELECT '.$this->formerRequeteChamp().
185
		$requete = ' SELECT '.$this->formerRequeteChamp().
186
					' FROM '.$this->table
186
					' FROM '.$this->table
187
					.$this->formerRequeteCondition()
187
					.$this->formerRequeteCondition()
188
					.$this->formerRequeteLimite();
188
					.$this->formerRequeteLimite();
-
 
189
		
189
		return $requete;
190
		return $requete;
190
	}
191
	}
Line 191... Line 192...
191
 
192
 
192
	public  function formerRequeteChamp() {
193
	public  function formerRequeteChamp() {
Line 330... Line 331...
330
		}
331
		}
331
		if (isset($url['suivant']) && $url['suivant']   != '') {
332
		if (isset($url['suivant']) && $url['suivant']   != '') {
332
			$table_retour_json['entete']['href.suivant']   = $url['suivant'];
333
			$table_retour_json['entete']['href.suivant']   = $url['suivant'];
333
		}
334
		}
Line 334... Line 335...
334
 
335
 
335
		foreach ($resultat as $tab) {
336
		foreach ($resultat as $tab) {			
336
			$resultat_json[$tab['num_nom_vernaculaire']]['id'] = $tab['id'];
337
			$resultat_json[$tab['num_nom_vernaculaire']]['id'] = $tab['id'];
337
			$resultat_json[$tab['num_nom_vernaculaire']]['nom_vernaculaire'] = $tab['nom_vernaculaire'];
338
			$resultat_json[$tab['num_nom_vernaculaire']]['nom_vernaculaire'] = $tab['nom_vernaculaire'];
338
			$resultat_json[$tab['num_nom_vernaculaire']]['langue.code'] = $tab['code_langue'];
339
			$resultat_json[$tab['num_nom_vernaculaire']]['langue.code'] = $tab['code_langue'];
339
			$resultat_json[$tab['num_nom_vernaculaire']]['taxon.code'] = 'bdtfx.nt:'.$tab['num_taxon'];
340
			$resultat_json[$tab['num_nom_vernaculaire']]['taxon.code'] = 'bdtfx.nt:'.$tab['num_taxon'];
340
			if ($this->retour_format == 'max') {
341
			if ($this->retour_format == 'max') {
341
				$resultat_json[$tab['num_nom_vernaculaire']]['taxon'] = $tab['num_taxon'];
342
				$resultat_json[$tab['num_nom_vernaculaire']]['taxon'] = $tab['num_taxon'];
342
				$resultat_json[$tab['num_nom_vernaculaire']]['nom_retenu.code'] = $tab['num_taxon'];
343
				$resultat_json[$tab['num_nom_vernaculaire']]['nom_retenu.code'] = $tab['num_taxon'];
343
				$this->taxons[] = $tab['num_taxon']; // utiliser pour chercher les noms latins
344
				$this->taxons[] = $tab['num_taxon']; // utiliser pour chercher les noms latins
344
				$resultat_json[$tab['num_nom_vernaculaire']]['href'] = $this->ajouterHref('noms-vernaculaires', $tab['id']);
345
				$resultat_json[$tab['num_nom_vernaculaire']]['href'] = $this->ajouterHref('noms-vernaculaires', $tab['id']);
-
 
346
			}
-
 
347
			
-
 
348
			if($this->retour_format == 'max') {
-
 
349
				//TODO: la fonction afficherTaxonsAttributions itere sur tout le tableau de résultats alors qu'elle ne devrait
-
 
350
				// traiter qu'une ligne à la fois (i.e.: la ligne en cours dans $tab), ce qui serait bien plus rapide
-
 
351
				$resultat_json = $this->afficherTaxonsAttributions($resultat_json);
-
 
352
				$resultat_json[$tab['num_nom_vernaculaire']] = $this->afficherChampsSupplementairesOntologie($tab);
345
			}
353
			}
346
		}
354
		}
347
		
-
 
348
		if ($this->retour_format == 'max') {
-
 
349
			$resultat_json = $this->afficherTaxonsAttributions($resultat_json);
-
 
350
		}
-
 
351
		
355
				
352
		$table_retour_json['resultat'] = $resultat_json;
356
		$table_retour_json['resultat'] = $resultat_json;
353
		return $table_retour_json;
357
		return $table_retour_json;
Line -... Line 358...
-
 
358
	}
-
 
359
	
-
 
360
	public function afficherChampsSupplementairesOntologie($ligne_resultat) {
-
 
361
		foreach($this->champ_infos as $cle => $champs_supplementaires) {
-
 
362
			extract($champs_supplementaires);
-
 
363
			$valeur_recherche = '';
-
 
364
			switch($cle) {
-
 
365
				case 'taxon':
-
 
366
					$valeur_recherche = $ligne_resultat['num_taxon'];
-
 
367
					break;
-
 
368
				case 'genre':
-
 
369
					$valeur_recherche = $ligne_resultat['num_genre'];
-
 
370
					break;
-
 
371
				case 'conseil_emploi':
-
 
372
					$valeur_recherche = $ligne_resultat['num_statut'];
-
 
373
					break;
-
 
374
			}
-
 
375
			$code_valeur = '';
-
 
376
			if(trim($valeur_recherche) != '') {
-
 
377
				$url = $this->ajouterHrefAutreProjet($service, $ressource, $valeur_recherche, $projet);
-
 
378
				$code_valeur = $this->chercherSignificationCode($url, $nom);
-
 
379
			}
-
 
380
			$ligne_resultat[$cle] = $code_valeur;
-
 
381
		}
-
 
382
		return $ligne_resultat;
354
	}
383
	}
355
	
384
	
356
	public function afficherTaxonsAttributions($resultat) {
385
	public function afficherTaxonsAttributions($resultat) {
357
		$nom_sci = $this->recupererNomTaxons();
386
		$nom_sci = $this->recupererNomTaxons();
358
		foreach ($resultat as $num=>$tab) {
387
		foreach ($resultat as $num=>$tab) {
Line 538... Line 567...
538
 
567
 
539
	public function chargerBiblio($num_nom, $langue) {
568
	public function chargerBiblio($num_nom, $langue) {
540
		list($table, $version) = explode('_v',$this->table);
569
		list($table, $version) = explode('_v',$this->table);
541
		$requete = "SELECT b.*, lb.notes FROM nvjfl_lien_biblio_v$version lb, nvjfl_biblio_v$version b ".
570
		$requete = "SELECT b.*, lb.notes FROM nvjfl_lien_biblio_v$version lb, nvjfl_biblio_v$version b ".
542
					"WHERE b.num_ref = lb.num_ref AND lb.num_nom = '$num_nom' ;";
571
					"WHERE b.num_ref = lb.num_ref AND lb.num_nom = '$num_nom' ;";
Line 543... Line 572...
543
		$resultat = $this->getBdd()->recupererTous($requete); //Debug::printr($resultat);
572
		$resultat = $this->getBdd()->recupererTous($requete);
544
 
573
 
545
		 if ($resultat == '') { //cas ou la requete comporte des erreurs
574
		 if ($resultat == '') { //cas ou la requete comporte des erreurs
546
		 	$r = 'La requête SQL formée comporte une erreur !!';
575
		 	$r = 'La requête SQL formée comporte une erreur !!';