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']); |
} |
} |