Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 3499 → Rev 3500

/trunk/jrest/bibliotheque/GestionObservation.php
21,12 → 21,14
*/
class GestionObservation extends Cel {
 
static $cel_obs = ['id_observation', 'ordre', 'ce_utilisateur', 'prenom_utilisateur', 'nom_utilisateur',
'courriel_utilisateur', 'nom_sel', 'nom_sel_nn', 'nom_ret', 'nom_ret_nn', 'nt', 'famille',
'nom_referentiel', 'pays', 'ce_zone_geo', 'zone_geo', 'lieudit', 'station', 'milieu', 'latitude', 'longitude',
'altitude', 'geodatum', 'date_observation', 'mots_cles_texte', 'commentaire', 'transmission',
'date_creation', 'date_modification', 'date_transmission', 'abondance', 'certitude', 'phenologie',
'code_insee_calcul'];
static $cel_obs = ["input_source='widget'", "published_location si tag sensible", "occurrence_type = 'observation de terrain'",
"is_visible_in_cel =1", "is_visible_in_veglab =0", "is_wild = 1", "sample_herbarium = 0"];
static $correspondance_obs_occurrence = ['id_observation' => 'id', 'ce_utilisateur', 'prenom_utilisateur', 'nom_utilisateur',
'courriel_utilisateur', 'nom_sel', 'nom_sel_nn', 'nom_ret', 'nom_ret_nn', 'nt', 'famille',
'nom_referentiel', 'pays', 'ce_zone_geo', 'zone_geo', 'lieudit', 'station', 'milieu', 'latitude', 'longitude',
'altitude', 'geodatum', 'date_observation', 'mots_cles_texte', 'commentaire', 'transmission',
'date_creation', 'date_modification', 'date_transmission', 'abondance', 'certitude', 'phenologie',
'code_insee_calcul'];
 
/**
* Ajoute une observation grâce aux paramètres fournis
45,7 → 47,7
'nom_referentiel' => NULL);
$parametres = array_merge($base_param, $parametres);
 
$parametres['ordre'] = $this->renvoyerDernierOrdreUtilisePlusUn($utilisateur);
 
$this->traiterEspece($parametres);
 
73,34 → 75,11
$retour = false;
$msg = "Erreur de creation d'une observation : $resultat_ajout_observation";
$this->logger('CEL_bugs', $msg);
} else {
$retour = $this->renvoyerIdPourOrdre($utilisateur ,$parametres['ordre']);
}
return $retour;
}
 
/**
* Renvoie le prochain numero d'ordre relatif à un utilisateur (i.e. dernier ordre + 1)
*
* @param int $utilisateur id utilisateur
*
* @return int le nouveau numero d'ordre relatif à l'utilisateur ou bien 0 s'il n'a jamais créé d'observations
*/
public function renvoyerDernierOrdreUtilisePlusUn($utilisateur) {
$idUtilisateurP = Cel::db()->proteger($utilisateur);
$requete = 'SELECT max(ordre) AS ordre '.
'FROM cel_obs '.
"WHERE ce_utilisateur = $idUtilisateurP ".
' -- ' . __FILE__ . ':' . __LINE__;
$dernier_ordre = Cel::db()->requeter($requete);
 
$nouvel_ordre = 0;
if (is_array($dernier_ordre) && count($dernier_ordre) > 0 && trim($dernier_ordre[0]['ordre']) != '') {
$nouvel_ordre = $dernier_ordre[0]['ordre'] + 1;
}
return $nouvel_ordre;
}
 
/**
* Renvoie l'id d'observation associé à l'utilisateur et l'ordre donné
*
202,6 → 181,7
 
/**
* Modifie une observation publique dont l'id et l'utilisateur sont passé en paramètre
* Utiliser uniquement pour identiplante
*
* @param int $utilisateur id utilisateur du proprietaire de l'observation
* @param int $id identifiant de l'observation
221,12 → 201,12
$this->formaterParametresObservation($parametres);
 
$champ_maj = self::traiterParametresObservationEtConstruireSousRequeteMaj($parametres);
$champ_maj[] = 'date_modification = NOW()';
$champ_maj[] = 'date_updated = NOW()';
 
$requete = "UPDATE cel_obs SET " .
$requete = "UPDATE occurrence SET " .
implode(', ', $champ_maj) .
" WHERE id_observation = ".Cel::db()->proteger($id_obs).
" AND transmission = 1 ".
" WHERE id = ".Cel::db()->proteger($id_obs).
" AND is_public = 1 ".
' -- ' . __FILE__ . ':' . __LINE__;
$resultat = Cel::db()->executer($requete);
 
249,9 → 229,9
$etat_transmission = $publier ? 1 : 0;
$dateTransmission = $publier ? 'NOW()' : 'NULL';
 
$requete = 'UPDATE cel_obs '.
"SET transmission = $etat_transmission , date_transmission = $dateTransmission, date_modification = NOW() ".
"WHERE id_observation IN ($idsObsConcat) ".
$requete = 'UPDATE occurrence '.
"SET is_public = $etat_transmission , date_published = $dateTransmission, date_updated = NOW() ".
"WHERE id IN ($idsObsConcat) ".
' -- ' . __FILE__ . ':' . __LINE__;
$resultat = Cel::db()->executer($requete);
return $resultat;
265,7 → 245,7
*
* @return true ou false suivant le succès de l'opération
*/
public function supprimerObservation($utilisateur, $ordre) {
public function supprimerObservation($utilisateur, $id) {
// TODO changer le systeme pour n'utiliser plus que les id
$retour = false;
$tableau_ordre = explode(',', $ordre);
273,10 → 253,9
$ordre = implode(',', $tableau_ordre);
$idUtilisateurP = Cel::db()->proteger($utilisateur);
 
$requete = 'SELECT id_observation AS id_obs '.
'FROM cel_obs '.
"WHERE ce_utilisateur = $idUtilisateurP ".
"AND ordre IN ($ordre) ".
$requete = 'SELECT id AS id_obs '.
'FROM occurrence '.
"WHERE user_id = $idUtilisateurP ".
' -- '.__FILE__.':'.__LINE__;
$resultats = Cel::db()->requeter($requete);
 
289,7 → 268,7
}
 
$chaine_ids_obs = implode(',', $ids_obs);
$requete = 'DELETE FROM cel_obs WHERE '.
$requete = 'DELETE FROM occurrence WHERE '.
"ce_utilisateur = $idUtilisateurP ".
"AND id_observation IN ($chaine_ids_obs) ".
' -- '.__FILE__.':'.__LINE__;
571,13 → 550,25
* selon la syntaxe UPDATE table SET colonne1 = valeur1, colonne2 = valeur2 WHERE condition
*/
static function traiterParametresObservationEtConstruireSousRequeteMaj($parametres) {
$correspondance = array("nom_sel" => "user_sci_name",
"nom_sel_nn" => "user_sci_name_id",
"nom_ret" => "accepted_sci_name",
"nom_ret_nn" => "accepted_sci_name_id",
"famille" => "family",
"valide" => "is_identiplante_validated",
"transmission" => "is_public");
// Nullifiage ...
// TODO: code dupliqué, en faire une fonction à mettre à la place appropriée
$champs = array();
foreach ($parametres as $cle => $valeur) {
$valeur = self::renvoyerValeurDenullifiee($valeur);
$champs[] = $cle.' = '.$valeur;
if (isset($correspondance[$cle])) {
$champs[] = $correspondance[$cle].' = '.$valeur;
}
}
if (!isset($parametres['transmission'])) {
$champs[] = "is_identiplante_validated = 1";
}
return $champs;
}