Line 18... |
Line 18... |
18 |
//TODO: cette classe est en doublon avec du code de l'annuaire
|
18 |
//TODO: cette classe est en doublon avec du code de l'annuaire
|
19 |
// une fois passé à la dernière version du framework, il faudrait factoriser ces fonctions
|
19 |
// une fois passé à la dernière version du framework, il faudrait factoriser ces fonctions
|
20 |
// dans une lib commune accessible aux scripts et au code standard
|
20 |
// dans une lib commune accessible aux scripts et au code standard
|
21 |
const STATUT_A_TRAITER = 'a_traiter';
|
21 |
const STATUT_A_TRAITER = 'a_traiter';
|
22 |
const STATUT_EN_TRAITEMENT = 'en_traitement';
|
22 |
const STATUT_EN_TRAITEMENT = 'en_traitement';
|
- |
|
23 |
const STATUT_EN_ECHEC = 'en_echec';
|
Line 23... |
Line 24... |
23 |
|
24 |
|
24 |
// Définit le délai au bout du quel on remet des mails en traitement à traiter
|
25 |
// Définit le délai au bout du quel on remet des mails en traitement à traiter
|
25 |
// au format (avec la syntaxe utilisée avec INTERVAL en SQL)
|
26 |
// au format (avec la syntaxe utilisée avec INTERVAL en SQL)
|
26 |
// http://dev.mysql.com/doc/refman/5.0/fr/date-and-time-functions.html
|
27 |
// http://dev.mysql.com/doc/refman/5.0/fr/date-and-time-functions.html
|
Line 48... |
Line 49... |
48 |
}
|
49 |
}
|
49 |
}
|
50 |
}
|
Line 50... |
Line 51... |
50 |
|
51 |
|
51 |
private function traiterMailsEnAttente() {
|
52 |
private function traiterMailsEnAttente() {
|
52 |
// Gaston Lagaffe
|
53 |
// Gaston Lagaffe
|
53 |
$mails_en_retard = $this->remettreATraiterMailsEnRetard();
|
54 |
$mails_en_retard = $this->traiterMailsEnRetard();
|
Line 54... |
Line 55... |
54 |
$mails_a_traiter = $this->obtenirMailsEnAttente();
|
55 |
$mails_a_traiter = $this->obtenirMailsEnAttente();
|
55 |
|
56 |
|
56 |
$retour = array();
|
57 |
$retour = array();
|
Line 97... |
Line 98... |
97 |
// TODO: Que faire si l'envoi de mail d'avertissement échoue également ?
|
98 |
// TODO: Que faire si l'envoi de mail d'avertissement échoue également ?
|
98 |
$envoi_avertissement = $this->envoyerMail(Config::get('adresse_mail_annuaire'),
|
99 |
$envoi_avertissement = $this->envoyerMail(Config::get('adresse_mail_annuaire'),
|
99 |
Config::get('mail_moderateur'),
|
100 |
Config::get('mail_moderateur'),
|
100 |
$sujet,
|
101 |
$sujet,
|
101 |
$corps_mail_echoue);
|
102 |
$corps_mail_echoue);
|
- |
|
103 |
// echo pour que bash capte la sortie et stocke dans le log
|
- |
|
104 |
echo 'Envoi du mail au moderateur pour signaler un echec '."--";
|
- |
|
105 |
return $envoi_avertissement;
|
- |
|
106 |
}
|
- |
|
107 |
|
- |
|
108 |
private function avertirModerateurEchecTraitement($mails_en_echec) {
|
Line -... |
Line 109... |
- |
|
109 |
|
- |
|
110 |
$ids_mails_en_echec = array();
|
- |
|
111 |
foreach($mails_en_echec as $mail_echec) {
|
- |
|
112 |
$ids_mails_en_echec[] = $mail_echec['adt_id'];
|
- |
|
113 |
}
|
- |
|
114 |
|
- |
|
115 |
$corps_mail_mal_traite = "Échec de traitement pour : ".implode(',', $ids_mails_en_echec)." depuis plus de ".self::DELAI_MAX_TRAITEMENT." <br />";
|
- |
|
116 |
$sujet = "Un ou plusieurs mails sont en échec de traitement";
|
- |
|
117 |
|
- |
|
118 |
$envoi_avertissement = $this->envoyerMail(Config::get('adresse_mail_annuaire'),
|
- |
|
119 |
Config::get('mail_moderateur'),
|
- |
|
120 |
$sujet,
|
- |
|
121 |
$corps_mail_mal_traite);
|
- |
|
122 |
|
- |
|
123 |
// echo pour que bash capte la sortie et stocke dans le log
|
102 |
|
124 |
echo 'Envoi du mail au moderateur pour signaler un traitement en echec depuis trop longtemps '."--";
|
103 |
return $envoi_avertissement;
|
125 |
return $envoi_avertissement;
|
Line 104... |
Line 126... |
104 |
}
|
126 |
}
|
105 |
|
127 |
|
106 |
private function obtenirMailsEnAttente() {
|
128 |
private function obtenirMailsEnAttente() {
|
107 |
$requete = "SELECT * FROM annu_donnees_temp WHERE adt_statut = '".self::STATUT_A_TRAITER."' ";
|
- |
|
- |
|
129 |
$requete = "SELECT * FROM annu_donnees_temp WHERE adt_statut = '".self::STATUT_A_TRAITER."' ";
|
- |
|
130 |
$retour = $this->bdd->recupererTous($requete);
|
108 |
$retour = $this->bdd->recupererTous($requete);
|
131 |
// echo pour que bash capte la sortie et stocke dans le log
|
109 |
|
132 |
echo 'Il y a '.count($retour).' mails en attente '."--";
|
Line 110... |
Line 133... |
110 |
return $retour;
|
133 |
return $retour;
|
111 |
}
|
134 |
}
|
112 |
|
135 |
|
113 |
private function mettreMailsEnCoursDeTraitement() {
|
136 |
private function mettreMailsEnCoursDeTraitement() {
|
- |
|
137 |
$requete = "UPDATE annu_donnees_temp SET adt_statut = '".self::STATUT_EN_TRAITEMENT."', adt_date_debut_traitement = NOW() ".
|
- |
|
138 |
"WHERE adt_statut = '".self::STATUT_A_TRAITER."' ";
|
114 |
$requete = "UPDATE annu_donnees_temp SET adt_statut = '".self::STATUT_EN_TRAITEMENT."', adt_date_debut_traitement = NOW() ".
|
139 |
$maj = $this->bdd->executer($requete);
|
115 |
"WHERE adt_statut = '".self::STATUT_A_TRAITER."' ";
|
140 |
// echo pour que bash capte la sortie et stocke dans le log
|
Line 116... |
Line 141... |
116 |
$maj = $this->bdd->requeter($requete);
|
141 |
echo $maj.' mails ont été mis en traitement '."--";
|
117 |
return ($maj !== false);
|
142 |
return ($maj !== false);
|
Line 125... |
Line 150... |
125 |
|
150 |
|
126 |
$requete = "UPDATE annu_donnees_temp ".
|
151 |
$requete = "UPDATE annu_donnees_temp ".
|
127 |
"SET adt_donnees = '".$mail_mal_traite."' ".
|
152 |
"SET adt_donnees = '".$mail_mal_traite."' ".
|
Line 128... |
Line 153... |
128 |
"WHERE adt_id = '".$mail_a_moderer['adt_id']."'";
|
153 |
"WHERE adt_id = '".$mail_a_moderer['adt_id']."'";
|
129 |
|
154 |
|
130 |
$maj = $this->bdd->requeter($requete);
|
155 |
$maj = $this->bdd->executer($requete);
|
Line 131... |
Line 156... |
131 |
return $maj;
|
156 |
return $maj;
|
132 |
}
|
157 |
}
|
133 |
|
158 |
|
- |
|
159 |
private function supprimerMailTraite($id) {
|
- |
|
160 |
$requete = "DELETE FROM annu_donnees_temp WHERE adt_statut = '".self::STATUT_EN_TRAITEMENT."' ".
|
134 |
private function supprimerMailTraite($id) {
|
161 |
"AND adt_id = '".$id."'";
|
135 |
$requete = "DELETE FROM annu_donnees_temp WHERE adt_statut = '".self::STATUT_EN_TRAITEMENT."' ".
|
162 |
// echo pour que bash capte la sortie et stocke dans le log
|
136 |
"AND adt_id = '".$id."'";
|
163 |
echo'Suppression du mail '.$id.' qui a ete traite '."--";
|
Line 137... |
Line 164... |
137 |
$supp = $this->bdd->requeter($requete);
|
164 |
$supp = $this->bdd->executer($requete);
|
138 |
return $supp;
|
165 |
return $supp;
|
139 |
}
|
166 |
}
|
140 |
|
167 |
|
141 |
private function supprimerMailsEnCoursDeTraitement() {
|
168 |
private function supprimerMailsEnCoursDeTraitement() {
|
Line 142... |
Line 169... |
142 |
$requete = "DELETE FROM annu_donnees_temp WHERE adt_statut = '".self::STATUT_EN_TRAITEMENT."' ";
|
169 |
$requete = "DELETE FROM annu_donnees_temp WHERE adt_statut = '".self::STATUT_EN_TRAITEMENT."' ";
|
143 |
$supp = $this->bdd->requeter($requete);
|
170 |
$supp = $this->bdd->executer($requete);
|
144 |
return $supp;
|
171 |
return $supp;
|
145 |
}
|
172 |
}
|
146 |
|
173 |
|
147 |
private function remettreATraiterMailsEnRetard() {
|
174 |
private function traiterMailsEnRetard() {
|
Line 148... |
Line 175... |
148 |
// Les mails a traiter depuis plus de 10 heures sont considérés comme échoués et donc remis à traiter
|
175 |
// Les mails a traiter depuis plus de 10 heures sont considérés comme échoués et donc remis à traiter
|
- |
|
176 |
// (en cas de plantage du script ou du serveur de mail pendant leur traitement)
|
- |
|
177 |
$requete = "UPDATE annu_donnees_temp SET adt_statut = '".self::STATUT_EN_ECHEC."', adt_date_debut_traitement = NULL ".
|
149 |
// (en cas de plantage du script ou du serveur de mail pendant leur traitement)
|
178 |
"WHERE adt_statut = '".self::STATUT_EN_TRAITEMENT."' ".
|
- |
|
179 |
"AND adt_date_debut_traitement < (DATE_SUB(now(), INTERVAL ".self::DELAI_MAX_TRAITEMENT.")) ";
|
- |
|
180 |
|
- |
|
181 |
$maj = $this->bdd->executer($requete);
|
- |
|
182 |
// echo pour que bash capte la sortie et stocke dans le log
|
- |
|
183 |
echo 'Gestion des mails en retard '."--";
|
- |
|
184 |
if($maj !== false) {
|
- |
|
185 |
$requete = "SELECT * FROM annu_donnees_temp WHERE adt_statut = '".self::STATUT_EN_ECHEC."'";
|
- |
|
186 |
$mails_en_echec = $this->bdd->recupererTous($requete);
|
150 |
$requete = "UPDATE annu_donnees_temp SET adt_statut = '".self::STATUT_A_TRAITER."', adt_date_debut_traitement = NULL ".
|
187 |
// echo pour que bash capte la sortie et stocke dans le log
|
Line 151... |
Line 188... |
151 |
"WHERE adt_statut = '".self::STATUT_EN_TRAITEMENT."' ".
|
188 |
echo 'Avertissement, des mails sont en retard : '.count($mails_en_echec)."--";
|
152 |
"AND adt_date_debut_traitement < (DATE_SUB(now(), INTERVAL ".self::DELAI_MAX_TRAITEMENT.")) ";
|
189 |
$this->avertirModerateurEchecTraitement($mails_en_echec);
|
153 |
|
190 |
}
|
Line 214... |
Line 251... |
214 |
$resultats_envois_echoues = array();
|
251 |
$resultats_envois_echoues = array();
|
215 |
$ok = true;
|
252 |
$ok = true;
|
216 |
foreach ($destinataires as $destinataire) {
|
253 |
foreach ($destinataires as $destinataire) {
|
217 |
$ok = mail($destinataire, $sujetEncode, $contenu, $entetes);
|
254 |
$ok = mail($destinataire, $sujetEncode, $contenu, $entetes);
|
218 |
if (!$ok) {
|
255 |
if (!$ok) {
|
- |
|
256 |
// echo pour que bash capte la sortie et stocke dans le log
|
- |
|
257 |
echo'Echec envoi a '.$destinataire."\n";
|
219 |
$resultats_envois_echoues[] = $destinataire;
|
258 |
$resultats_envois_echoues[] = $destinataire;
|
220 |
}
|
259 |
}
|
221 |
}
|
260 |
}
|
222 |
return $resultats_envois_echoues;
|
261 |
return $resultats_envois_echoues;
|
223 |
}
|
262 |
}
|