78,10 → 78,11 |
if(!$this->estUneDateInvalide($tableau_date['day'], $tableau_date['month'], $tableau_date['year'])) { |
|
$date_observation_formatee = date($this->config['appli']['format_date'], strtotime($observation_individu['oo_date'])); |
|
$liste_observation_individu_formatees[$annee_obs][$titre_stade][$numero_stade][$observation_individu['oo_id_observation']] = $date_observation_formatee; |
$liste_observation_individu_formatees[$annee_obs][$titre_stade][$numero_stade][$observation_individu['oo_id_observation']] = [ |
'date' => $date_observation_formatee, |
'absence_evenement' => $observation_individu['oo_absence_evenement'] |
]; |
} |
|
} |
|
krsort($liste_observation_individu_formatees); |
107,6 → 108,11 |
} |
} |
|
if(!empty($erreurs)) { |
$this->envoyer($erreurs); |
exit; |
} |
|
if(!isset($params['annee_en_cours'])) { |
$annee_en_cours = date('Y'); |
} else { |
113,15 → 119,10 |
$annee_en_cours = $params['annee_en_cours']; |
} |
|
if(!empty($erreurs)) { |
$this->envoyer($erreurs); |
exit; |
} |
|
$id_participant = $params['id_participant']; |
$id_individu = $params['id_individu']; |
|
$a_modifier_ou_inserer = !empty($params['id_observation']) ? $params['id_observation'] : false; |
$a_modifier = !empty($params['id_observation']) ? $params['id_observation'] : false; |
$retour = array(); |
|
$date_evenement = $this->formaterDateObservationPourBdd($params['date_evenement']); |
150,12 → 151,22 |
'date_evenement' => $date_evenement, |
'id_evenement' => $params['id_evenement'], |
'id_individu' => $params['id_individu'], |
'absence_observation' => 0, |
'commentaire' => ''); |
|
if($a_modifier_ou_inserer) { |
$obs_a_traiter['id_observation'] = $a_modifier_ou_inserer; |
$this->modifierObservation($id_participant, $obs_a_traiter); |
if($a_modifier) { |
$obs_a_traiter['id_observation'] = $a_modifier; |
$retour = $this->modifierObservation($id_participant, $obs_a_traiter); |
} else { |
// le signalement de l'absence d'un stade pour une année et un individu donné est toujours |
// une nouvelle observation (car cela bloque la saisie d'obs supplementaires pour ce stade, |
// cette année et cet individu) |
if(!empty($params['absence_observation']) && $params['absence_observation'] == 1) { |
// si l'observation d'absence concerne l'année en cours on la met à la date du jour |
// sinon on la met arbitrairement au premier janvier de l'année concernée |
$obs_a_traiter['date_evenement'] = ($annee_en_cours == date('Y')) ? date('Y-m-d') : $annee_en_cours.'-01-01'; |
$obs_a_traiter['absence_observation'] = $params['absence_observation']; |
} |
$retour = ['id_observation' => $this->insererObservation($id_participant, $obs_a_traiter)]; |
} |
|
176,7 → 187,7 |
} |
|
$requete_nouvelle_observation = 'INSERT INTO ods_observations '. |
'(oo_ce_participant, oo_ordre, oo_ce_individu, oo_ce_evenement, oo_date, oo_commentaire, oo_date_saisie, oo_date_modification) '. |
'(oo_ce_participant, oo_ordre, oo_ce_individu, oo_ce_evenement, oo_date, oo_commentaire, oo_date_saisie, oo_date_modification, oo_absence_evenement) '. |
'VALUES '. |
'( '. |
$this->proteger($id_participant).','. |
186,7 → 197,8 |
$this->proteger($donnees_obs_a_inserer['date_evenement']).','. |
'"",'. |
'NOW(),'. |
'NOW()'. |
'NOW(),'. |
$this->proteger($donnees_obs_a_inserer['absence_observation']). |
')'; |
|
$this->executerRequeteSimple($requete_nouvelle_observation); |
195,15 → 207,48 |
|
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); |
$requete_obs_existante = 'SELECT * FROM ods_observations '. |
'WHERE oo_id_observation = '.$this->proteger($donnees_obs_a_inserer['id_observation']); |
$obs_existante = $this->executerRequete($requete_obs_existante); |
|
return $this->executerRequeteSimple($requete_modification_observation); |
if(empty($obs_existante)) { |
return false; |
} |
|
$obs_existante = $obs_existante[0]; |
|
$tableau_date = date_parse($donnees_obs_a_inserer['date_evenement']); |
$est_une_suppression_obs = $this->estUneDateInvalide($tableau_date['day'], $tableau_date['month'], $tableau_date['year']); |
|
$resultat = true; |
// Pour supprimer une observation, on indique une date invalide contenant seulement son année. |
// Celle-ci n'est du coup pas supprimée mais plutôt désactivée car le reste du programme |
// ne tient normalement pas compte des obs avec des dates au format 00-00-yyyy (où yyyy est l'année où elle a eu lieu). |
// Ceci permet de garder les données et les faires traiter par Isabelle. |
// TODO: on pourrait faire bien mieux mais ça fonctionne et changer le système demanderait |
// plus de temps mais ça serait une bonne chose à faire. |
// Par contre si c'est une obs de signalement d'absence d'évènement on la supprime carrément |
// car ça n'a pas d'interêt à être gardé (car c'est surement pour saisir une vraie obs après) |
if($est_une_suppression_obs && $obs_existante['oo_absence_evenement'] == 1) { |
|
$requete_suppression_observation = 'DELETE FROM ods_observations '. |
'WHERE oo_id_observation = '.$this->proteger($donnees_obs_a_inserer['id_observation']).' '. |
'AND oo_absence_evenement = 1'; |
|
$this->executerRequeteSimple($requete_suppression_observation); |
} else { |
$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); |
|
$resultat = $this->executerRequeteSimple($requete_modification_observation); |
} |
|
return $resultat; |
} |
|
private function renvoyerIdObservationSiEvenementDejaObserveCetteAnnee($id_evenement, $tableau_observations_cette_annee) { |