Line 87... |
Line 87... |
87 |
$requete_selection_dernier_id = "SELECT id_observation FROM cel_obs ".
|
87 |
$requete_selection_dernier_id = "SELECT id_observation FROM cel_obs ".
|
88 |
"WHERE ce_utilisateur = ".Cel::db()->proteger($utilisateur)." ".
|
88 |
"WHERE ce_utilisateur = ".Cel::db()->proteger($utilisateur)." ".
|
89 |
"AND ordre = ".Cel::db()->proteger($ordre)." ";
|
89 |
"AND ordre = ".Cel::db()->proteger($ordre)." ";
|
Line 90... |
Line 90... |
90 |
|
90 |
|
- |
|
91 |
$dernier_id = Cel::db()->executerRequete($requete_selection_dernier_id);
|
91 |
$dernier_id = Cel::db()->executerRequete($requete_selection_dernier_id);
|
92 |
if(!$dernier_id) return NULL;
|
92 |
return $dernier_id[0]['id_observation'];
|
93 |
return $dernier_id[0]['id_observation'];
|
Line 93... |
Line 94... |
93 |
}
|
94 |
}
|
94 |
|
95 |
|
Line 104... |
Line 105... |
104 |
public function modifierObservation($utilisateur, $ordre, $parametres) {
|
105 |
public function modifierObservation($utilisateur, $ordre, $parametres) {
|
Line 105... |
Line 106... |
105 |
|
106 |
|
106 |
$retour = true;
|
107 |
$retour = true;
|
Line -... |
Line 108... |
- |
|
108 |
$requete_modification = "UPDATE cel_obs SET " ;
|
- |
|
109 |
|
- |
|
110 |
/* TODO:
|
- |
|
111 |
* si (à l'origine) pas de nom_sel_nn (donc pas de référentiel) POSTé
|
- |
|
112 |
* et aucun nom déterminés, alors on supprime les données automatiques:
|
- |
|
113 |
* alors on test une différence de réferentiel...
|
- |
|
114 |
nom_sel_nn = IF(SUBSTR(nom_referentiel, 1, 5) != "{$parametre['referentiel']}", NULL, nom_sel_nn),
|
- |
|
115 |
nom_ret_nn = IF(SUBSTR(nom_referentiel, 1, 5) != "{$parametre['referentiel']}", NULL, nom_ret_nn),
|
- |
|
116 |
nom_ret = IF(SUBSTR(nom_referentiel, 1, 5) != "{$parametre['referentiel']}", NULL, nom_ret),
|
- |
|
117 |
nt = IF(SUBSTR(nom_referentiel, 1, 5) != "{$parametre['referentiel']}", NULL, nt),
|
107 |
$requete_modification = "UPDATE cel_obs SET " ;
|
118 |
famille = IF(SUBSTR(nom_referentiel, 1, 5) != "{$parametre['referentiel']}", NULL, famille)
|
108 |
|
119 |
*/
|
Line 109... |
Line 120... |
109 |
$sous_requete_modification = $this->traiterParametresObservationEtConstruireSousRequeteMaj($parametres);
|
120 |
$sous_requete_modification = $this->traiterParametresObservationEtConstruireSousRequeteMaj($parametres);
|
Line 132... |
Line 143... |
132 |
* @param array $parametres tableau indexé avec les mêmes noms de champs que la bdd
|
143 |
* @param array $parametres tableau indexé avec les mêmes noms de champs que la bdd
|
133 |
*
|
144 |
*
|
134 |
* @return true ou false suivant le succès de l'opération
|
145 |
* @return true ou false suivant le succès de l'opération
|
135 |
*/
|
146 |
*/
|
136 |
public function modifierObservationPublique($utilisateur, $id, $parametres) {
|
147 |
public function modifierObservationPublique($utilisateur, $id, $parametres) {
|
- |
|
148 |
$base_param = array('nom_sel_nn' => NULL,
|
- |
|
149 |
'nom_sel' => NULL,
|
- |
|
150 |
'nom_ret_nn' => NULL,
|
- |
|
151 |
'nom_referentiel' => NULL);
|
- |
|
152 |
$parametres = array_merge($base_param, $parametres);
|
137 |
|
153 |
|
138 |
$retour = true;
|
154 |
$retour = true;
|
139 |
$requete_modification = "UPDATE cel_obs SET " ;
|
155 |
$requete_modification = "UPDATE cel_obs SET " ;
|
Line 140... |
Line 156... |
140 |
|
156 |
|
141 |
$sous_requete_modification = $this->traiterParametresObservationEtConstruireSousRequeteMaj($parametres);
|
157 |
$sous_requete_modification = $this->traiterParametresObservationEtConstruireSousRequeteMaj($parametres);
|
Line 295... |
Line 311... |
295 |
* @param array $parametres tableau indexé avec les mêmes noms de champs que la bdd
|
311 |
* @param array $parametres tableau indexé avec les mêmes noms de champs que la bdd
|
296 |
*
|
312 |
*
|
297 |
* @return $parametres le tableau modifié selon ce qu'il contenait
|
313 |
* @return $parametres le tableau modifié selon ce qu'il contenait
|
298 |
*/
|
314 |
*/
|
299 |
private function formaterParametresObservation(&$parametres) {
|
315 |
private function formaterParametresObservation(&$parametres) {
|
300 |
|
316 |
|
301 |
$code_referentiel = 'bdtfx';
|
317 |
$code_referentiel = 'bdtfx';
|
302 |
if(!isset($parametres['nom_referentiel'])) {
|
318 |
if(!$parametres['nom_referentiel']) {
|
303 |
$parametres['nom_referentiel'] = 'bdtfx:v1.01';
|
319 |
$parametres['nom_referentiel'] = Cel::$default_referentiel;
|
304 |
}
|
320 |
}
|
305 |
$code_referentiel = substr($parametres['nom_referentiel'], 0, 5);
|
321 |
$code_referentiel = substr(trim($parametres['nom_referentiel']), 0, 5);
|
306 |
|
322 |
|
307 |
if($this->estUnNomRetenuSansSaisi($parametres)) {
|
323 |
// TODO/XXX: quoi ?!
|
308 |
echo $this->estUnNomRetenuSansSaisi($parametres, 'nom_ret_nn');exit;
|
324 |
if(!$parametres['nom_sel_nn'] && !$parametres['nom_sel'] && $parametres['nom_ret_nn']) {
|
309 |
$parametres['nom_ret']= "";
|
- |
|
310 |
$parametres['nom_ret_nn']= "";
|
325 |
$parametres['nom_ret'] = $parametres['nom_ret_nn'] = $parametres['nt'] = $parametres['famille'] = "";
|
311 |
$parametres['nt']= "";
|
- |
|
312 |
$parametres['famille']= "";
|
- |
|
313 |
}
|
326 |
}
|
314 |
|
327 |
|
- |
|
328 |
/* pour un nom saisi sans autocomplétion 3 cas de figure existent:
|
- |
|
329 |
1) référentiel bdtfx
|
- |
|
330 |
1.1) trouvé par le webservice => ref = bdtfx
|
- |
|
331 |
1.2) pas trouvé par le webservice => ref = autre
|
- |
|
332 |
2) si le référentiel est inconnu (explicitement mis à "autre"), alors pas d'appel au webservice => ref = autre */
|
- |
|
333 |
if(in_array($code_referentiel, Cel::$referentiels_valides)) {
|
- |
|
334 |
// nom saisi sans numéro
|
315 |
if ($this->estUnNomSolitaire($parametres)) {
|
335 |
if ($parametres['nom_sel'] && !$parametres['nom_sel_nn']) {
|
316 |
|
- |
|
317 |
$chercheur_infos_complementaires = new RechercheInfosTaxonBeta($this->config, $code_referentiel);
|
336 |
$chercheur_infos_complementaires = new RechercheInfosTaxonBeta($this->config, $code_referentiel);
|
318 |
// Utilisation d'un nom sans numéro nomenclatural, recherche d'une correspondance sur le nom
|
337 |
// Utilisation d'un nom sans numéro nomenclatural, recherche d'une correspondance sur le nom
|
- |
|
338 |
|
319 |
$complement = $chercheur_infos_complementaires->rechercherInformationsComplementairesSurNom($parametres['nom_sel']);
|
339 |
$complement = $chercheur_infos_complementaires->rechercherInformationsComplementairesSurNom($parametres['nom_sel']);
|
320 |
|
340 |
|
321 |
// Si l'on a trouvé un résultat sur la recherche, il s'agit vraisemblablement d'un copié-collé
|
341 |
// Si l'on a trouvé un résultat sur la recherche, il s'agit vraisemblablement d'un copié-collé
|
322 |
// de nom de taxon qui n'a pas été validé par la selection
|
342 |
// de nom de taxon qui n'a pas été validé par la selection
|
323 |
if(count($complement) > 0) {
|
343 |
if(count($complement) > 0) {
|
324 |
$parametres['nom_sel_nn'] = $complement[0][0];
|
344 |
$parametres['nom_sel_nn'] = $complement[0][0];
|
- |
|
345 |
}
|
- |
|
346 |
else {
|
- |
|
347 |
// pas de résultat de recherche sur le référentiel demandé, le webservice doit peut-être être corrigé
|
- |
|
348 |
// mais en tout état de cause nous n'insérerons PAS de données incertaines associé à un référentiel !
|
- |
|
349 |
$code_referentiel = Cel::$fallback_referentiel;
|
- |
|
350 |
// note: 'nom_sel_nn' devrait être NULL, donc parametreNumNomEstPresent() ci-dessous ne devrait pas advenir
|
- |
|
351 |
}
|
325 |
}
|
352 |
}
|
326 |
}
|
- |
|
Line 327... |
Line 353... |
327 |
|
353 |
|
328 |
if ($this->parametreNumNomEstPresent($parametres)) {
|
354 |
if ($parametres['nom_sel_nn']) {
|
329 |
// Utilisation d'un nom faisant parti du referentiel : recherche du nom valide correspondant
|
355 |
// Utilisation d'un nom faisant parti du referentiel : recherche du nom valide correspondant
|
330 |
$chercheur_infos_complementaires = new RechercheInfosTaxonBeta($this->config , $code_referentiel);
|
356 |
$chercheur_infos_complementaires = new RechercheInfosTaxonBeta($this->config , $code_referentiel);
|
Line 331... |
Line 357... |
331 |
$complement = $chercheur_infos_complementaires->rechercherInformationsComplementairesSurNumNom($parametres['nom_sel_nn']);
|
357 |
$complement = $chercheur_infos_complementaires->rechercherInformationsComplementairesSurNumNom($parametres['nom_sel_nn']);
|
332 |
|
358 |
|
333 |
$parametres['nom_ret']=$complement['Nom_Retenu'];
|
359 |
$parametres['nom_ret']=$complement['Nom_Retenu'];
|
334 |
$parametres['nom_ret_nn']=$complement['Num_Nom_Retenu'];
|
360 |
$parametres['nom_ret_nn']=$complement['Num_Nom_Retenu'];
|
- |
|
361 |
$parametres['nt']=$complement['Num_Taxon'];
|
335 |
$parametres['nt']=$complement['Num_Taxon'];
|
362 |
$parametres['famille']=$complement['Famille'];
|
- |
|
363 |
}
|
- |
|
364 |
}
|
- |
|
365 |
|
Line 336... |
Line 366... |
336 |
$parametres['famille']=$complement['Famille'];
|
366 |
// mise à jour du référentiel utilisé, sans n° de version
|
Line 337... |
Line 367... |
337 |
}
|
367 |
$parametres['nom_referentiel'] = $code_referentiel;
|
Line 375... |
Line 405... |
375 |
|
405 |
|
376 |
return $parametres;
|
406 |
return $parametres;
|
Line 377... |
Line -... |
377 |
}
|
- |
|
378 |
|
- |
|
379 |
|
- |
|
380 |
private function estUnNomRetenuSansSaisi($parametres) {
|
- |
|
381 |
return $this->parametreNumNomPasPresent($parametres) &&
|
- |
|
382 |
$this->parametreNomSelPasPresent($parametres) &&
|
- |
|
383 |
$this->parametreEstPresentEtValide($parametres, 'nom_ret_nn');
|
- |
|
384 |
}
|
- |
|
385 |
|
- |
|
386 |
private function parametreEstPresentEtValide($parametres, $index) {
|
- |
|
387 |
return (isset($parametres[$index]) &&
|
- |
|
388 |
$parametres[$index] != null &&
|
- |
|
389 |
$parametres[$index] != '' &&
|
- |
|
390 |
$parametres[$index] != 0);
|
- |
|
391 |
}
|
- |
|
392 |
|
- |
|
393 |
private function estUnNomSolitaire($parametres) {
|
- |
|
394 |
return $this->parametreNumNomPasPresent($parametres) && isset($parametres['nom_sel']) && $parametres['nom_sel'] != '';
|
- |
|
395 |
}
|
- |
|
396 |
|
- |
|
397 |
private function parametreNumNomEstPresent($parametres) {
|
- |
|
398 |
return !$this->parametreNumNomPasPresent($parametres);
|
- |
|
399 |
}
|
- |
|
400 |
|
- |
|
401 |
private function parametreNumNomPasPresent($parametres) {
|
- |
|
402 |
return (!isset($parametres['nom_sel_nn']) ||
|
- |
|
403 |
$parametres['nom_sel_nn'] == null ||
|
- |
|
404 |
$parametres['nom_sel_nn'] == '' ||
|
- |
|
405 |
$parametres['nom_sel_nn'] == 0);
|
- |
|
406 |
}
|
- |
|
407 |
|
- |
|
408 |
private function parametreNomSelPasPresent($parametres) {
|
- |
|
409 |
return (!isset($parametres['nom_sel']) ||
|
- |
|
410 |
$parametres['nom_sel'] == null ||
|
- |
|
411 |
$parametres['nom_sel'] == '' ||
|
- |
|
412 |
$parametres['nom_sel'] == 0);
|
407 |
}
|
413 |
}
|
408 |
|
414 |
|
409 |
|
415 |
/**
|
410 |
/**
|
416 |
* Assemble une sous requete pour un ajout, tout en formatant les paramètres et en recherchant
|
411 |
* Assemble une sous requete pour un ajout, tout en formatant les paramètres et en recherchant
|
Line 423... |
Line 418... |
423 |
private function traiterParametresObservationEtConstruireSousRequeteAjout($parametres) {
|
418 |
private function traiterParametresObservationEtConstruireSousRequeteAjout($parametres) {
|
Line 424... |
Line 419... |
424 |
|
419 |
|
Line 425... |
Line 420... |
425 |
$sous_requete = '';
|
420 |
$sous_requete = '';
|
426 |
|
421 |
|
427 |
$parametres = $this->formaterParametresObservation($parametres);
|
422 |
$parametres = $this->formaterParametresObservation($parametres);
|
428 |
|
423 |
|
Line 429... |
Line 424... |
429 |
$champs = '';
|
424 |
$champs = '';
|
430 |
$valeurs = '';
|
425 |
$valeurs = '';
|
Line 459... |
Line 454... |
459 |
* @param array $parametres un tableau avec les index correspondant aux champs de la bdd
|
454 |
* @param array $parametres un tableau avec les index correspondant aux champs de la bdd
|
460 |
*
|
455 |
*
|
461 |
* @return string une sous requete utilisable pour la modification d'une observation
|
456 |
* @return string une sous requete utilisable pour la modification d'une observation
|
462 |
* selon la syntaxe UPDATE table SET colonne1 = valeur1, colonne2 = valeur2 WHERE condition
|
457 |
* selon la syntaxe UPDATE table SET colonne1 = valeur1, colonne2 = valeur2 WHERE condition
|
463 |
*/
|
458 |
*/
|
464 |
private function traiterParametresObservationEtConstruireSousRequeteMAJ($parametres) {
|
459 |
private function traiterParametresObservationEtConstruireSousRequeteMaj($parametres) {
|
Line 465... |
Line 460... |
465 |
|
460 |
|
Line 466... |
Line 461... |
466 |
$sous_requete = '';
|
461 |
$sous_requete = '';
|