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 |