Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 1784 Rev 1787
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