Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 1526 → Rev 1527

/trunk/jrest/lib/GestionObservation.php
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