Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 1746 → Rev 1747

/trunk/scripts/modules/commentaires/AlerteMailCommentaires.php
20,6 → 20,8
private $recapitulatifAdmin = [];
private $messageRecapitulatif = null;
 
private $dateRenvoi = null;
 
private $observations_concernees = array();
private $correspondance_id_obs_auteurs = array();
private $utilisateursInfos = array();
31,6 → 33,7
public function executer() {
try {
$this->verifierModeUtilisation();
$this->verifierDateRenvoi();
$observations = $this->chargerObservationsCommentees();
if (!empty($observations)) {
$this->formaterObservations($observations);
55,9 → 58,23
}
}
 
private function verifierDateRenvoi() {
$dateRenvoi = $this->conteneur->getParametre('d');
if ($dateRenvoi) {
if (preg_match('/^[0-9]{4}-[0-1][0-9]-[0-3][0-9]$/', $dateRenvoi)) {
$this->dateRenvoi = $dateRenvoi;
} else {
$msg = "Veuillez indiquer une date au format yyyy-mm-dd valide à la suite du paramètre «-d».";
new Exception($msg);
}
}
}
 
private function chargerObservationsCommentees() {
// Seuls les utilisateurs ayant explicitement refusé le mail sont ignorés
$preferences = $this->conteneur->getBdd()->proteger('%"mail_notification_mes_obs":"0"%');
$date = ($this->dateRenvoi == null) ? 'NOW()' : "'$this->dateRenvoi'";
 
//TODO: optimiser la requête si beaucoup de mails sont envoyés
$requete = "SELECT * FROM del_observation AS do ".
"WHERE do.id_observation IN ".
74,7 → 91,7
" AND dc.ce_utilisateur = dob.ce_utilisateur ".
" AND dc.ce_observation = dob.id_observation ".
") ".
"AND TO_DAYS(NOW()) - TO_DAYS(dc.date) <= 1 ".
"AND TO_DAYS($date) - TO_DAYS(dc.date) IN (0, 1) ".
") ".
"AND do.ce_utilisateur NOT IN ".
"( ".
157,6 → 174,8
 
protected function chargerCommentairesDuJour() {
$preferences = $this->conteneur->getBdd()->proteger('%"mail_notification_mes_obs":"0"%');
$date = ($this->dateRenvoi == null) ? 'NOW()' : "'$this->dateRenvoi'";
 
// TODO: optimiser la requête si beaucoup de mails sont envoyés
$requete = "SELECT * ".
"FROM del_commentaire AS dc ".
175,7 → 194,7
" FROM del_utilisateur_infos ".
" WHERE preferences LIKE $preferences ".
") ".
"AND TO_DAYS(NOW()) - TO_DAYS(dc.date) <= 1 ".
"AND TO_DAYS($date) - TO_DAYS(dc.date) IN (0, 1) ".
"ORDER BY dc.ce_observation";
$commentaires = $this->conteneur->getBdd()->recupererTous($requete);
return $commentaires;
244,10 → 263,12
 
private function envoyerMessage($messageHtml, $messageTxt, $id_destinataire) {
$url = sprintf($this->conteneur->getParametre('url_service_messagerie'), $id_destinataire);
$dateFmt = $this->formaterDateCourante();
$sujet = sprintf($this->conteneur->getParametre('titre_message_recapitulatif'), $dateFmt);
$donnees = array(
'utilisateur_courriel' => $this->conteneur->getParametre('adresse_expediteur_recapitulatif'),
'format' => 'html',
'sujet' => $this->conteneur->getParametre('titre_message_recapitulatif'),
'sujet' => $sujet,
'message' => $messageHtml,
'message_txt' => $messageTxt
);
256,9 → 277,16
$clientRest->modifier($url, $donnees);
}
 
private function formaterDateCourante() {
$date = ($this->dateRenvoi == null) ? time() : strtotime($this->dateRenvoi);
$dateFmt = date('d-m-Y', $date);
return $dateFmt;
}
 
private function envoyerMessageRecap() {
$msgRecap = $this->obtenirMessageRecap();
$sujet = "IdentiPlante : récapitulatif envoies alertes commentaires";
$dateFmt = $this->formaterDateCourante();
$sujet = "IdentiPlante : récapitulatif envoies alertes commentaires du $dateFmt";
$messagerie = $this->conteneur->getMessagerie();
$destinataire = $this->conteneur->getParametre('email_recap');
$messagerie->envoyerTxt($destinataire, $sujet, $msgRecap);
285,16 → 313,17
private function envoyerMessagesTesteur() {
if ($this->testeurCourriel != null) {
$messagerie = $this->conteneur->getMessagerie();
$dateFmt = $this->formaterDateCourante();
 
$sujet = "TESTEUR : récapitulatif envoies alertes commentaires";
$sujet = "TESTEUR : récapitulatif envoies alertes commentaires - $dateFmt";
$msgRecap = $this->obtenirMessageRecap();
$messagerie->envoyerTxt($this->testeurCourriel, $sujet, $msgRecap);
 
$message = $this->recapitulatifAdmin[array_rand($this->recapitulatifAdmin)];
$sujet = "TESTEUR : exemple message HTML - alerte commentaire";
$sujet = "TESTEUR : exemple message HTML - alerte commentaire - $dateFmt";
$messagerie->envoyerHtml($this->testeurCourriel, $sujet, $message['html'], $message['txt']);
 
$sujet = "TESTEUR : exemple message TXT - alerte commentaire";
$sujet = "TESTEUR : exemple message TXT - alerte commentaire - $dateFmt";
$messagerie->envoyerTxt($this->testeurCourriel, $sujet, $message['txt']);
}
}