Subversion Repositories eFlore/Projets.eflore-projets

Compare Revisions

Ignore whitespace Rev 276 → Rev 277

/trunk/services/modules/0.1/nvjfl/NomsVernaculaires.php
56,7 → 56,7
* - etendue : ajout automatique du signe % à la place des espaces et en fin de masque avec utilisation de LIKE.
* - floue : recherche tolérante vis-à-vis d'approximations ou d'erreurs (fautes d'orthographe par exemple) */
protected $recherche;
 
/** Permet de stocker le tableau de résultat (non encodé en json) */
protected $table_retour = array();
/** Stocke le nombre total de résultats de la requete principale. Est calculée lors de l'assemblage de la requete */
73,19 → 73,19
foreach ($this->parametres as $param => $valeur) {
switch ($param) {
case 'masque' :
$this->ajouterLeFiltreMasque('nom_vernaculaire', $valeur);
$this->ajouterFiltreMasque('nom_vernaculaire', $valeur);
break;
case 'masque.nt' :
$this->ajouterLeFiltreMasque('num_taxon', $valeur);
$this->ajouterFiltreMasque('num_taxon', $valeur);
break;
case 'masque.nv' :
$this->ajouterLeFiltreMasque('nom_vernaculaire', $valeur);
$this->ajouterFiltreMasque('nom_vernaculaire', $valeur);
break;
case 'masque.lg' :
$this->ajouterLeFiltreMasque('code_langue', $valeur);
$this->ajouterFiltreMasque('code_langue', $valeur);
break;
case 'masque.cce' :
$this->ajouterLeFiltreMasque('num_statut', $valeur);
$this->ajouterFiltreMasque('num_statut', $valeur);
break;
case 'retour.format' :
$this->retour_format = $valeur;
109,7 → 109,7
}
}
 
public function ajouterLeFiltreMasque($nom_champ, $valeur) {
public function ajouterFiltreMasque($nom_champ, $valeur) {
if ($nom_champ == 'num_taxon') { // si il s'agit d'un chiffre
$this->requete_condition[] = $nom_champ.' = '.$this->getBdd()->proteger($valeur);
} else {
186,6 → 186,7
' FROM '.$this->table
.$this->formerRequeteCondition()
.$this->formerRequeteLimite();
return $requete;
}
 
332,7 → 333,7
$table_retour_json['entete']['href.suivant'] = $url['suivant'];
}
 
foreach ($resultat as $tab) {
foreach ($resultat as $tab) {
$resultat_json[$tab['num_nom_vernaculaire']]['id'] = $tab['id'];
$resultat_json[$tab['num_nom_vernaculaire']]['nom_vernaculaire'] = $tab['nom_vernaculaire'];
$resultat_json[$tab['num_nom_vernaculaire']]['langue.code'] = $tab['code_langue'];
343,16 → 344,44
$this->taxons[] = $tab['num_taxon']; // utiliser pour chercher les noms latins
$resultat_json[$tab['num_nom_vernaculaire']]['href'] = $this->ajouterHref('noms-vernaculaires', $tab['id']);
}
if($this->retour_format == 'max') {
//TODO: la fonction afficherTaxonsAttributions itere sur tout le tableau de résultats alors qu'elle ne devrait
// traiter qu'une ligne à la fois (i.e.: la ligne en cours dans $tab), ce qui serait bien plus rapide
$resultat_json = $this->afficherTaxonsAttributions($resultat_json);
$resultat_json[$tab['num_nom_vernaculaire']] = $this->afficherChampsSupplementairesOntologie($tab);
}
}
if ($this->retour_format == 'max') {
$resultat_json = $this->afficherTaxonsAttributions($resultat_json);
}
$table_retour_json['resultat'] = $resultat_json;
return $table_retour_json;
}
public function afficherChampsSupplementairesOntologie($ligne_resultat) {
foreach($this->champ_infos as $cle => $champs_supplementaires) {
extract($champs_supplementaires);
$valeur_recherche = '';
switch($cle) {
case 'taxon':
$valeur_recherche = $ligne_resultat['num_taxon'];
break;
case 'genre':
$valeur_recherche = $ligne_resultat['num_genre'];
break;
case 'conseil_emploi':
$valeur_recherche = $ligne_resultat['num_statut'];
break;
}
$code_valeur = '';
if(trim($valeur_recherche) != '') {
$url = $this->ajouterHrefAutreProjet($service, $ressource, $valeur_recherche, $projet);
$code_valeur = $this->chercherSignificationCode($url, $nom);
}
$ligne_resultat[$cle] = $code_valeur;
}
return $ligne_resultat;
}
public function afficherTaxonsAttributions($resultat) {
$nom_sci = $this->recupererNomTaxons();
foreach ($resultat as $num=>$tab) {
540,7 → 569,7
list($table, $version) = explode('_v',$this->table);
$requete = "SELECT b.*, lb.notes FROM nvjfl_lien_biblio_v$version lb, nvjfl_biblio_v$version b ".
"WHERE b.num_ref = lb.num_ref AND lb.num_nom = '$num_nom' ;";
$resultat = $this->getBdd()->recupererTous($requete); //Debug::printr($resultat);
$resultat = $this->getBdd()->recupererTous($requete);
 
if ($resultat == '') { //cas ou la requete comporte des erreurs
$r = 'La requête SQL formée comporte une erreur !!';