Line 86... |
Line 86... |
86 |
// Essai de recherche sur le nom saisi tel quel
|
86 |
// Essai de recherche sur le nom saisi tel quel
|
87 |
$liste_genre_espece = $this->effectuerRequeteUrlRecherche($nom_saisi, true);
|
87 |
$liste_genre_espece = $this->effectuerRequeteUrlRecherche($nom_saisi, true);
|
88 |
if(empty($liste_genre_espece)) {
|
88 |
if(empty($liste_genre_espece)) {
|
89 |
// Essai de recherche stricte en tentant de supprimer le nom d'auteur
|
89 |
// Essai de recherche stricte en tentant de supprimer le nom d'auteur
|
90 |
$nom_saisi_sans_auteur = $this->supprimerAuteur($nom_saisi);
|
90 |
$nom_saisi_sans_auteur = $this->supprimerAuteur($nom_saisi);
|
- |
|
91 |
if($nom_saisi_sans_auteur) { // ne pas faire la requête sur un mot vide
|
91 |
$liste_genre_espece = $this->effectuerRequeteUrlRecherche($nom_saisi_sans_auteur, true);
|
92 |
$liste_genre_espece = $this->effectuerRequeteUrlRecherche($nom_saisi_sans_auteur, true);
|
- |
|
93 |
}
|
92 |
if(empty($liste_genre_espece)) {
|
94 |
if(empty($liste_genre_espece)) {
|
93 |
// Dernière tentative : essai de recherche étendue
|
95 |
// Dernière tentative : essai de recherche étendue
|
94 |
$liste_genre_espece = $this->effectuerRequeteUrlRecherche($nom_saisi, false);
|
96 |
$liste_genre_espece = $this->effectuerRequeteUrlRecherche($nom_saisi, false);
|
95 |
}
|
97 |
}
|
96 |
}
|
98 |
}
|
97 |
return $liste_genre_espece;
|
99 |
return $liste_genre_espece;
|
98 |
}
|
100 |
}
|
Line 99... |
Line 101... |
99 |
|
101 |
|
100 |
private function effectuerRequeteUrlRecherche($nom_saisi, $stricte = true) {
|
102 |
private function effectuerRequeteUrlRecherche($nom_saisi, $stricte = true) {
|
- |
|
103 |
$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',
|
- |
|
104 |
$this->url_service_nom,
|
101 |
$url_recherche = $this->getUrlRechercheInfosComplementaires($nom_saisi, $stricte);
|
105 |
urlencode($nom_saisi),
|
- |
|
106 |
($stricte ? 'stricte' : 'etendue'),
|
102 |
$res = @json_decode(file_get_contents($url_recherche));
|
107 |
implode(',', array("id","nom_sci","auteur","nom_retenu.id","famille","num_taxonomique","nom_retenu_complet")))));
|
103 |
if(!$res) return NULL;
|
108 |
if(!$res) return NULL;
|
104 |
$resultat = (array)$res->resultat;
|
109 |
$resultat = (array)$res->resultat;
|
105 |
return array_pop($resultat);
|
110 |
return array_pop($resultat);
|
Line 106... |
Line -... |
106 |
}
|
- |
|
107 |
|
- |
|
108 |
private function getUrlRechercheInfosComplementaires($nom_saisi, $stricte = true) {
|
- |
|
109 |
$type_recherche = $stricte ? 'stricte' : 'etendue';
|
- |
|
110 |
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';
|
- |
|
111 |
}
|
111 |
}
|
112 |
|
112 |
|
113 |
private function supprimerAuteur($nom_saisi) {
|
113 |
private function supprimerAuteur($nom_saisi) {
|
114 |
// Attention le parseur de nom n'est pas fiable à 100%
|
114 |
// Attention le parseur de nom n'est pas fiable à 100%
|
115 |
// mais ça marche dans la plupart des cas
|
115 |
// mais ça marche dans la plupart des cas
|