Subversion Repositories eFlore/Applications.cel

Rev

Rev 3526 | Rev 3528 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3526 Rev 3527
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
		}