Line 25... |
Line 25... |
25 |
private $projetTags = array();
|
25 |
private $projetTags = array();
|
26 |
private $tagsObs = null;
|
26 |
private $tagsObs = null;
|
27 |
private $tagsImg = null;
|
27 |
private $tagsImg = null;
|
28 |
private $userId = null;
|
28 |
private $userId = null;
|
29 |
private $userEmail = null;
|
29 |
private $userEmail = null;
|
30 |
private $userIntitule = null;
|
30 |
private $userIntitule = null;=
|
31 |
private $isFromPlantNet = false;
|
31 |
private $isPlantnetPull = false;
|
32 |
private $isSauvages = false;
|
32 |
private $isSauvages = false;
|
33 |
const DUREE_DE_VIE_IMG = 86400;// 3600 * 24 = 86 400 (1 journée)
|
33 |
const DUREE_DE_VIE_IMG = 86400;// 3600 * 24 = 86 400 (1 journée)
|
34 |
const ARRET_SERVICE = false;// Permet de bloquer le service en cas de problème sur le serveur
|
34 |
const ARRET_SERVICE = false;// Permet de bloquer le service en cas de problème sur le serveur
|
Line 35... |
Line 35... |
35 |
|
35 |
|
Line 47... |
Line 47... |
47 |
$this->projetId = $requeteDonnees['id_projet'] ?? null;
|
47 |
$this->projetId = $requeteDonnees['id_projet'] ?? null;
|
48 |
}
|
48 |
}
|
Line 49... |
Line 49... |
49 |
|
49 |
|
50 |
// Si c'est une obs Pl@ntNet
|
50 |
// Si c'est une obs Pl@ntNet
|
- |
|
51 |
if (! empty($requeteDonnees['tag-obs']) && strpos(strtolower($requeteDonnees['tag-obs']), 'plantnet') !== false) {
|
- |
|
52 |
if (isset($requeteDonnees['origin']) && 'pullPlantnet' === $requeteDonnees['origin']) {
|
51 |
if (! empty($requeteDonnees['tag-obs']) && strpos(strtolower($requeteDonnees['tag-obs']), 'plantnet') !== false) {
|
53 |
// on traite les obs PN qui viennent du script de pull
|
- |
|
54 |
$this->isPlantnetPull = true;
|
- |
|
55 |
} else {
|
- |
|
56 |
// fake ID pour les obs PN provenant de PlantNet V1
|
- |
|
57 |
$retour = (object) [
|
- |
|
58 |
'msg' => 'observation Pl@ntNet non sauvegardée',
|
- |
|
59 |
'id' => 'fake-' . uniqid(),
|
- |
|
60 |
'images' => []
|
- |
|
61 |
];
|
- |
|
62 |
$this->envoyerJson($retour);
|
- |
|
63 |
exit; // envoyerJson() ne termine pas le script !
|
52 |
$this->isFromPlantNet = true;
|
64 |
}
|
53 |
}
|
65 |
}
|
54 |
// Si c'est une obs Pl@ntNet
|
66 |
// Si c'est une obs Sauvages de ma rue
|
55 |
if (! empty($requeteDonnees['tag-obs']) && strpos(strtolower($requeteDonnees['tag-obs']), 'mobileSauvages') !== false) {
|
67 |
if (! empty($requeteDonnees['tag-obs']) && strpos(strtolower($requeteDonnees['tag-obs']), 'mobileSauvages') !== false) {
|
56 |
$this->isSauvages = true;
|
68 |
$this->isSauvages = true;
|
Line 57... |
Line 69... |
57 |
}
|
69 |
}
|
Line 67... |
Line 79... |
67 |
|
79 |
|
68 |
// Traitement des observations et des images
|
80 |
// Traitement des observations et des images
|
69 |
if (isset($requeteDonnees['utilisateur']['courriel']) && filter_var($requeteDonnees['utilisateur']['courriel'], FILTER_VALIDATE_EMAIL)) {
|
81 |
if (isset($requeteDonnees['utilisateur']['courriel']) && filter_var($requeteDonnees['utilisateur']['courriel'], FILTER_VALIDATE_EMAIL)) {
|
70 |
$this->debug[] = 'Utilisateur : '.print_r($requeteDonnees['utilisateur'], true);
|
82 |
$this->debug[] = 'Utilisateur : '.print_r($requeteDonnees['utilisateur'], true);
|
71 |
$utilisateur = $requeteDonnees['utilisateur'];
|
- |
|
72 |
// début transaction car si insertions par le même utilisateur en parallèle,
|
- |
|
73 |
// De plus, ça permet de ne pas conserver les données d'obs si l'image provoque une erreur
|
- |
|
74 |
//Cel::db()->setAttribute(PDO::ATTR_AUTOCOMMIT, false);
|
- |
|
75 |
Cel::db()->beginTransaction();
|
- |
|
76 |
$erreursDurantTraitement = false;
|
- |
|
Line 77... |
Line 83... |
77 |
$nomsOriginauxImagesTemp = array();
|
83 |
$utilisateur = $requeteDonnees['utilisateur'];
|
78 |
|
84 |
|
79 |
// hop on récupère les infos de l'utilisateur
|
85 |
// hop on récupère les infos de l'utilisateur
|
80 |
$infosUtilisateur = $this->infosInscritTela($utilisateur['courriel']);
|
86 |
$infosUtilisateur = $this->infosInscritTela($utilisateur['courriel']);
|
Line 156... |
Line 162... |
156 |
$obsAAjouter['certainty'] = ($this->projet == "aDeterminer") ? 'à déterminer' : $obsAAjouter['certainty'];
|
162 |
$obsAAjouter['certainty'] = ($this->projet == "aDeterminer") ? 'à déterminer' : $obsAAjouter['certainty'];
|
157 |
$obsAAjouter['input_source'] = 'widget';
|
163 |
$obsAAjouter['input_source'] = 'widget';
|
158 |
$obsAAjouter['project_id'] = $this->projetId;
|
164 |
$obsAAjouter['project_id'] = $this->projetId;
|
159 |
// racommodage en attendant mieux
|
165 |
// racommodage en attendant mieux
|
160 |
$obsAAjouter['project'] = ($this->projetId == null) ? null : ($this->projetId == 53) ? "missions-flore" : $this->projet ;
|
166 |
$obsAAjouter['project'] = ($this->projetId == null) ? null : ($this->projetId == 53) ? "missions-flore" : $this->projet ;
|
161 |
if ($this->isFromPlantNet) {
|
167 |
if ($this->isPlantnetPull) {
|
162 |
$obsAAjouter['input_source'] = 'PlantNet';
|
168 |
$obsAAjouter['input_source'] = 'PlantNet';
|
163 |
$obsAAjouter['plantnet_id'] = $obs['obs_id'];
|
169 |
$obsAAjouter['plantnet_id'] = $obs['obs_id'];
|
164 |
}
|
170 |
}
|
165 |
if ($this->isSauvages) {
|
171 |
if ($this->isSauvages) {
|
166 |
$obsAAjouter['input_source'] = 'autre';
|
172 |
$obsAAjouter['input_source'] = 'autre';
|
Line 179... |
Line 185... |
179 |
$this->debug[] = 'Nbre obs ajoutée : '.count($observations);
|
185 |
$this->debug[] = 'Nbre obs ajoutée : '.count($observations);
|
180 |
$this->debug[] = 'projet : '.$this->projet;
|
186 |
$this->debug[] = 'projet : '.$this->projet;
|
181 |
$this->debug[] = 'tagsObs : '.print_r($this->tagsObs, true);
|
187 |
$this->debug[] = 'tagsObs : '.print_r($this->tagsObs, true);
|
182 |
$this->debug[] = 'tagsImg : '.print_r($this->tagsImg, true);
|
188 |
$this->debug[] = 'tagsImg : '.print_r($this->tagsImg, true);
|
Line -... |
Line 189... |
- |
|
189 |
|
- |
|
190 |
// début transaction car si insertions par le même utilisateur en parallèle,
|
- |
|
191 |
// De plus, ça permet de ne pas conserver les données d'obs si l'image provoque une erreur
|
- |
|
192 |
//Cel::db()->setAttribute(PDO::ATTR_AUTOCOMMIT, false);
|
- |
|
193 |
Cel::db()->beginTransaction();
|
- |
|
194 |
$erreursDurantTraitement = false;
|
- |
|
195 |
$nomsOriginauxImagesTemp = array();
|
183 |
|
196 |
|
184 |
// Insertion dans la base
|
197 |
// Insertion dans la base
|
185 |
$obs_a_taguer_ids = array();
|
198 |
$obs_a_taguer_ids = array();
|
186 |
$img_a_taguer_ids_noms = array();
|
199 |
$img_a_taguer_ids_noms = array();
|
187 |
$champsEtendusObs = array();
|
200 |
$champsEtendusObs = array();
|
Line 415... |
Line 428... |
415 |
* interrogeant le service eFlore/noms par référentiel + nn
|
428 |
* interrogeant le service eFlore/noms par référentiel + nn
|
416 |
*/
|
429 |
*/
|
417 |
protected function enrichirDonneesTaxonomiquesParNN($ref, $nn, &$obs) {
|
430 |
protected function enrichirDonneesTaxonomiquesParNN($ref, $nn, &$obs) {
|
418 |
$url_nom = $this->config['eflore']['url_service_nom'];
|
431 |
$url_nom = $this->config['eflore']['url_service_nom'];
|
419 |
$url_nom = str_replace('{referentiel}', $ref, $url_nom);
|
432 |
$url_nom = str_replace('{referentiel}', $ref, $url_nom);
|
420 |
$url_nom .= '/' . $nn;
|
433 |
$url_nom .= '/' . $nn . '?ns.structure=au,an';
|
421 |
// un horrible @ car les erreurs de file_get_contents() ne sont pas try/catchables
|
434 |
// un horrible @ car les erreurs de file_get_contents() ne sont pas try/catchables
|
422 |
// @TODO mettre du cURL à l'occase
|
435 |
// @TODO mettre du cURL à l'occase
|
423 |
$infos_nom = @file_get_contents($url_nom);
|
436 |
$infos_nom = @file_get_contents($url_nom);
|
424 |
if ($infos_nom != NULL) {
|
437 |
if ($infos_nom != NULL) {
|
425 |
try {
|
438 |
try {
|
Line 432... |
Line 445... |
432 |
$obs['accepted_sci_name'] = $infos_nom['nom_retenu_complet'];
|
445 |
$obs['accepted_sci_name'] = $infos_nom['nom_retenu_complet'];
|
433 |
}
|
446 |
}
|
434 |
if ($infos_nom['nom_retenu.id'] != null) {
|
447 |
if ($infos_nom['nom_retenu.id'] != null) {
|
435 |
$obs['accepted_sci_name_id'] = $infos_nom['nom_retenu.id'];
|
448 |
$obs['accepted_sci_name_id'] = $infos_nom['nom_retenu.id'];
|
436 |
}
|
449 |
}
|
437 |
// manque le accepted_sci_name retourné sans auteur (insatisfaisant)
|
- |
|
438 |
if ($infos_nom['famille'] != null) {
|
450 |
if ($infos_nom['famille'] != null) {
|
439 |
$obs['family'] = $infos_nom['famille'];
|
451 |
$obs['family'] = $infos_nom['famille'];
|
440 |
}
|
452 |
}
|
441 |
} catch(Exception $e) {
|
453 |
} catch(Exception $e) {
|
442 |
// échec silencieux
|
454 |
// échec silencieux
|