Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 1783 → Rev 1784

/trunk/jrest/tests/phptests/determ-espece-bdnffnn.test.php
1,3 → 1,3
<?php
// test détermination espèce avec bdnffnn
return array('data' => array('Espèce' => 'BDNFFnn72475'));
return array('data' => array('Espèce' => 'bdtfx:nn:72475'));
/trunk/jrest/tests/phptests/determ-espece-bdnffnt.test.php
1,3 → 1,3
<?php
// test détermination espèce avec bdnffnt, minuscules
return array('data' => array('Espèce' => 'BDNFFnt5757'));
return array('data' => array('Espèce' => 'bdtfx:nt:5757'));
/trunk/jrest/tests/phptests/determ-espece-syno-bdnff.test.php
8,4 → 8,4
| 101838 | 101838 | Rhaponticum coniferum |
+---------+----------------+-----------------------+
*/
return array('data' => array('Espèce' => 'BDNFFnn38821'));
return array('data' => array('Espèce' => 'bdtfx:nn:38821'));
/trunk/jrest/services/ImportXLS.php
674,7 → 674,7
TODO: s'affranchir du webservice pour la détermination du nom scientifique en s'appuyant sur cel_references,
pour des questions de performances
*/
static function traiterEspece($ligne, Array &$espece, $referentiel, $cel) {
static function traiterEspece($ligne, Array &$espece, &$referentiel, $cel) {
if(empty($ligne[C_NOM_SEL])) return;
 
// nom_sel reste toujours celui de l'utilisateur
698,7 → 698,7
SELECT nom_sci, num_nom_retenu, nom_sci_html, auteur, annee, biblio_origine FROM bdtfx_v1_01 WHERE num_nom = 31468
*/
// $determ = $taxon_info_webservice->rechercherInformationsComplementairesSurNom($ligne[C_NOM_SEL]);
// permet une reconnaissance de BDNFFnnXXXX
// permet une reconnaissance de bdtfx:nn:XXXX
$determ = $taxon_info_webservice->rechercherInfosSurTexteCodeOuNumTax(trim($ligne[C_NOM_SEL]));
 
// note: rechercherInfosSurTexteCodeOuNumTax peut ne retourner qu'une seule clef "nom_sel"
722,8 → 722,19
// ne devrait jamais arriver !
if(!$determ) die("erreur critique: " . __FILE__ . ':' . __LINE__);
 
// succès de la détection = écrasement du numéro nomenclatural saisi...
$espece[C_NOM_SEL] = $determ->nom_sci;
// un schéma <ref>:(nt|nn):<num> (ie: bdtfx:nt:8503) a été passé
// dans ce cas on met à jour le référentiel avec celui passé dans le champ espèce
if(isset($determ->ref)) {
$referentiel = $determ->ref;
}
 
// succès de la détection
// nom_sel est remplacé, mais seulement si un motif spécial à été utilisé (bdtfx:nn:4567)
if($taxon_info_webservice->is_notation_spe) {
$espece[C_NOM_SEL] = $determ->nom_sci;
}
 
// écrasement des numéros (nomenclatural, taxonomique) saisis...
$espece[C_NOM_SEL_NN] = $determ->id;
$espece[C_NOM_RET] = RechercheInfosTaxonBeta::supprimerBiblio($determ->nom_retenu_complet);
$espece[C_NOM_RET_NN] = $determ->{"nom_retenu.id"};
/trunk/jrest/lib/RechercheInfosTaxonBeta.php
25,7 → 25,11
private $masque_recherche = null;
private $code_referentiel = 'bdtfx';
 
// initialisé à TRUE par rechercherInfosSurTexteCodeOuNumTax()
// si l'espèce passée a le motif <ref>:(nt|nn):<num>, eg: isfan:nt:1591
public $is_notation_spe = FALSE;
 
public function RechercheInfosTaxonBeta($config, $code_referentiel = 'bdtfx') {
parent::__construct($config);
$this->code_referentiel = $code_referentiel;
166,27 → 170,28
return $presence_taxon;
}
public function effectuerRequeteInfosComplementairesSurNumTax($numTax) {
//TODO: retourner moins de champs grâce au paramètre retour.champs
return @json_decode(file_get_contents($this->url_service_taxon."/nt:".$numTax));
}
 
/* texte libre, nom scientifique,
ou code nomenclatural (format BDNFFnn999999)
ou code taxonomique (format BDNFFnt999999)
ou code nomenclatural (format bdtfx:nn:999999)
ou code taxonomique (format bdtfx:nt:999999)
TODO: voir ce qu'on fait pour l'import de différent référentiels */
function rechercherInfosSurTexteCodeOuNumTax($identifiant_espece) {
preg_match('/BDNFFnn(\d+)/',$identifiant_espece, $elements);
// Numero nomenclatural
if (isset($elements[1]))
return $this->effectuerRequeteInfosComplementairesSurNumNom($elements[1]);
preg_match('/(' . implode('|', Cel::$referentiels_valides) .'):(nn|nt):(\d+)/i', $identifiant_espece, $elements);
if($elements) {
$this->is_notation_spe = TRUE;
list(, $ref, $type, $num) = $elements;
// Numero nomenclatural
if ($type == 'nn') {
$obj = $this->effectuerRequeteInfosComplementairesSurNumNom($num);
}
// Numero taxonomique
else {
//TODO: retourner moins de champs grâce au paramètre retour.champs
$obj = @json_decode(file_get_contents($this->url_service_taxon."/nt:".$num));
}
$obj->ref = $ref;
return $obj;
}
 
// 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);
}