Subversion Repositories eFlore/Applications.cel

Rev

Rev 1486 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1486 Rev 1487
Line 21... Line 21...
21
	
21
	
22
	private $url_service_nom = null;
22
	private $url_service_nom = null;
23
	private $url_service_taxon = null;
23
	private $url_service_taxon = null;
Line -... Line 24...
-
 
24
	private $url_service_chorologie = null;
-
 
25
	
24
	private $url_service_chorologie = null;
26
	private $masque_recherche = null;
25
	
27
	
26
	public function RechercheInfosTaxonBeta($config) {		
28
	public function RechercheInfosTaxonBeta($config) {		
27
		parent::__construct($config);
29
		parent::__construct($config);
28
		$this->url_service_nom = $config['eflore']['url_service_nom'];
30
		$this->url_service_nom = $config['eflore']['url_service_nom'];
29
		$this->url_service_taxon = $config['eflore']['url_service_taxon'];
31
		$this->url_service_taxon = $config['eflore']['url_service_taxon'];
Line 30... Line 32...
30
		$this->url_service_chorologie_obs = $config['eflore']['url_service_chorologie_obs'];
32
		$this->url_service_chorologie_obs = $config['eflore']['url_service_chorologie_obs'];
Line 31... Line 33...
31
	}
33
	}
32
	
34
	
-
 
35
	public function rechercherGenreEspeceSurPrefixe($genre = null, $espece = null) {
33
	public function rechercherGenreEspeceSurPrefixe($genre = null, $espece = null) {
36
		
34
		
-
 
35
		$liste_genre_espece = array();	
37
		$liste_genre_espece = array();	
36
		$masque = urlencode(trim(trim($genre).' '.trim($espece,' *')));
38
		$this->masque_recherche = trim(trim($genre).' '.trim($espece,' *'));
37
		$requete = @file_get_contents($this->url_service_nom.'?masque='.$masque.'&recherche=etendue&retour.format=min&navigation.limite=50&ns.structure=au');
39
		$masque = urlencode($this->masque_recherche);
38
		
40
		$requete = @file_get_contents($this->url_service_nom.'?masque='.$masque.'&recherche=etendue&retour.format=min&navigation.limite=50&ns.structure=au');
39
		if($requete != '') {
41
		if($requete != '') {
Line 53... Line 55...
53
		if($a[2] == 3 && $b[2] != 3) {
55
		if($a[2] == 3 && $b[2] != 3) {
54
			return -1;
56
			return -1;
55
		} elseif($a[2] != 3 && $b[2] == 3) {
57
		} elseif($a[2] != 3 && $b[2] == 3) {
56
			return 1;
58
			return 1;
57
		} else {
59
		} else {
58
			return strnatcmp($a[0], $b[0]);
60
			return levenshtein($this->masque_recherche, $a[0]) >= levenshtein($this->masque_recherche, $b[0]);
59
		}
61
		}
60
	}
62
	}
Line 61... Line 63...
61
	
63
	
Line 69... Line 71...
69
		
71
		
70
		return $retour_infos_complementaires;
72
		return $retour_infos_complementaires;
Line 71... Line 73...
71
	}
73
	}
72
	
74
	
73
	public function rechercherInformationsComplementairesSurNom($nom_saisi) {
75
	public function rechercherInformationsComplementairesSurNom($nom_saisi) {
74
		$nom_saisi = trim($this->supprimerAccents($nom_saisi));
76
		$nom_saisi = trim($nom_saisi);
75
		// Essai de recherche sur le nom saisi tel quel
77
		// Essai de recherche sur le nom saisi tel quel
76
		$liste_genre_espece = $this->effectuerRequeteUrlRecherche($nom_saisi, true);
78
		$liste_genre_espece = $this->effectuerRequeteUrlRecherche($nom_saisi, true);
77
		if(empty($liste_genre_espece)) {
79
		if(empty($liste_genre_espece)) {
Line 99... Line 101...
99
	private function getUrlRechercheInfosComplementaires($nom_saisi, $stricte = true) {
101
	private function getUrlRechercheInfosComplementaires($nom_saisi, $stricte = true) {
100
		$type_recherche = $stricte ? 'stricte' : 'etendue';
102
		$type_recherche = $stricte ? 'stricte' : 'etendue';
101
		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';
103
		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';
102
	}
104
	}
Line 103... Line -...
103
	
-
 
104
	//TODO: déplacer les fonctions ci dessus et dessous dans une classe
-
 
105
	// utilitaire
-
 
106
	private function supprimerAccents($str, $charset = 'UTF-8')
-
 
107
	{
-
 
108
		$str = htmlentities($str, ENT_NOQUOTES, $charset);
-
 
109
		$str = preg_replace('#&([A-za-z])(?:acute|cedil|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $str);
-
 
110
		$str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str); // pour les ligatures e.g. 'œ'
-
 
111
		$str = preg_replace('#&[^;]+;#', '', $str); // supprime les autres caractères
-
 
112
 
-
 
113
		return $str;
-
 
114
	}
-
 
115
	
105
	
116
	private function supprimerAuteur($nom_saisi) {
106
	private function supprimerAuteur($nom_saisi) {
117
		// Attention le parseur de nom n'est pas fiable à 100%
107
		// Attention le parseur de nom n'est pas fiable à 100%
118
		// mais ça marche dans la plupart des cas	
108
		// mais ça marche dans la plupart des cas	
119
		// à part les formules d'hybridité saisies avec un auteur
109
		// à part les formules d'hybridité saisies avec un auteur