Line 92... |
Line 92... |
92 |
$obsAAjouter['user_email'] = $this->userEmail;
|
92 |
$obsAAjouter['user_email'] = $this->userEmail;
|
93 |
$obsAAjouter['user_pseudo'] = $this->userIntitule;
|
93 |
$obsAAjouter['user_pseudo'] = $this->userIntitule;
|
Line 94... |
Line 94... |
94 |
|
94 |
|
95 |
$obsAAjouter['user_sci_name'] = isset($obs['nom_sel']) ? $obs['nom_sel'] : null;
|
95 |
$obsAAjouter['user_sci_name'] = isset($obs['nom_sel']) ? $obs['nom_sel'] : null;
|
96 |
$obsAAjouter['user_sci_name_id'] = isset($obs['num_nom_sel']) ? $obs['num_nom_sel'] : null;
|
96 |
$obsAAjouter['user_sci_name_id'] = isset($obs['num_nom_sel']) ? $obs['num_nom_sel'] : null;
|
97 |
$obsAAjouter['accepted_sci_name'] = isset($obs['nom_ret']) ? $obs['nom_ret'] : null;
|
97 |
$obsAAjouter['accepted_sci_name'] = isset($obs['accepted_sci_name']) ? $obs['accepted_sci_name'] : null;
|
98 |
$obsAAjouter['accepted_sci_name_id'] = isset($obs['num_nom_ret']) ? $obs['num_nom_ret'] : null;
|
98 |
$obsAAjouter['accepted_sci_name_id'] = isset($obs['num_nom_ret']) ? $obs['num_nom_ret'] : null;
|
99 |
$obsAAjouter['family'] = isset($obs['famille']) ? $obs['famille'] : null;
|
99 |
$obsAAjouter['family'] = isset($obs['family']) ? $obs['family'] : null;
|
Line 100... |
Line 100... |
100 |
$obsAAjouter['taxo_repo'] = isset($obs['referentiel']) ? ($obs['referentiel'] == 'bdtfxr') ? 'bdtfx' : $obs['referentiel'] : null;
|
100 |
$obsAAjouter['taxo_repo'] = isset($obs['referentiel']) ? ($obs['referentiel'] == 'bdtfxr') ? 'bdtfx' : $obs['referentiel'] : null;
|
101 |
|
101 |
|
Line 276... |
Line 276... |
276 |
return array_shift($retour);
|
276 |
return array_shift($retour);
|
277 |
}
|
277 |
}
|
Line 278... |
Line 278... |
278 |
|
278 |
|
279 |
/**
|
279 |
/**
|
280 |
* Retourne true si les champs suivants sont présents dans le tableau :
|
280 |
* Retourne true si les champs suivants sont présents dans le tableau :
|
281 |
* - obsId1[nom_sel]
|
281 |
* - obsId1[user_sci_name]
|
282 |
* - obsId1[latitude]' : obs.geoloc.lat || '',
|
282 |
* - obsId1[latitude]' : obs.geoloc.lat || '',
|
283 |
'obsId1[longitude]' : obs.geoloc.lon || '',
|
283 |
'obsId1[longitude]' : obs.geoloc.lon || '',
|
284 |
* mot-clé "pn:referentiel"
|
284 |
* mot-clé "pn:referentiel"
|
285 |
*/
|
285 |
*/
|
Line 288... |
Line 288... |
288 |
// lancer enrichirDonneesTaxonomiques et vérifier si ça a retrouvé un nn
|
288 |
// lancer enrichirDonneesTaxonomiques et vérifier si ça a retrouvé un nn
|
289 |
}
|
289 |
}
|
Line 290... |
Line 290... |
290 |
|
290 |
|
291 |
/**
|
291 |
/**
|
292 |
* Si les données taxonomiques sont incomplètes dans $obs
|
292 |
* Si les données taxonomiques sont incomplètes dans $obs
|
293 |
* (clefs 'nom_sel_nn', 'nom_sel', 'nom_referentiel', 'nom_ret_nn',
|
293 |
* (clefs 'nom_sel_nn', 'user_sci_name', 'taxo_repo', 'accepted_sci_name_id',
|
294 |
* 'nom_ret', 'famille'), tente d'en récupérer un maximum à l'aide des
|
294 |
* 'accepted_sci_name', 'family'), tente d'en récupérer un maximum à l'aide des
|
295 |
* services eFlore, à condition que soient mentionnés au moins :
|
295 |
* services eFlore, à condition que soient mentionnés au moins :
|
296 |
* - un nom de référentiel
|
296 |
* - un nom de référentiel
|
297 |
* - un nom_sel_nn OU un nom_sel
|
297 |
* - un nom_sel_nn OU un user_sci_name
|
298 |
*/
|
298 |
*/
|
299 |
protected function enrichirDonneesTaxonomiques(&$obs) {
|
299 |
protected function enrichirDonneesTaxonomiques(&$obs) {
|
300 |
// sans référentiel, on ne peut rien faire
|
300 |
// sans référentiel, on ne peut rien faire
|
301 |
if (! empty($obs['nom_referentiel'])) {
|
301 |
if (! empty($obs['taxo_repo'])) {
|
302 |
// copies locales pour ne pas abimer les données d'entrée
|
302 |
// copies locales pour ne pas abimer les données d'entrée
|
303 |
$nn = $obs['nom_sel_nn'];
|
303 |
$nn = $obs['nom_sel_nn'];
|
304 |
$ref = $obs['nom_referentiel'];
|
304 |
$ref = $obs['taxo_repo'];
|
305 |
$ns = $obs['nom_sel'];
|
305 |
$ns = $obs['user_sci_name'];
|
306 |
$nr = $obs['nom_ret'];
|
306 |
$nr = $obs['accepted_sci_name'];
|
307 |
$nnr = $obs['nom_ret_nn'];
|
307 |
$nnr = $obs['accepted_sci_name_id'];
|
308 |
$fam = $obs['famille'];
|
- |
|
Line 309... |
Line 308... |
309 |
$nt = $obs['nt'];
|
308 |
$fam = $obs['family'];
|
310 |
|
309 |
|
311 |
// si j'ai un nn, tentative de retrouver le nnr, le nom_sel,
|
310 |
// si j'ai un nn, tentative de retrouver le nnr, le user_sci_name,
|
312 |
// le nom_ret et la famille, s'ils ne sont pas déjà présents (on
|
311 |
// le accepted_sci_name et la famille, s'ils ne sont pas déjà présents (on
|
313 |
// pourrait les écraser systématiquement mais l'appel au service
|
312 |
// pourrait les écraser systématiquement mais l'appel au service
|
314 |
// dégrade les perfs)
|
313 |
// dégrade les perfs)
|
315 |
if ((! empty($nn) && is_numeric($nn))
|
314 |
if ((! empty($nn) && is_numeric($nn))
|
316 |
// omission du test sur 'nom_ret' car le service eFlore noms ne le retourne que sans auteur (pas bon)
|
315 |
// omission du test sur 'accepted_sci_name' car le service eFlore noms ne le retourne que sans auteur (pas bon)
|
317 |
&& (empty($ns) || empty($nnr) || empty($nt) || empty($fam) /*|| empty($nr)*/)) {
|
316 |
&& (empty($ns) || empty($nnr) || empty($fam) /*|| empty($nr)*/)) {
|
318 |
// go
|
317 |
// go
|
319 |
$this->enrichirDonneesTaxonomiquesParNN($ref, $nn, $obs);
|
318 |
$this->enrichirDonneesTaxonomiquesParNN($ref, $nn, $obs);
|
320 |
} else {
|
319 |
} else {
|
321 |
// si j'ai un nom complet, avec un peu de bol il sera dans le référentiel
|
320 |
// si j'ai un nom complet, avec un peu de bol il sera dans le référentiel
|
322 |
if ((! empty($ns))
|
321 |
if ((! empty($ns))
|
323 |
&& (empty($nn) || empty($nnr) || empty($nt) || empty($fam) /*|| empty($nr)*/)) {
|
322 |
&& (empty($nn) || empty($nnr) || empty($fam) /*|| empty($nr)*/)) {
|
324 |
// go
|
323 |
// go
|
325 |
$this->enrichirDonneesTaxonomiquesParNS($ref, $ns, $obs);
|
324 |
$this->enrichirDonneesTaxonomiquesParNS($ref, $ns, $obs);
|
Line 359... |
Line 358... |
359 |
}
|
358 |
}
|
360 |
}
|
359 |
}
|
361 |
}
|
360 |
}
|
362 |
if ($nn_trouve != null) {
|
361 |
if ($nn_trouve != null) {
|
363 |
// gagné !
|
362 |
// gagné !
|
364 |
$obs['nom_sel_nn'] = $nn_trouve;
|
363 |
$obs['user_sci_name_id'] = $nn_trouve;
|
365 |
// et maintenant on recolle ce qu'on peut à partir du nn
|
364 |
// et maintenant on recolle ce qu'on peut à partir du nn
|
366 |
$this->enrichirDonneesTaxonomiquesParNN($ref, $nn_trouve, $obs);
|
365 |
$this->enrichirDonneesTaxonomiquesParNN($ref, $nn_trouve, $obs);
|
367 |
}
|
366 |
}
|
368 |
}
|
367 |
}
|
369 |
} catch(Exception $e) {
|
368 |
} catch(Exception $e) {
|
Line 386... |
Line 385... |
386 |
if ($infos_nom != NULL) {
|
385 |
if ($infos_nom != NULL) {
|
387 |
try {
|
386 |
try {
|
388 |
$infos_nom = json_decode($infos_nom, true);
|
387 |
$infos_nom = json_decode($infos_nom, true);
|
389 |
// une fois qu'on a les infos, on écrase tout
|
388 |
// une fois qu'on a les infos, on écrase tout
|
390 |
if ($infos_nom['nom_complet'] != null) {
|
389 |
if ($infos_nom['nom_complet'] != null) {
|
391 |
$obs['nom_sel'] = $infos_nom['nom_complet'];
|
390 |
$obs['user_sci_name'] = $infos_nom['nom_complet'];
|
392 |
}
|
391 |
}
|
393 |
if ($infos_nom['nom_retenu.id'] != null) {
|
392 |
if ($infos_nom['nom_retenu.id'] != null) {
|
394 |
$obs['nom_ret_nn'] = $infos_nom['nom_retenu.id'];
|
393 |
$obs['accepted_sci_name_id'] = $infos_nom['nom_retenu.id'];
|
395 |
}
|
394 |
}
|
396 |
if ($infos_nom['num_taxonomique'] != null) {
|
- |
|
397 |
$obs['nt'] = $infos_nom['num_taxonomique'];
|
- |
|
398 |
}
|
- |
|
399 |
// manque le nom_ret retourné sans auteur (insatisfaisant)
|
395 |
// manque le accepted_sci_name retourné sans auteur (insatisfaisant)
|
400 |
if ($infos_nom['famille'] != null) {
|
396 |
if ($infos_nom['famille'] != null) {
|
401 |
$obs['famille'] = $infos_nom['famille'];
|
397 |
$obs['family'] = $infos_nom['family'];
|
402 |
}
|
398 |
}
|
403 |
} catch(Exception $e) {
|
399 |
} catch(Exception $e) {
|
404 |
// échec silencieux
|
400 |
// échec silencieux
|
405 |
}
|
401 |
}
|
406 |
}
|
402 |
}
|