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 !!';
|