Subversion Repositories Sites.obs-saisons.fr

Compare Revisions

Ignore whitespace Rev 45 → Rev 46

/trunk/applications/jrest/services/OdsObservation.php
5,6 → 5,11
const PREFIXE = 'get';
const ABBR_LISTE_EVENEMENTS = 'evenement';
/**
* Méthodes d'extractions d'informations
*/
/**
* Méthode appelée avec une requête de type GET.
*
28,77 → 33,8
// Envoi sur la sortie standard
$this->envoyer($info);
}
/**
* Méthode appelée pour ajouter un élément.
*/
public function createElement($params) {
// Identification de l'utilisateur
list($id_utilisateur, $id_session) = $this->getIdentification($params);
// Contrôle du non détournement de l'utilisateur
if ($this->etreAutorise($id_utilisateur)) {
try {
} catch (PDOException $e) {
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
}
}
$this->envoyer((string) $id_personne);
}
/**
* Méthode appelée pour mettre à jour un élément
*/
public function updateElement($uid, $params) {
//Mise à jour de la personne
// Identification de l'utilisateur
list($id_utilisateur, $id_session) = $this->getIdentification($params);
// Contrôle du non détournement de l'utilisateur
if ($this->etreAutorise($id_utilisateur)) {
try {
 
} catch (PDOException $e) {
$messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
}
}
$this->envoyer();
}
/**
* Méthode appelée pour supprimer un élément
*/
public function deleteElement($uid) {
// Vérification de la présence des id passés par l'url
if (!isset($uid[0]) || !isset($uid[1])) {
$this->messages[] = "Identifiant d'utilisateur ou de personne manquant. Vous ne devriez pas avoir accès à ce service.";
} else {
list($id_utilisateur, $id_session) = $this->getIdentification($uid[0]);
// Contrôle du non détournement de l'utilisateur
if ($this->etreAutorise($id_utilisateur)) {
// Récupération des id passés par l'url
$identifiants = explode(',', rtrim($uid[1], ','));
if (count($identifiants) == 0) {
$this->messages[] = "Aucun enregistrement n'a été supprimé.";
} else {
foreach ($identifiants as $id_personne) {
try {
} catch (PDOException $e) {
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
}
}
}
}
}
// Envoie sur la sortie standard
$this->envoyer();
}
private function getElementParDefaut($params) {
private function getElementParDefaut($params) {
}
122,46 → 58,25
$liste_observation_individu = $this->executerRequete($requete_liste_observation_individu);
$liste_observation_individu_formatees =array();
$liste_observation_individu_formatees = array();
$requete_evenements_pour_espece_individu_1 = 'SELECT oe_ce_evenements FROM ods_especes '.
'WHERE oe_id_espece = '.
'('.
'SELECT oi_ce_espece FROM ods_individus '.
'WHERE oi_id_individu = '.$this->proteger($id_individu).' '.
')';
$evenements_pour_espece_chaine = $this->executerRequete($requete_evenements_pour_espece_individu_1);
$evenements_pour_espece_chaine = $evenements_pour_espece[0]['oe_ce_evenements'];
$tableau_evenements_espece = split(',',$evenements_pour_espece_chaine);
foreach($tableau_evenements_espece as &$evenement_espece) {
$evenement_espece = $this->proteger($evenement_espece);
}
$evenements_espece_chaine_bdd = implode(',',$tableau_evenements_espece);
 
$requete_liste_evenement_espece_individu = 'SELECT * FROM ods_triples '.
'WHERE ot_id_triple IN '.
'('.$evenements_espece_chaine_bdd.')';
$liste_evenement_espece_individu = $this->executerRequete($requete_liste_evenement_espece_individu);
$liste_evenement_espece_individu = $liste_evenement_espece_individu[0];
foreach($liste_observation_individu as $observation_individu) {
$annee_obs = date($observation_individu['oo_date'], "Y");
$stade_observation_complet = $observation_individu['oo_ce_evenement'];
$annee_obs = date("Y",strtotime($observation_individu['oo_date']));
$stade_observation_complet = $this->getInformationEvenementParId($observation_individu['oo_ce_evenement']);
$infos_stades = split('_',$stade_observation_complet);
$abbr_stade_observation = $stade_observation_complet['ot_cle'];
$titre_stade = $infos_stades[1];
$numero_stade = $infos_stades[3];
$infos_stades = $this->renvoyerInformationStadeAPartirChaineTriple($abbr_stade_observation);
$date_observation_formatee = date($observation_individu['oo_date'],$this->config['appli']['format_date']);
$titre_stade = $infos_stades['nom'];
$numero_stade = $infos_stades['numero'];
$abreviation_stade = $infos_stades['abreviation'];
$date_observation_formatee = date($this->config['appli']['format_date'], strtotime($observation_individu['oo_date']));
$liste_observation_individu_formatees[$annee_obs][$titre_stade][$numero_stade] = $date_observation_formatee;
$liste_observation_individu_formatees[$annee_obs][$titre_stade][$numero_stade] = $date_observation_formatee;
}
168,35 → 83,186
return $liste_observation_individu_formatees;
}
/*private function getMajEspece() {
$id_maj = '97,98,99,100,101,102,108,109,110,111';
$stade_ajoute = '20';
private function getInformationEvenementParId($id_evenement) {
$tab = explode(',',$id_maj);
$requete_informations_evenement = 'SELECT * FROM ods_triples '.
'WHERE ot_id_triple IN '.
'('.$this->proteger($id_evenement).')';
foreach($tab as $id) {
$resultat_requete_informations_evenement = $this->executerRequete($requete_informations_evenement);
$informations_evenement = $resultat_requete_informations_evenement[0];
return $informations_evenement;
}
 
/**
* Méthodes de création et modification d'informations
*/
/**
* Méthode appelée pour ajouter un élément.
*/
public function createElement($params) {
print_r($params);
$this->envoyer();
}
/**
* Méthode appelée pour mettre à jour un élément
*/
public function updateElement($uid, $params) {
$elements_requis = array('id_participant','id_individu');
$erreurs = array();
foreach($elements_requis as $requis) {
if(!isset($params[$requis])) {
$erreurs[$requis] = 'erreur ';
}
}
if(!isset($params['annee_en_cours'])) {
$annee_en_cours = date('Y');
} else {
$annee_en_cours = $params['annee_en_cours'];
}
if(!empty($erreurs)) {
$this->envoyer($erreurs);
}
$id_participant = $params['id_participant'];
unset($params['id_participant']);
$id_individu = $params['id_individu'];
unset($params['id_individu']);
$requete_obs_deja_saisies_cette_annee = 'SELECT * FROM ods_observations WHERE oo_ce_individu = '.$this->proteger($id_individu).' '.
'AND oo_ce_participant = '.$this->proteger($id_participant).' '.
'AND YEAR(oo_date) = '.$this->proteger($annee_en_cours);
 
$obs_deja_saisies_cette_annee = $this->executerRequete($requete_obs_deja_saisies_cette_annee);
foreach($params as $cle => $valeur) {
if($est_une_valeur_obs = $this->renvoyerIdEvenementSiChampDeFormulaireObservation($cle)) {
$valeur = $this->formaterDateObservationPourBdd($valeur);
$obs_a_traiter = array('date_evenement' => $valeur,
'id_evenement' => $est_une_valeur_obs,
'id_individu' => $id_individu,
'commentaire' => '');
if($a_modifier_ou_inserer = $this->renvoyerIdObservationSiEvenementDejaObserveCetteAnnee($est_une_valeur_obs,$obs_deja_saisies_cette_annee)) {
$obs_a_traiter['id_observation'] = $a_modifier_ou_inserer;
$this->modifierObservation($id_participant, $obs_a_traiter);
} else {
$this->insererObservation($id_participant, $obs_a_traiter);
}
}
}
$this->envoyer();
}
private function insererObservation($id_participant, $donnees_obs_a_inserer) {
$nouvel_ordre = 1;
$requete_max_ordre = 'SELECT MAX(oo_ordre) FROM ods_observations WHERE '.
'oo_ce_participant = '.$this->proteger($id_participant);
$resultat_requete_ordre = $this->executerRequete($requete_max_ordre);
if(count($resultat_requete_ordre) > 0) {
$nouvel_ordre = $resultat_requete_ordre[0]['oo_ordre'] + 1;
}
$requete_nouvelle_observation = 'INSERT INTO ods_observations '.
'(oo_ordre, oo_ce_individu, oo_ce_evenement, oo_date, oo_commentaire, oo_date_saisie, oo_date_modification) '.
'VALUES '.
'( '.
$this->proteger($nouvel_ordre).','.
$this->proteger($donnees_obs_a_inserer['id_individu']).','.
$this->proteger($donnees_obs_a_inserer['id_evenement']).','.
$this->proteger($donnees_obs_a_inserer['date_evenement']).','.
'"",'.
'NOW(),'.
'NOW()'.
')';
return $this->executerRequeteSimple($requete_nouvelle_observation);
}
private function modifierObservation($id_participant, $donnees_obs_a_inserer) {
 
$requete_modification_observation = 'UPDATE ods_observations '.
'SET '.
'oo_date = '.$this->proteger($donnees_obs_a_inserer['date_evenement']).', '.
'oo_commentaire = '.$this->proteger($donnees_obs_a_inserer['commentaire']).', '.
'oo_date_modification = NOW() '.
'WHERE oo_id_observation = '.$donnees_obs_a_inserer['id_observation'].' '.
'AND oo_ce_participant = '.$this->proteger($id_participant);
return $this->executerRequeteSimple($requete_modification_observation);
}
private function renvoyerIdObservationSiEvenementDejaObserveCetteAnnee($id_evenement, $tableau_observations_cette_annee) {
foreach($tableau_observations_cette_annee as $observation_cette_annee) {
$requete = 'SELECT oe_ce_evenements FROM ods_especes WHERE oe_id_espece = '.$id;
echo $requete.'<br />';
$res = $this->executerRequete($requete);
print_r($res);
if($res[0]['oe_ce_evenements'] == 0) {
$evts = ''.$stade_ajoute;
} else {
$evts = $res[0]['oe_ce_evenements'].','.$stade_ajoute;
if($id_evenement == $observation_cette_annee['oo_ce_evenement']) {
$observation_cette_annee['oo_ce_evenement'];
return $observation_cette_annee['oo_id_observation'];
}
$evts = $this->proteger($evts);
$requete = 'UPDATE ods_especes SET oe_ce_evenements = '.$evts.' WHERE `oe_id_espece` = '.$id;
echo $requete.'<br />';;
$this->executerRequeteSimple($requete);
}
return false;
}
private function renvoyerIdEvenementSiChampDeFormulaireObservation($champ) {
$tab_champ = split('observation_',$champ);
if(count($tab_champ) > 1 && is_numeric($tab_champ[1])) {
return $tab_champ[1];
}
return false;
}
private function formaterDateObservationPourBdd($date) {
$format = $this->config['appli']['format_date'];
if(!isset($format)) {
$format = 'd/m/Y';
}
$recherche = array('d','m','Y');
$remplacement = array('([0-9]{1,2})','([0-9]{1,2})','([0-9]{4})');
$pattern_date_simple = str_replace($recherche, $remplacement, $format);;
 
}*/
if(ereg($pattern_date_simple, $date)) {
$date_tab = split('/', $date);
$time = mktime(0,0,0,$date_tab[1],$date_tab[0],$date_tab[2]);
} else {
$time = strtotime($date);
}
return date('Y-m-d h:i:s', $time);
}
/**
* Méthode appelée pour supprimer un élément
*/
public function deleteElement($uid) {
// Envoie sur la sortie standard
$this->envoyer();
}
}
?>