19,8 → 19,15 |
*/ |
class RechercheInfosTaxonBeta extends Cel { |
|
private $url_service_nom = null; |
private $url_service_taxon = null; |
private $url_service_chorologie = null; |
|
public function RechercheInfosTaxonBeta($config) { |
parent::__construct($config); |
$this->url_service_nom = $config['eflore']['url_service_nom']; |
$this->url_service_taxon = $config['eflore']['url_service_taxon']; |
$this->url_service_chorologie_obs = $config['eflore']['url_service_chorologie_obs']; |
} |
|
public function rechercherGenreEspeceSurPrefixe($genre = null, $espece = null) { |
27,23 → 34,29 |
|
$liste_genre_espece = array(); |
$masque = urlencode(trim(trim($genre).' '.trim($espece,' *'))); |
$requete = @file_get_contents('http://localhost/service:eflore:0.1/bdtfx/noms?masque='.$masque.'&recherche=etendue&retour.format=min&navigation.limite=50&ns.structure=au'); |
$requete = @file_get_contents($this->url_service_nom.'?masque='.$masque.'&recherche=etendue&retour.format=min&navigation.limite=50&ns.structure=au'); |
|
if($requete != '') { |
$requete = json_decode($requete); |
if(is_object($requete) && isset($requete->resultat)) { |
foreach ($requete->resultat as $id => $res) { |
$retenu = $res->retenu == true ? '3' : ''; |
$retenu = ($res->retenu == "true") ? '3' : '4'; |
$liste_genre_espece[] = array($res->nom_sci_complet, $id, $retenu); |
} |
} |
usort($liste_genre_espece, array($this, 'comparerParNom')); |
usort($liste_genre_espece, array($this, 'comparerParRetenuPuisNom')); |
} |
return $liste_genre_espece; |
} |
|
function comparerParNom($a, $b) { |
return strnatcmp($a[0], $b[0]); |
function comparerParRetenuPuisNom($a, $b) { |
if($a[2] == 3 && $b[2] != 3) { |
return -1; |
} elseif($a[2] != 3 && $b[2] == 3) { |
return 1; |
} else { |
return strnatcmp($a[0], $b[0]); |
} |
} |
|
public function effectuerRequeteInfosComplementairesEtFormaterNom($numNom) { |
67,7 → 80,7 |
? $nom_decoupe['genus'].' '.$nom_decoupe['species'] : $nom_saisi; |
|
$liste_genre_espece = array(); |
$url = 'http://www.tela-botanica.org/service:eflore:0.1/bdtfx/noms?masque='.urlencode($nom_decoupe['genus'].' '.$nom_decoupe['species']).'&recherche=etendue&ns.format=txt&retour.champs=nom_retenu,nom_retenu.*,num_taxonomique,auteur&navigation.limite=1'; |
$url = $this->url_service_nom.'?masque='.urlencode($nom_decoupe['genus'].' '.$nom_decoupe['species']).'&recherche=etendue&ns.format=txt&retour.champs=nom_retenu,nom_retenu.*,num_taxonomique,auteur&navigation.limite=1'; |
|
$resultat = @file_get_contents($url); |
if($resultat != '') { |
94,7 → 107,7 |
public function effectuerRequeteInfosComplementairesSurNumNom($num_nom) { |
$infos = array(); |
//TODO: retourner moins de champs grâce au paramètre retour.champs |
$url = "http://www.tela-botanica.org/service:eflore:0.1/bdtfx/noms/".$num_nom; |
$url = $this->url_service_nom.'/'.$num_nom; |
$resultat = @file_get_contents($url); |
if($resultat != '') { |
$infos = json_decode($resultat); |
119,7 → 132,7 |
public function rechercherNumTaxSurNumNom($num_nom) { |
|
$nt = null; |
$url = "http://www.tela-botanica.org/service:eflore:0.1/bdtfx/noms/".$num_nom.'?retour.champs=num_taxonomique'; |
$url = $this->url_service_nom."/".$num_nom.'?retour.champs=num_taxonomique'; |
$resultat = @file_get_contents($url); |
if($resultat != '') { |
$infos = json_decode($resultat); |
131,7 → 144,7 |
|
public function taxonEstPresentDansDepartement($num_taxon,$code_departement) { |
$presence_taxon = false; |
$url = 'http://localhost/service:eflore:0.1/chorodep/observations/?masque.departement='.$code_departement.'&masque.determination.nt='.$num_taxon.'&navigation.limite=1'; |
$url = $this->url_service_chorologie_obs.'?masque.departement='.$code_departement.'&masque.determination.nt='.$num_taxon.'&navigation.limite=1'; |
$resultat = @file_get_contents($url); |
if($resultat != '') { |
$resultat = json_decode($resultat); |
146,7 → 159,7 |
|
$infos = array(); |
//TODO: retourner moins de champs grâce au paramètre retour.champs |
$url = "http://www.tela-botanica.org/service:eflore:0.1/bdtfx/taxons/nt:".$numTax; |
$url = $this->url_service_taxon."/nt:".$numTax; |
$resultat = @file_get_contents($url); |
if($resultat != '') { |
$infos = json_decode($resultat); |
155,45 → 168,6 |
return $infos; |
} |
|
private function decouperNomEtRechercheEspeceOuSousEspece($identifiant_espece) { |
$nameparser=new NameParser(); |
$nom_latin_decoupe=$nameparser->parse($identifiant_espece); |
// requete sous espece (on privilegie les noms retenu cf tri par esn_ce_statut) |
if (isset($nom_latin_decoupe['infra']) && $nom_latin_decoupe['infra']!="") { |
$requete="SELECT DISTINCT en_id_nom, esn_ce_statut" . |
" FROM eflore_nom, eflore_nom_rang, eflore_selection_nom " . |
" WHERE en_id_version_projet_nom = '25' AND en_nom_genre = ".$this->proteger($nom_latin_decoupe['genus'])." " . |
" AND enrg_abreviation_rang = ".$this->proteger($nom_latin_decoupe['infra_type'])." " . |
" AND en_epithete_infra_specifique = ".$this->proteger($nom_latin_decoupe['infra'])." " . |
" AND esn_id_nom= en_id_nom ". |
" AND esn_id_version_projet_taxon=en_id_version_projet_nom " . |
" AND en_epithete_espece = ".$this->proteger($nom_latin_decoupe['species'])." AND en_ce_rang = enrg_id_rang " . |
" ORDER BY esn_ce_statut ". |
" LIMIT 1"; |
} |
else { // espece (on privilegie les noms retenu cf tri par esn_ce_statut) |
$requete="SELECT DISTINCT en_id_nom, esn_ce_statut" . |
" FROM eflore_nom, eflore_nom_rang, eflore_selection_nom " . |
" WHERE en_id_version_projet_nom = '25' AND en_nom_genre = ".$this->proteger($nom_latin_decoupe['genus'])." " . |
" AND enrg_abreviation_rang = 'sp.' " . |
" AND esn_id_nom= en_id_nom ". |
" AND esn_id_version_projet_taxon=en_id_version_projet_nom " . |
" AND en_epithete_espece = ".$this->proteger($nom_latin_decoupe['species'])." AND en_ce_rang = enrg_id_rang " . |
" ORDER BY esn_ce_statut ". |
" LIMIT 1"; |
|
} |
|
$resultat = $this->executerRequete($requete); |
|
$retour = array(); |
if (is_array($resultat) && count($resultat) > 0) { |
$retour = $resultat[0]; |
} |
|
return $retour; |
} |
|
function rechercherInfosSurTexteCodeOuNumTax($identifiant_espece) { |
// texte libre, nom scientifique, |
// ou code nomenclatural (format BDNFFnn999999) |