Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 1426 → Rev 1427

/trunk/jrest/lib/RechercheInfosTaxonBeta.php
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)