32,7 → 32,6 |
try { |
$observations = $this->chargerObservationsCommentees(); |
$this->formaterObservations($observations); |
|
$commentaires = $this->chargerCommentairesAjourdhui(); |
$this->formaterCommentaires($commentaires); |
$this->parcourirListeCommentairesEtEnvoyerMessage($this->observations_concernees); |
54,15 → 53,14 |
" AND dc.ce_utilisateur = dob.ce_utilisateur ". |
" AND dc.ce_observation = dob.id_observation ". |
") ". |
"AND dc.ce_utilisateur IN ". |
"AND dc.ce_utilisateur NOT IN ". |
"( ". |
" SELECT id_utilisateur ". |
" FROM del_utilisateur_infos ". |
" WHERE preferences LIKE ".$this->conteneur->getBdd()->proteger('%"mail_notification_mes_obs":"1"%')." ". |
" WHERE preferences LIKE ".$this->conteneur->getBdd()->proteger('%"mail_notification_mes_obs":"0"%')." ". |
") ". |
"AND DATE_FORMAT( dc.date, '%Y-%m-%d' ) = CURDATE() ". |
"ORDER BY dc.ce_observation"; |
|
$commentaires = $this->conteneur->getBdd()->recupererTous($requete); |
return $commentaires; |
} |
83,6 → 81,12 |
" AND dc.ce_utilisateur = dob.ce_utilisateur ". |
" AND dc.ce_observation = dob.id_observation ". |
") ". |
"AND dc.ce_utilisateur NOT IN ". |
"( ". |
" SELECT id_utilisateur ". |
" FROM del_utilisateur_infos ". |
" WHERE preferences LIKE ".$this->conteneur->getBdd()->proteger('%"mail_notification_mes_obs":"0"%')." ". |
") ". |
"AND DATE_FORMAT( dc.date, '%Y-%m-%d' ) = CURDATE()". |
") ". |
"ORDER BY do.ce_utilisateur, do.id_observation "; |
90,11 → 94,26 |
return $observations; |
} |
|
protected function convertirCodeZoneGeoVersDepartement($code_zone_geo) { |
|
$code_departement = ''; |
if($this->estUnCodeInseeDepartement($code_zone_geo)) { |
$code_departement = substr(ltrim($code_zone_geo,'INSEE-C:'),0,2); |
} |
|
return $code_departement; |
} |
|
protected function estUnCodeInseeDepartement($code_a_tester) { |
return preg_match('/^INSEE-C:[0-9]{5}/',$code_a_tester); |
} |
|
protected function formaterObservations($liste_obs) { |
foreach ($liste_obs as $obs) { |
$id_obs = $obs['id_observation']; |
$auteur_obs = $obs['ce_utilisateur']; |
$obs['date'] = $this->formaterDateObs($obs['date_observation']); |
$obs['lieu'] = $this->formaterLieuObservation($obs); |
$obs['lien'] = $this->obtenirLienFicheObs($obs['id_observation']); |
$obs['commentaires'] = array(); |
$this->correspondance_id_obs_auteurs[$id_obs] = $auteur_obs; |
102,13 → 121,31 |
} |
} |
|
protected function formaterLieuObservation($obs) { |
$lieux = array(); |
if(!empty($obs['zone_geo'])) { |
$zone_geo = $obs['zone_geo']; |
$zone_geo.= (!empty($obs['ce_zone_geo']) ? ' ('.$this->convertirCodeZoneGeoVersDepartement($obs['ce_zone_geo']).')' : ''); |
$lieux[] = $zone_geo; |
} |
if(!empty($obs['lieudit'])) { |
$lieux[] = $obs['lieudit']; |
} |
if(!empty($obs['station'])) { |
$lieux[] = $obs['station']; |
} |
return implode(" > ", $lieux); |
} |
|
protected function formaterCommentaires($liste_commentaires) { |
$liste_commentaires_formatee = array(); |
foreach ($liste_commentaires as $commentaire) { |
$id_obs = $commentaire['ce_observation']; |
$auteur_obs = $this->correspondance_id_obs_auteurs[$commentaire['ce_observation']]; |
$commentaire['auteur'] = $this->formaterAuteur($commentaire); |
$this->observations_concernees[$auteur_obs][$id_obs]['commentaires'][] = $commentaire; |
if(isset($this->correspondance_id_obs_auteurs[$commentaire['ce_observation']])) { |
$auteur_obs = $this->correspondance_id_obs_auteurs[$commentaire['ce_observation']]; |
$commentaire['auteur'] = $this->formaterAuteur($commentaire); |
$this->observations_concernees[$auteur_obs][$id_obs]['commentaires'][] = $commentaire; |
} |
} |
} |
|
121,8 → 158,13 |
|
private function formaterMessagePourAuteur($liste_obs, $auteur) { |
$donnees = array(); |
// copie de la première obs pour en obtenir le nom et prénom de l'auteur |
// (en deux fois pour éviter un warning en mode strict |
$valeurs = array_values($liste_obs); |
$premiere_obs = array_shift($valeurs); |
$donnees['liste_observations'] = $liste_obs; |
$donnees['auteur'] = $auteur; |
$donnees['auteur_formate'] = ucfirst($premiere_obs['prenom_utilisateur']).' '.ucfirst($premiere_obs['nom_utilisateur']); |
$this->squelette_dossier = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR; |
return $this->conteneur->traiterSquelettePhp($this->squelette_dossier.'commentaires.tpl.html', $donnees); |
} |