18,20 → 18,20 |
|
private $parametres; |
private $conteneur; |
|
|
private $observations_concernees = array(); |
private $id_observation_commentees = array(); |
private $correspondance_id_obs_auteurs = array(); |
|
|
public function __construct($parametres, $conteneur) { |
$this->parametres = $parametres; |
$this->conteneur = $conteneur; |
} |
|
|
public function executer() { |
try { |
$observations = $this->chargerObservationsCommentees(); |
if(!empty($observations)) { |
if (!empty($observations)) { |
$this->formaterObservations($observations); |
$commentaires = $this->chargerCommentairesAjourdhui(); |
$this->formaterCommentaires($commentaires); |
42,44 → 42,46 |
} |
} |
|
protected function chargerCommentairesAjourdhui() { |
//TODO: optimiser la requête si beaucoup de mails sont envoyés |
$requete = "SELECT * ". |
"FROM del_commentaire dc ". |
"WHERE dc.ce_observation != '0' ". |
"AND dc.id_commentaire NOT IN ". |
"( ". |
" SELECT dc.id_commentaire ". |
" FROM del_commentaire dc, del_observation dob". |
" WHERE dc.nom_sel = dob.nom_sel ". |
" 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 TO_DAYS(NOW()) - TO_DAYS(dc.date) <= 1 ". |
"ORDER BY dc.ce_observation"; |
protected function chargerCommentairesAjourdhui() { |
$preferences = $this->conteneur->getBdd()->proteger('%"mail_notification_mes_obs":"0"%'); |
// TODO: optimiser la requête si beaucoup de mails sont envoyés |
$requete = "SELECT * ". |
"FROM del_commentaire AS dc ". |
"WHERE dc.ce_observation != '0' ". |
"AND dc.id_commentaire NOT IN ". |
"( ". |
" SELECT dc.id_commentaire ". |
" FROM del_commentaire AS dc, del_observation AS dob". |
" WHERE dc.nom_sel = dob.nom_sel ". |
" 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 $preferences ". |
") ". |
"AND TO_DAYS(NOW()) - TO_DAYS(dc.date) <= 1 ". |
"ORDER BY dc.ce_observation"; |
$commentaires = $this->conteneur->getBdd()->recupererTous($requete); |
return $commentaires; |
} |
|
|
protected function chargerObservationsCommentees() { |
$preferences = $this->conteneur->getBdd()->proteger('%"mail_notification_mes_obs":"0"%'); |
//TODO: optimiser la requête si beaucoup de mails sont envoyés |
$requete = "SELECT * FROM del_observation do ". |
"WHERE do.id_observation IN ". |
"( ". |
"SELECT dc.ce_observation ". |
"FROM del_commentaire dc ". |
$requete = "SELECT * FROM del_observation AS do ". |
"WHERE do.id_observation IN ". |
"( ". |
"SELECT dc.ce_observation ". |
"FROM del_commentaire AS dc ". |
"WHERE dc.ce_observation != '0' ". |
"AND dc.id_commentaire NOT IN ". |
"( ". |
" SELECT dc.id_commentaire ". |
" FROM del_commentaire dc, del_observation dob". |
" WHERE dc.nom_sel = dob.nom_sel ". |
" FROM del_commentaire AS dc, del_observation AS dob". |
" WHERE dc.nom_sel = dob.nom_sel ". |
" AND dc.ce_utilisateur = dob.ce_utilisateur ". |
" AND dc.ce_observation = dob.id_observation ". |
") ". |
87,29 → 89,28 |
"( ". |
" SELECT id_utilisateur ". |
" FROM del_utilisateur_infos ". |
" WHERE preferences LIKE ".$this->conteneur->getBdd()->proteger('%"mail_notification_mes_obs":"0"%')." ". |
" WHERE preferences LIKE $preferences ". |
") ". |
"AND TO_DAYS(NOW()) - TO_DAYS(dc.date) <= 1 ". |
") ". |
") ". |
"ORDER BY do.ce_utilisateur, do.id_observation "; |
$observations = $this->conteneur->getBdd()->recupererTous($requete); |
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); |
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']; |
122,23 → 123,23 |
$this->observations_concernees[$auteur_obs][$id_obs] = $obs; |
} |
} |
|
|
protected function formaterLieuObservation($obs) { |
$lieux = array(); |
if(!empty($obs['zone_geo'])) { |
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'])) { |
if (!empty($obs['lieudit'])) { |
$lieux[] = $obs['lieudit']; |
} |
if(!empty($obs['station'])) { |
if (!empty($obs['station'])) { |
$lieux[] = $obs['station']; |
} |
return implode(" > ", $lieux); |
} |
|
|
protected function formaterCommentaires($liste_commentaires) { |
$liste_commentaires_formatee = array(); |
foreach ($liste_commentaires as $commentaire) { |
150,7 → 151,7 |
} |
} |
} |
|
|
protected function parcourirListeCommentairesEtEnvoyerMessage($liste_obs_a_auteur) { |
foreach ($liste_obs_a_auteur as $auteur => $liste_obs) { |
$message = $this->formaterMessagePourAuteur($liste_obs,$auteur); |
157,7 → 158,7 |
$this->envoyerMessage($message, $auteur); |
} |
} |
|
|
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 |
170,23 → 171,22 |
$this->squelette_dossier = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR; |
return $this->conteneur->traiterSquelettePhp($this->squelette_dossier.'commentaires.tpl.html', $donnees); |
} |
|
|
protected function formaterDateObs($date) { |
$time = strtotime($date); |
return date('d/m/Y', $time); |
return date('d/m/Y', $time); |
} |
|
|
private function formaterAuteur($commentaire) { |
return $commentaire['utilisateur_prenom'].' '.$commentaire['utilisateur_nom']; |
} |
|
|
private function obtenirLienFicheObs($id_obs) { |
return $this->conteneur->formaterUrl(Config::get('url_fiche_observation'), array('id' => $id_obs)); |
return $this->conteneur->formaterUrl(Config::get('url_fiche_observation'), array('id' => $id_obs)); |
} |
|
|
protected function envoyerMessage($message, $auteur) { |
|
$url_requete = $this->conteneur->formaterUrl(Config::get('url_service_messagerie'), array('id' => $auteur)); |
$url_requete = $this->conteneur->formaterUrl(Config::get('url_service_messagerie'), array('id' => $auteur)); |
$post = array( |
'sujet' => Config::get('titre_message_recapitulatif'), |
'message' => $message, |