Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 1779 → Rev 1780

/trunk/jrest/lib/RechercheInfosTaxonBeta.php
68,11 → 68,10
}
public function effectuerRequeteInfosComplementairesEtFormaterNom($numNom) {
$resultat_infos_complementaires = (array)$this->effectuerRequeteInfosComplementairesSurNumNom($numNom);
$retour_infos_complementaires = array();
if (isset($resultat_infos_complementaires['nom_retenu_complet']) && $resultat_infos_complementaires['nom_retenu_complet'] != '') {
$retour_infos_complementaires=array(($this->supprimerBiblio($resultat_infos_complementaires['nom_retenu_complet'])));
if (isset($resultat_infos_complementaires['nom_retenu_complet']) && $resultat_infos_complementaires['nom_retenu_complet']) {
$retour_infos_complementaires=array((self::supprimerBiblio($resultat_infos_complementaires['nom_retenu_complet'])));
}
return $retour_infos_complementaires;
96,12 → 95,10
private function effectuerRequeteUrlRecherche($nom_saisi, $stricte = true) {
$url_recherche = $this->getUrlRechercheInfosComplementaires($nom_saisi, $stricte);
$resultat = @file_get_contents($url_recherche);
$liste_genre_espece = array();
if($resultat != '') {
$liste_genre_espece = $this->parserResultatRechercheTaxon($resultat);
}
return $liste_genre_espece;
$res = @json_decode(file_get_contents($url_recherche));
if(!$res) return NULL;
$resultat = (array)$res->resultat;
return array_pop($resultat);
}
private function getUrlRechercheInfosComplementaires($nom_saisi, $stricte = true) {
136,49 → 133,11
return strpos($nom_saisi,'x ') === 0;
}
private function parserResultatRechercheTaxon($resultat) {
$liste_genre_espece = array();
$resultat = json_decode($resultat);
if(is_object($resultat) && isset($resultat->resultat)) {
foreach ($resultat->resultat as $id => $res) {
$nom_complet = $res->{'nom_sci'}.' '.$res->auteur;
$liste_genre_espece[] = array($id,$nom_complet);
}
}
return $liste_genre_espece;
}
public function rechercherInformationsComplementairesSurNumNom($num_nom) {
$infos_formatees = array();
$infos = $this->effectuerRequeteInfosComplementairesSurNumNom($num_nom);
if(is_object($infos)) {
$infos_formatees = $this->formaterInfosComplementairesSurNumNom($infos);
}
return $infos_formatees;
}
public function effectuerRequeteInfosComplementairesSurNumNom($num_nom) {
$infos = array();
$url = $this->url_service_nom.'/'.$num_nom.'?retour.champs=nom_sci,auteur,id,nom_retenu_complet,nom_retenu.id,num_taxonomique,famille';
$resultat = @file_get_contents($url);
if($resultat != '') {
$infos = json_decode($resultat);
}
return $infos;
return @json_decode(file_get_contents($this->url_service_nom.'/'.$num_nom.'?retour.champs=nom_sci,auteur,id,nom_retenu_complet,nom_retenu.id,num_taxonomique,famille'));
}
private function formaterInfosComplementairesSurNumNom($infos) {
$infos = (array)$infos;
return $infos_formatees = array(
'Nom_Retenu' => $this->supprimerBiblio($infos['nom_retenu_complet']),
'Num_Nom_Retenu' => $infos['nom_retenu.id'],
'Num_Taxon' => $infos['num_taxonomique'],
'Famille' => $infos['famille']
);
return $infos_formatees;
}
private function supprimerBiblio($nom) {
 
static function supprimerBiblio($nom) {
return preg_replace('/ \[.*\]/','',$nom);
}
208,64 → 167,33
}
public function effectuerRequeteInfosComplementairesSurNumTax($numTax) {
$infos = array();
//TODO: retourner moins de champs grâce au paramètre retour.champs
$url = $this->url_service_taxon."/nt:".$numTax;
$resultat = @file_get_contents($url);
if($resultat != '') {
$infos = json_decode($resultat);
}
return @json_decode(file_get_contents($this->url_service_taxon."/nt:".$numTax));
}
 
return $infos;
}
/* texte libre, nom scientifique,
ou code nomenclatural (format BDNFFnn999999)
ou code taxonomique (format BDNFFnt999999)
TODO: voir ce qu'on fait pour l'import de différent référentiels */
function rechercherInfosSurTexteCodeOuNumTax($identifiant_espece) {
// texte libre, nom scientifique,
// ou code nomenclatural (format BDNFFnn999999)
// ou code taxonomique (format BDNFFnt999999)
preg_match('/BDNFFnn(\d+)/',$identifiant_espece, $elements);
// Numero nomenclatural
if (isset($elements[1]))
return $this->effectuerRequeteInfosComplementairesSurNumNom($elements[1]);
 
$retour = array();
//TODO: voir ce qu'on fait pour l'import de différent référentiels
preg_match('/BDNFFnn(\d+)/',$identifiant_espece, $elements);
if (isset($elements[1])) {
// Numero nomenclatural
$infos_taxon = $this->rechercherInformationsComplementairesSurNumNom($elements[1]);
$retour = array("nom_sel" => $infos_taxon['Nom_Retenu'], "en_id_nom" => $elements[1]);
} else {
// Numero taxonomique ou nom scientifique
preg_match('/BDNFFnt(\d+)/', $identifiant_espece, $elements);
if (isset($elements[1])) {
// Numero taxonomique
$infos_taxon = (array)$this->effectuerRequeteInfosComplementairesSurNumTax($elements[1]);
if(isset($infos_taxon['nom_retenu.libelle']) && isset($infos_taxon['id'])) {
$nom = $infos_taxon['nom_retenu.libelle'];
$nom .= (isset($infos_taxon['auteur'])) ? ' '.$infos_taxon['auteur'] : '';
$retour = array("nom_sel" => $nom,
"en_id_nom" => $infos_taxon['id']);
}
} else {
// Nom scientifique
$id_nom = $this->rechercherInformationsComplementairesSurNom($identifiant_espece);
// Recherche du nom associe
$retour = array("nom_sel" => $identifiant_espece);
if(is_array($id_nom) && count($id_nom) > 0 && isset($id_nom[0][0]) && isset($id_nom[0][1])) {
$nn = $id_nom[0][0];
$retour = array("nom_sel" => $id_nom[0][1], "en_id_nom" => $id_nom[0][0]);
}
}
}
return $retour;
// Numero taxonomique ou nom scientifique
preg_match('/BDNFFnt(\d+)/', $identifiant_espece, $elements);
// Numero taxonomique
if (isset($elements[1]))
return $this->effectuerRequeteInfosComplementairesSurNumTax($elements[1]);
 
// Nom scientifique
return $this->rechercherInformationsComplementairesSurNom($identifiant_espece);
}
private function getUrlRechercheSynonymes($num_nom) {
return $this->url_service_nom.'/'.$num_nom.'/relations/synonymie/?retour.format=min';
}
public function rechercherSynonymesSurNumNom($num_nom) {
$retour = array();
$resultat = @file_get_contents($this->getUrlRechercheSynonymes($num_nom));
$resultat = @file_get_contents($this->url_service_nom.'/'.$num_nom.'/relations/synonymie/?retour.format=min');
if($resultat != '') {
$resultat = json_decode($resultat);
if(is_object($resultat) && isset($resultat->resultat) && count($resultat->resultat) > 0) {