Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 1425 → Rev 1426

/trunk/jrest/lib/RechercheInfosTaxonBeta.php
67,7 → 67,8
? $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=3000';
$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';
 
$resultat = @file_get_contents($url);
if($resultat != '') {
$resultat = json_decode($resultat);
143,63 → 144,17
public function effectuerRequeteInfosComplementairesSurNumTax($numTax) {
$requete_infos_complementaires = "SELECT DISTINCT en_nom_genre, en_epithete_espece, en_nom_supra_generique, en_epithete_infra_generique,".
" auteur_bex.enaia_intitule_abrege AS abreviation_auteur_basio_ex ".
" , auteur_b.enaia_intitule_abrege AS abreviation_auteur_basio ".
" , auteur_mex.enaia_intitule_abrege AS abreviation_auteur_modif_ex ".
" , auteur_m.enaia_intitule_abrege AS abreviation_auteur_modif ".
" , en_epithete_espece, en_epithete_infra_specifique, enrg_abreviation_rang, en_id_nom" .
" FROM eflore_nom, eflore_nom_rang," .
" eflore_naturaliste_intitule_abreviation AS auteur_bex ".
" , eflore_naturaliste_intitule_abreviation AS auteur_b ".
" , eflore_naturaliste_intitule_abreviation AS auteur_mex ".
" , eflore_naturaliste_intitule_abreviation AS auteur_m ".
" , eflore_selection_nom ".
" WHERE esn_id_taxon = '".$numTax. "'".
" AND esn_id_version_projet_taxon = 25 ".
" AND esn_ce_statut=3 ".
" AND en_id_nom = esn_id_nom" .
" AND en_ce_rang = enrg_id_rang" .
" AND en_ce_auteur_basio_ex = auteur_bex.enaia_id_intitule_naturaliste_abrege ".
" AND en_ce_auteur_basio = auteur_b.enaia_id_intitule_naturaliste_abrege ".
" AND en_ce_auteur_modif_ex = auteur_mex.enaia_id_intitule_naturaliste_abrege ".
" AND en_ce_auteur_modif = auteur_m.enaia_id_intitule_naturaliste_abrege ".
" AND esn_id_version_projet_taxon=en_id_version_projet_nom ";
$resultat_infos_complementaires = $this->executerRequete($requete_infos_complementaires);
return $resultat_infos_complementaires;
$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;
$resultat = @file_get_contents($url);
if($resultat != '') {
$infos = json_decode($resultat);
}
 
return $infos;
}
public function rechercherFamille($taxon) {
$row = array();
$requete_famille = "SELECT DISTINCT en_ce_rang, etr_id_taxon_2, en_id_nom, en_nom_supra_generique ".
" FROM eflore_taxon_relation, ".
" eflore_selection_nom, ".
" eflore_nom ".
" WHERE etr_id_taxon_1 = ".$taxon.
" AND etr_id_version_projet_taxon_1 = 25 ".
" AND etr_id_categorie_taxon = 3 ".
" AND etr_id_valeur_taxon = 3 ".
" AND esn_id_taxon = etr_id_taxon_2 ".
" AND esn_ce_statut = 3 ".
" AND esn_id_version_projet_taxon = etr_id_version_projet_taxon_1 ".
" AND en_id_nom = esn_id_nom ".
" AND esn_id_version_projet_taxon=en_id_version_projet_nom ";
$resultat_recherche_famille = $this->executerRequete($requete_famille);
if (!is_array($resultat_recherche_famille) || count($resultat_recherche_famille) == 0) {
$resultat_recherche_famille = array('en_ce_rang' => 'fin');
} else {
$resultat_recherche_famille = $resultat_recherche_famille[0];
}
return $resultat_recherche_famille;
}
private function decouperNomEtRechercheEspeceOuSousEspece($identifiant_espece) {
$nameparser=new NameParser();
$nom_latin_decoupe=$nameparser->parse($identifiant_espece);
239,64 → 194,6
return $retour;
}
private function formaterNom($rawnom) {
 
// Constitution du nom:
$nom = '';
 
if (isset($rawnom['en_nom_supra_generique']) && $rawnom['en_nom_supra_generique'] != '') {
$nom .= $rawnom['en_nom_supra_generique'];
} else if (isset($rawnom['en_epithete_infra_generique']) && $rawnom['en_epithete_infra_generique'] != '') {
$nom .= $rawnom['en_epithete_infra_generique'];
} else {
if (isset($rawnom['en_nom_genre']) && $rawnom['en_nom_genre'] != '') {
$nom .= $rawnom['en_nom_genre'];
}
if (isset($rawnom['en_epithete_espece']) && $rawnom['en_epithete_espece']!= '') {
$nom .= ' '.$rawnom['en_epithete_espece'];
}
if (isset($rawnom['en_epithete_infra_specifique']) && $rawnom['en_epithete_infra_specifique'] != '') {
if (!empty($rawnom['enrg_abreviation_rang'])) {
$nom .= ' '.$rawnom['enrg_abreviation_rang'].'';
}
$nom .= ' '.$rawnom['en_epithete_infra_specifique'];
}
}
 
return $nom.$this->retournerAuteur($rawnom) ;
}
 
private function retournerAuteur($rawnom) {
$auteurs = '';
$auteur_basio = '';
$auteur_modif = '';
if (!empty($rawnom['abreviation_auteur_basio_ex']) && $rawnom['abreviation_auteur_basio_ex']!='-' ) {
$auteur_basio .= $rawnom['abreviation_auteur_basio_ex'];
if (!empty($rawnom['abreviation_auteur_basio']) && $rawnom['abreviation_auteur_basio']!='-') {
$auteur_basio .= ' ex '.$rawnom['abreviation_auteur_basio'];
}
} else if (!empty($rawnom['abreviation_auteur_basio']) && $rawnom['abreviation_auteur_basio']!='-') {
$auteur_basio .= $rawnom['abreviation_auteur_basio'];
}
 
if (!empty($rawnom['abreviation_auteur_modif_ex']) && $rawnom['abreviation_auteur_modif_ex']!='-') {
$auteur_modif .= $rawnom['abreviation_auteur_modif_ex'];
if (!empty($rawnom['abreviation_auteur_modif']) && $rawnom['abreviation_auteur_modif']!='-') {
$auteur_modif .= ' ex '.$rawnom['abreviation_auteur_modif'];
}
} else if (!empty($rawnom['abreviation_auteur_modif']) && $rawnom['abreviation_auteur_modif']!='-') {
$auteur_modif .= $rawnom['abreviation_auteur_modif'];
}
 
if (!empty($auteur_modif)) {
$auteurs = ' ('.$auteur_basio.') '.$auteur_modif;
} elseif (!empty($auteur_basio)) {
$auteurs = ' '.$auteur_basio;
}
 
return $auteurs ;
}
function rechercherInfosSurTexteCodeOuNumTax($identifiant_espece) {
// texte libre, nom scientifique,
// ou code nomenclatural (format BDNFFnn999999)
303,7 → 200,7
// ou code taxonomique (format BDNFFnt999999)
$identifiant_espece=trim($identifiant_espece);
$identifiant_espece=utf8_encode($identifiant_espece);
$retour = array();
preg_match('/BDNFFnn([0-9][0-9]*)/',$identifiant_espece, $elements);
310,26 → 207,29
if (isset($elements[1])) {
// Numero nomenclatural
$infos_taxon = $this->rechercherInformationsComplementairesSurNumNom($elements[1]);
$retour = array("nom_sel" => $this->formaterNom($infos_taxon), "en_id_nom" => $elements[1]);
$retour = array("nom_sel" => $infos_taxon['Nom_Retenu'], "en_id_nom" => $elements[1]);
} else {
// Numero taxonomique ou nom scientifique
preg_match('/BDNFFnt([0-9][0-9]*)/', $identifiant_espece, $elements);
if (isset($elements[1])) {
// Numero taxonomique
$infos_taxon = $this->effectuerRequeteInfosComplementairesSurNumTax($elements[1]);
$infos_taxon = $infos_taxon[0];
$retour = array("nom_sel" => $this->formaterNom($infos_taxon), "en_id_nom" => $infos_taxon['en_id_nom']);
$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->decouperNomEtRechercheEspeceOuSousEspece($identifiant_espece);
$id_nom = $this->rechercherInformationsComplementairesSurNom($identifiant_espece);
// Recherche du nom associe
$retour = array("nom_sel" => $identifiant_espece);
if(is_array($id_nom) && isset($id_nom['en_id_nom'])) {
$infos_nom = $this->effectuerRequeteInfosComplementairesSurNumNom($id_nom['en_id_nom']);
if(is_array($id_nom) && count($id_nom) > 0 && isset($id_nom[0][0])) {
$nn = $id_nom[0][0];
$infos_nom = (array)$this->effectuerRequeteInfosComplementairesSurNumNom($nn);
if (is_array($infos_nom) && !empty($infos_nom)) {
$infos_nom = $infos_nom[0];
$retour = array("nom_sel" => $this->formaterNom($infos_nom), "en_id_nom" => $id_nom['en_id_nom']);
$retour = array("nom_sel" => $infos_nom['nom_sci'].' '.$infos_nom['auteur'], "en_id_nom" => $infos_nom['id']);
}
}
}
/trunk/jrest/services/NameImage.php
41,95 → 41,24
class NameImage extends Cel {
 
function getElement($uid){
 
$nt = null;
 
if(isset($uid[0])) {
$recherche_infos_taxon = new RechercheInfosTaxonBeta($this->config);
$nt = $recherche_infos_taxon->rechercherNumTaxSurNumNom($uid[0]);
}
 
$projet_photo = 'photoflora';
$tab_retour[$projet_photo]=chercherIllustrationsServiceXml(sprintf(EF_URL_PHOTOFLORA_SERVICE, $nt));
$image = array();
$value=array('null','null');
foreach ($tab_retour[$projet_photo] as $cle => $illustration) {
if (preg_match(EF_URL_PHOTOFLORA_REGEXP_01, $illustration['about'], $match)) {
$abreviation = $match[1];
$fichier = $match[2];
}
else {
if (preg_match(EF_URL_PHOTOFLORA_REGEXP_02, $illustration['about'], $match)) {
$abreviation = $match[1];
$fichier = $match[2];
}
if(isset($uid[0])) {
$url = 'http://photoflora.free.fr/eflore-photoflora/services/index.php/0.1/projets/photoflora/images?masque.nn='.$uid[0].'&navigation.limite=1';
$resultat = @file_get_contents($url);
$resultat = json_decode($resultat);
if(is_object($resultat) && isset($resultat->resultats)) {
$element = (array)$resultat->resultats;
$element = array_pop($element);
$image = array($element->{'binaire.href'}, $element->{'binaire.hrefmax'});
}
if (isset($abreviation)) {
$url_miniature = sprintf(EF_URL_PHOTOFLORA_IMG_MIN, $abreviation, $fichier);;
$url_max = $illustration['about'];
$value=array($url_miniature,$url_max);
// Priorite aux images en png
if (strstr($fichier, '.png')) {
break;
}
}
}
$this->envoyerJson($value);
$this->envoyerJson($image);
return true;
}
}
 
function chercherIllustrationsServiceXml($url)
{
return analyserFichierRdf($url);
}
function analyserFichierRdf($chemin)
{
$aso_info = array();
$dom = new DOMDocument();
$dom->validateOnParse = true;
if (preg_match('/^http:\/\//', $chemin)) {
@$dom->loadXML(file_get_contents($chemin));
} else {
@$dom->load($chemin);
}
$tab_infos = array();
foreach ($dom->getElementsByTagNameNS('http://www.w3.org/1999/02/22-rdf-syntax-ns#', 'Description') as $rdf_description) {
$aso_info['about'] = $rdf_description->getAttribute('about');
$aso_info['dc:identifier'] = $rdf_description->getAttribute('identifier');
$aso_info['dc:title'] = utf8_decode($rdf_description->getAttribute('title'));
$aso_info['dc:creator'] = utf8_decode($rdf_description->getAttribute('creator'));
$aso_info['dc:contributor'] = utf8_decode($rdf_description->getAttribute('contributor'));
$aso_info['dc:publisher'] = utf8_decode($rdf_description->getAttribute('publisher'));
$aso_info['dc:type'] = utf8_decode($rdf_description->getAttribute('type'));
$aso_info['dc:format'] = utf8_decode($rdf_description->getAttribute('format'));
if (function_exists('date_default_timezone_set')) {
date_default_timezone_set('Europe/Paris');
}
if (preg_match('/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/', $rdf_description->getAttribute('created'))) {
$aso_info['dcterms:created'] = date('j-m-Y à H:i:s', strtotime($rdf_description->getAttribute('created')));
} else {
$aso_info['dcterms:created'] = $rdf_description->getAttribute('created');
}
$aso_info['dcterms:dateSubmitted'] = utf8_decode($rdf_description->getAttribute('dateSubmitted'));
$aso_info['dcterms:spatial'] = utf8_decode($rdf_description->getAttribute('spatial'));
$aso_info['dcterms:licence'] = utf8_decode($rdf_description->getAttribute('licence'));
$tab_infos[$rdf_description->getAttribute('identifier')] = $aso_info;
}
return $tab_infos;
}
/* +--Fin du code ---------------------------------------------------------------------------------------+
* $Log$
* Revision 1.4 2008-11-13 11:29:12 ddelon
/trunk/jrest/services/NameSearch.php
49,12 → 49,8
if(isset($uid[1])) {
$espece = $uid[1];
}
 
$chercheur_infos_taxon = new RechercheInfosTaxonBeta($this->config);
$infos = $chercheur_infos_taxon->taxonEstPresentDansDepartement('1320','75');
echo '<pre>'.print_r($infos,true).'</pre>';exit;
$infos = $chercheur_infos_taxon->rechercherInformationsComplementairesSurNom('Iris australis Tod.');
$liste_genre_espece = $chercheur_infos_taxon->rechercherGenreEspeceSurPrefixe($genre,$espece);
$this->envoyerJson($liste_genre_espece);
/trunk/jrest/services/NameMap.php
41,24 → 41,8
$nt = null;
 
if(isset($uid[0])) {
$recherche_infos_taxon = new RechercheInfosTaxonBeta($this->config);
$nt = $recherche_infos_taxon->rechercherNumTaxSurNumNom($uid[0]);
}
$retour = array('');
// si le taxon cherché existe
if ($nt) {
$file = EF_URL_CARTO."france_BDNFF_4.02_nt".$nt.".png";
$file_headers = @get_headers($file);
if ($file_headers[0] == 'HTTP/1.1 404 Not Found') {
}
else {
$service=EF_URL_CHORO.$uid[0].'/chorologie';
@get_headers($service);
}
$file = 'http://localhost/service:eflore:0.1/chorodep/cartes/nn%3A'.$uid[0].'?retour.format=587&retour=image%2Fpng';
$retour = array($file);
}
 
/trunk/jrest/services/InventoryImportExcel.php
273,7 → 273,7
$info_transmettre = $this->traiterTransmettre($line[TRANSMETTRE][$i]);
break;
case ESPECE:
$chercheur_infos_taxon = new RechercheInfosTaxon($this->config);
$chercheur_infos_taxon = new RechercheInfosTaxonBeta($this->config);
$resultat_recherche_espece = $chercheur_infos_taxon->rechercherInfosSurTexteCodeOuNumTax($line[ESPECE][$i]);
if (isset($resultat_recherche_espece['en_id_nom']) && $resultat_recherche_espece['en_id_nom']!='') {
$info_espece['nom_sel'] = $resultat_recherche_espece['nom_sel'];
286,7 → 286,6
} else {
$info_espece['nom_sel'] = $line[ESPECE][$i];
}
break;
case IMAGE:
$info_image=$this->traiterImage($line[IMAGE][$i],$utilisateur); // Image separee par des / + utilisateur
break;