88,7 → 88,9 |
if(empty($liste_genre_espece)) { |
// Essai de recherche stricte en tentant de supprimer le nom d'auteur |
$nom_saisi_sans_auteur = $this->supprimerAuteur($nom_saisi); |
if($nom_saisi_sans_auteur) { // ne pas faire la requête sur un mot vide |
$liste_genre_espece = $this->effectuerRequeteUrlRecherche($nom_saisi_sans_auteur, true); |
} |
if(empty($liste_genre_espece)) { |
// Dernière tentative : essai de recherche étendue |
$liste_genre_espece = $this->effectuerRequeteUrlRecherche($nom_saisi, false); |
98,18 → 100,16 |
} |
|
private function effectuerRequeteUrlRecherche($nom_saisi, $stricte = true) { |
$url_recherche = $this->getUrlRechercheInfosComplementaires($nom_saisi, $stricte); |
$res = @json_decode(file_get_contents($url_recherche)); |
$res = @json_decode(file_get_contents(sprintf('%1$s?masque=%2$s&recherche=%3$s&ns.format=txt&retour.champs=%4$s&navigation.limite=1', |
$this->url_service_nom, |
urlencode($nom_saisi), |
($stricte ? 'stricte' : 'etendue'), |
implode(',', array("id","nom_sci","auteur","nom_retenu.id","famille","num_taxonomique","nom_retenu_complet"))))); |
if(!$res) return NULL; |
$resultat = (array)$res->resultat; |
return array_pop($resultat); |
} |
|
private function getUrlRechercheInfosComplementaires($nom_saisi, $stricte = true) { |
$type_recherche = $stricte ? 'stricte' : 'etendue'; |
return $url_recherche_etendue = $this->url_service_nom.'?masque='.urlencode($nom_saisi).'&recherche='.$type_recherche.'&ns.format=txt&retour.champs=nom_sci,auteur,nom_retenu.id&navigation.limite=1'; |
} |
|
private function supprimerAuteur($nom_saisi) { |
// Attention le parseur de nom n'est pas fiable à 100% |
// mais ça marche dans la plupart des cas |