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
|