Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 3526 → Rev 3527

/trunk/jrest/services/CelWidgetSaisie.php
94,9 → 94,9
 
$obsAAjouter['user_sci_name'] = isset($obs['nom_sel']) ? $obs['nom_sel'] : null;
$obsAAjouter['user_sci_name_id'] = isset($obs['num_nom_sel']) ? $obs['num_nom_sel'] : null;
$obsAAjouter['accepted_sci_name'] = isset($obs['nom_ret']) ? $obs['nom_ret'] : null;
$obsAAjouter['accepted_sci_name'] = isset($obs['accepted_sci_name']) ? $obs['accepted_sci_name'] : null;
$obsAAjouter['accepted_sci_name_id'] = isset($obs['num_nom_ret']) ? $obs['num_nom_ret'] : null;
$obsAAjouter['family'] = isset($obs['famille']) ? $obs['famille'] : null;
$obsAAjouter['family'] = isset($obs['family']) ? $obs['family'] : null;
$obsAAjouter['taxo_repo'] = isset($obs['referentiel']) ? ($obs['referentiel'] == 'bdtfxr') ? 'bdtfx' : $obs['referentiel'] : null;
 
$obsAAjouter['date_observed'] = $this->transormerDateFrVersMysql($obs['date']);
278,7 → 278,7
 
/**
* Retourne true si les champs suivants sont présents dans le tableau :
* - obsId1[nom_sel]
* - obsId1[user_sci_name]
* - obsId1[latitude]' : obs.geoloc.lat || '',
'obsId1[longitude]' : obs.geoloc.lon || '',
* mot-clé "pn:referentiel"
290,37 → 290,36
 
/**
* Si les données taxonomiques sont incomplètes dans $obs
* (clefs 'nom_sel_nn', 'nom_sel', 'nom_referentiel', 'nom_ret_nn',
* 'nom_ret', 'famille'), tente d'en récupérer un maximum à l'aide des
* (clefs 'nom_sel_nn', 'user_sci_name', 'taxo_repo', 'accepted_sci_name_id',
* 'accepted_sci_name', 'family'), tente d'en récupérer un maximum à l'aide des
* services eFlore, à condition que soient mentionnés au moins :
* - un nom de référentiel
* - un nom_sel_nn OU un nom_sel
* - un nom_sel_nn OU un user_sci_name
*/
protected function enrichirDonneesTaxonomiques(&$obs) {
// sans référentiel, on ne peut rien faire
if (! empty($obs['nom_referentiel'])) {
if (! empty($obs['taxo_repo'])) {
// copies locales pour ne pas abimer les données d'entrée
$nn = $obs['nom_sel_nn'];
$ref = $obs['nom_referentiel'];
$ns = $obs['nom_sel'];
$nr = $obs['nom_ret'];
$nnr = $obs['nom_ret_nn'];
$fam = $obs['famille'];
$nt = $obs['nt'];
$ref = $obs['taxo_repo'];
$ns = $obs['user_sci_name'];
$nr = $obs['accepted_sci_name'];
$nnr = $obs['accepted_sci_name_id'];
$fam = $obs['family'];
 
// si j'ai un nn, tentative de retrouver le nnr, le nom_sel,
// le nom_ret et la famille, s'ils ne sont pas déjà présents (on
// si j'ai un nn, tentative de retrouver le nnr, le user_sci_name,
// le accepted_sci_name et la famille, s'ils ne sont pas déjà présents (on
// pourrait les écraser systématiquement mais l'appel au service
// dégrade les perfs)
if ((! empty($nn) && is_numeric($nn))
// omission du test sur 'nom_ret' car le service eFlore noms ne le retourne que sans auteur (pas bon)
&& (empty($ns) || empty($nnr) || empty($nt) || empty($fam) /*|| empty($nr)*/)) {
// omission du test sur 'accepted_sci_name' car le service eFlore noms ne le retourne que sans auteur (pas bon)
&& (empty($ns) || empty($nnr) || empty($fam) /*|| empty($nr)*/)) {
// go
$this->enrichirDonneesTaxonomiquesParNN($ref, $nn, $obs);
} else {
// si j'ai un nom complet, avec un peu de bol il sera dans le référentiel
if ((! empty($ns))
&& (empty($nn) || empty($nnr) || empty($nt) || empty($fam) /*|| empty($nr)*/)) {
&& (empty($nn) || empty($nnr) || empty($fam) /*|| empty($nr)*/)) {
// go
$this->enrichirDonneesTaxonomiquesParNS($ref, $ns, $obs);
}
361,7 → 360,7
}
if ($nn_trouve != null) {
// gagné !
$obs['nom_sel_nn'] = $nn_trouve;
$obs['user_sci_name_id'] = $nn_trouve;
// et maintenant on recolle ce qu'on peut à partir du nn
$this->enrichirDonneesTaxonomiquesParNN($ref, $nn_trouve, $obs);
}
388,17 → 387,14
$infos_nom = json_decode($infos_nom, true);
// une fois qu'on a les infos, on écrase tout
if ($infos_nom['nom_complet'] != null) {
$obs['nom_sel'] = $infos_nom['nom_complet'];
$obs['user_sci_name'] = $infos_nom['nom_complet'];
}
if ($infos_nom['nom_retenu.id'] != null) {
$obs['nom_ret_nn'] = $infos_nom['nom_retenu.id'];
$obs['accepted_sci_name_id'] = $infos_nom['nom_retenu.id'];
}
if ($infos_nom['num_taxonomique'] != null) {
$obs['nt'] = $infos_nom['num_taxonomique'];
}
// manque le nom_ret retourné sans auteur (insatisfaisant)
// manque le accepted_sci_name retourné sans auteur (insatisfaisant)
if ($infos_nom['famille'] != null) {
$obs['famille'] = $infos_nom['famille'];
$obs['family'] = $infos_nom['family'];
}
} catch(Exception $e) {
// échec silencieux