108,6 → 108,39 |
} |
|
/** |
* Modifie une observation publique dont l'id et l'utilisateur sont passé en paramètre |
* |
* @param int $utilisateur id utilisateur du proprietaire de l'observation |
* @param int $id identifiant de l'observation |
* @param array $parametres tableau indexé avec les mêmes noms de champs que la bdd |
* |
* @return true ou false suivant le succès de l'opération |
*/ |
public function modifierObservationPublique($utilisateur, $id, $parametres) { |
|
$retour = true; |
$requete_modification = "UPDATE cel_obs SET " ; |
|
$sous_requete_modification = $this->traiterParametresObservationEtConstruireSousRequeteMaj($parametres); |
$requete_modification .= $sous_requete_modification; |
|
$requete_modification .= " WHERE id_observation = ".$this->proteger($id). |
" AND ce_utilisateur = ".$this->proteger($utilisateur)." ". |
" AND transmission = 1"; |
// important ! ne pas utiliser la fonction executerRequete qui renvoie une erreur si la requete contient des | (pipes) |
// ce qui peut arriver dans les commentaires |
// TODO: corriger la fonction ou bien continuer à utiliser executerRequeteSimple |
$resultat_modification = $this->executerRequeteSimple($requete_modification); |
|
if ($resultat_modification === false) { |
$retour = false; |
$this->logger("CEL_bugs","Erreur de mise à jour de l\'observation : ".$id); |
} |
|
return $retour; |
} |
|
/** |
* Supprime une ou plusieurs observations grâce aux paramètres fournis |
* |
* @param int $utilisateur id utilisateur du proprietaire de l'observation |
247,10 → 280,16 |
* @return $parametres le tableau modifié selon ce qu'il contenait |
*/ |
private function formaterParametresObservation($parametres) { |
|
$code_referentiel = 'bdtfx'; |
if(!isset($parametres['nom_referentiel'])) { |
$parametres['nom_referentiel'] = 'bdtfx:v1.01'; |
} |
$code_referentiel = substr($parametres['nom_referentiel'], 0, 5); |
|
if (($parametres['nom_sel_nn'] == '' || $parametres['nom_sel_nn'] == 0) && $parametres['nom_sel'] != '') { |
if ($this->estUnNomSolitaire($parametres)) { |
|
$chercheur_infos_complementaires = new RechercheInfosTaxonBeta($this->config); |
$chercheur_infos_complementaires = new RechercheInfosTaxonBeta($this->config, $code_referentiel); |
// Utilisation d'un nom sans numéro nomenclatural, recherche d'une correspondance sur le nom |
$complement = $chercheur_infos_complementaires->rechercherInformationsComplementairesSurNom($parametres['nom_sel']); |
|
259,20 → 298,16 |
if(count($complement) > 0) { |
$parametres['nom_sel_nn'] = $complement[0][0]; |
} |
|
$parametres['nom_referentiel'] = 'bdtfx:v1.01'; |
} |
|
if ($parametres['nom_sel_nn'] != '') { |
if ($this->parametreNumNomEstPresent($parametres)) { |
// Utilisation d'un nom faisant parti du referentiel : recherche du nom valide correspondant |
$chercheur_infos_complementaires = new RechercheInfosTaxonBeta($this->config); |
$chercheur_infos_complementaires = new RechercheInfosTaxonBeta($this->config , $code_referentiel); |
$complement = $chercheur_infos_complementaires->rechercherInformationsComplementairesSurNumNom($parametres['nom_sel_nn']); |
$parametres['nom_ret']=$complement['Nom_Retenu']; |
$parametres['nom_ret_nn']=$complement['Num_Nom_Retenu']; |
$parametres['nt']=$complement['Num_Taxon']; |
$parametres['famille']=$complement['Famille']; |
|
$parametres['nom_referentiel'] = 'bdtfx:v1.01'; |
} |
|
if(isset($parametres['ce_utilisateur'])) { |
305,13 → 340,30 |
|
// TODO : voir si l'on peut utiliser un des fonctions de la classe cel |
if (isset($parametres['date_observation']) && $parametres['date_observation']!="null") { |
list($jour,$mois,$annee)=explode("/",$parametres['date_observation']); |
$parametres['date_observation']=$annee."-".$mois."-".$jour." 0:0:0"; |
if(substr_count($parametres['date_observation'], '/') == 3) { |
list($jour,$mois,$annee)=explode("/",$parametres['date_observation']); |
$parametres['date_observation']=$annee."-".$mois."-".$jour." 0:0:0"; |
} |
} |
|
return $parametres; |
} |
|
private function estUnNomSolitaire($parametres) { |
return $this->parametreNumNomPasPresent($parametres) && $parametres['nom_sel'] != ''; |
} |
|
private function parametreNumNomEstPresent($parametres) { |
return !$this->parametreNumNomPasPresent($parametres); |
} |
|
private function parametreNumNomPasPresent($parametres) { |
return (!isset($parametres['nom_sel_nn']) || |
$parametres['nom_sel_nn'] == null || |
$parametres['nom_sel_nn'] == '' || |
$parametres['nom_sel_nn'] == 0); |
} |
|
/** |
* Assemble une sous requete pour un ajout, tout en formatant les paramètres et en recherchant |
* les infos complémentaires |