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 32... |
Line 33... |
32 |
$this->bdd = new Bdd();
|
33 |
$this->bdd = new Bdd();
|
Line 33... |
Line 34... |
33 |
|
34 |
|
34 |
$cmd = $this->getParametre('a');
|
35 |
$cmd = $this->getParametre('a');
|
Line -... |
Line 36... |
- |
|
36 |
$this->mode_verbeux = $this->getParametre('v');
|
- |
|
37 |
|
35 |
$this->mode_verbeux = $this->getParametre('v');
|
38 |
$retour = array();
|
36 |
|
39 |
|
37 |
switch($cmd) {
|
40 |
switch($cmd) {
|
38 |
case "tous":
|
41 |
case "tous":
|
39 |
$retour = $this->traiterMailsEnAttente();
|
42 |
$retour = $this->traiterMailsEnAttente();
|
40 |
break;
|
43 |
break;
|
41 |
// TODO: case supplémentaire pour traiter un mail par son id ?
|
44 |
// TODO: case supplémentaire pour traiter un mail par son id ?
|
42 |
// TODO: option "force" pour traiter les mails quelques soient leur statut ?
|
45 |
// TODO: option "force" pour traiter les mails quelques soient leur statut ?
|
Line 43... |
Line 46... |
43 |
default:
|
46 |
default:
|
- |
|
47 |
}
|
44 |
}
|
48 |
|
45 |
|
49 |
if($this->mode_verbeux) {
|
46 |
if($this->mode_verbeux) {
|
50 |
// echo pour que bash capte la sortie et stocke dans le log
|
Line 47... |
Line 51... |
47 |
print_r($retour);
|
51 |
echo 'Identifiants des mails traites : '.implode(',', $retour)."--";
|
48 |
}
|
52 |
}
|
49 |
}
|
53 |
}
|
50 |
|
54 |
|
Line 51... |
Line 55... |
51 |
private function traiterMailsEnAttente() {
|
55 |
private function traiterMailsEnAttente() {
|
52 |
// Gaston Lagaffe
|
56 |
// Gaston Lagaffe
|
53 |
$mails_en_retard = $this->remettreATraiterMailsEnRetard();
|
57 |
$mails_en_retard = $this->traiterMailsEnRetard();
|
Line 97... |
Line 101... |
97 |
// TODO: Que faire si l'envoi de mail d'avertissement échoue également ?
|
101 |
// TODO: Que faire si l'envoi de mail d'avertissement échoue également ?
|
98 |
$envoi_avertissement = $this->envoyerMail(Config::get('adresse_mail_annuaire'),
|
102 |
$envoi_avertissement = $this->envoyerMail(Config::get('adresse_mail_annuaire'),
|
99 |
Config::get('mail_moderateur'),
|
103 |
Config::get('mail_moderateur'),
|
100 |
$sujet,
|
104 |
$sujet,
|
101 |
$corps_mail_echoue);
|
105 |
$corps_mail_echoue);
|
- |
|
106 |
// echo pour que bash capte la sortie et stocke dans le log
|
- |
|
107 |
echo 'Envoi du mail au moderateur pour signaler un echec '."--";
|
- |
|
108 |
return $envoi_avertissement;
|
- |
|
109 |
}
|
- |
|
110 |
|
- |
|
111 |
private function avertirModerateurEchecTraitement($mails_en_echec) {
|
Line -... |
Line 112... |
- |
|
112 |
|
- |
|
113 |
$ids_mails_en_echec = array();
|
- |
|
114 |
foreach($mails_en_echec as $mail_echec) {
|
- |
|
115 |
$ids_mails_en_echec[] = $mail_echec['adt_id'];
|
- |
|
116 |
}
|
- |
|
117 |
|
- |
|
118 |
$corps_mail_mal_traite = "Échec de traitement pour : ".implode(',', $ids_mails_en_echec)." depuis plus de ".self::DELAI_MAX_TRAITEMENT." <br />";
|
- |
|
119 |
$sujet = "Un ou plusieurs mails sont en échec de traitement";
|
- |
|
120 |
|
- |
|
121 |
$envoi_avertissement = $this->envoyerMail(Config::get('adresse_mail_annuaire'),
|
- |
|
122 |
Config::get('mail_moderateur'),
|
- |
|
123 |
$sujet,
|
- |
|
124 |
$corps_mail_mal_traite);
|
- |
|
125 |
|
- |
|
126 |
// echo pour que bash capte la sortie et stocke dans le log
|
102 |
|
127 |
echo 'Envoi du mail au moderateur pour signaler un traitement en echec depuis trop longtemps '."--";
|
103 |
return $envoi_avertissement;
|
128 |
return $envoi_avertissement;
|
Line 104... |
Line 129... |
104 |
}
|
129 |
}
|
105 |
|
130 |
|
106 |
private function obtenirMailsEnAttente() {
|
131 |
private function obtenirMailsEnAttente() {
|
107 |
$requete = "SELECT * FROM annu_donnees_temp WHERE adt_statut = '".self::STATUT_A_TRAITER."' ";
|
- |
|
- |
|
132 |
$requete = "SELECT * FROM annu_donnees_temp WHERE adt_statut = '".self::STATUT_A_TRAITER."' ";
|
- |
|
133 |
$retour = $this->bdd->recupererTous($requete);
|
108 |
$retour = $this->bdd->recupererTous($requete);
|
134 |
// echo pour que bash capte la sortie et stocke dans le log
|
109 |
|
135 |
echo 'Il y a '.count($retour).' mails en attente '."--";
|
Line 110... |
Line 136... |
110 |
return $retour;
|
136 |
return $retour;
|
111 |
}
|
137 |
}
|
112 |
|
138 |
|
113 |
private function mettreMailsEnCoursDeTraitement() {
|
139 |
private function mettreMailsEnCoursDeTraitement() {
|
- |
|
140 |
$requete = "UPDATE annu_donnees_temp SET adt_statut = '".self::STATUT_EN_TRAITEMENT."', adt_date_debut_traitement = NOW() ".
|
- |
|
141 |
"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() ".
|
142 |
$maj = $this->bdd->executer($requete);
|
115 |
"WHERE adt_statut = '".self::STATUT_A_TRAITER."' ";
|
143 |
// echo pour que bash capte la sortie et stocke dans le log
|
Line 116... |
Line 144... |
116 |
$maj = $this->bdd->requeter($requete);
|
144 |
echo $maj.' mails ont été mis en traitement '."--";
|
117 |
return ($maj !== false);
|
145 |
return ($maj !== false);
|
Line 125... |
Line 153... |
125 |
|
153 |
|
126 |
$requete = "UPDATE annu_donnees_temp ".
|
154 |
$requete = "UPDATE annu_donnees_temp ".
|
127 |
"SET adt_donnees = '".$mail_mal_traite."' ".
|
155 |
"SET adt_donnees = '".$mail_mal_traite."' ".
|
Line 128... |
Line 156... |
128 |
"WHERE adt_id = '".$mail_a_moderer['adt_id']."'";
|
156 |
"WHERE adt_id = '".$mail_a_moderer['adt_id']."'";
|
129 |
|
157 |
|
130 |
$maj = $this->bdd->requeter($requete);
|
158 |
$maj = $this->bdd->executer($requete);
|
Line 131... |
Line 159... |
131 |
return $maj;
|
159 |
return $maj;
|
132 |
}
|
160 |
}
|
133 |
|
161 |
|
- |
|
162 |
private function supprimerMailTraite($id) {
|
- |
|
163 |
$requete = "DELETE FROM annu_donnees_temp WHERE adt_statut = '".self::STATUT_EN_TRAITEMENT."' ".
|
134 |
private function supprimerMailTraite($id) {
|
164 |
"AND adt_id = '".$id."'";
|
135 |
$requete = "DELETE FROM annu_donnees_temp WHERE adt_statut = '".self::STATUT_EN_TRAITEMENT."' ".
|
165 |
// echo pour que bash capte la sortie et stocke dans le log
|
136 |
"AND adt_id = '".$id."'";
|
166 |
echo'Suppression du mail '.$id.' qui a ete traite '."--";
|
Line 137... |
Line 167... |
137 |
$supp = $this->bdd->requeter($requete);
|
167 |
$supp = $this->bdd->executer($requete);
|
138 |
return $supp;
|
168 |
return $supp;
|
139 |
}
|
169 |
}
|
140 |
|
170 |
|
141 |
private function supprimerMailsEnCoursDeTraitement() {
|
171 |
private function supprimerMailsEnCoursDeTraitement() {
|
Line 142... |
Line 172... |
142 |
$requete = "DELETE FROM annu_donnees_temp WHERE adt_statut = '".self::STATUT_EN_TRAITEMENT."' ";
|
172 |
$requete = "DELETE FROM annu_donnees_temp WHERE adt_statut = '".self::STATUT_EN_TRAITEMENT."' ";
|
143 |
$supp = $this->bdd->requeter($requete);
|
173 |
$supp = $this->bdd->executer($requete);
|
144 |
return $supp;
|
174 |
return $supp;
|
145 |
}
|
175 |
}
|
146 |
|
176 |
|
147 |
private function remettreATraiterMailsEnRetard() {
|
177 |
private function traiterMailsEnRetard() {
|
Line 148... |
Line 178... |
148 |
// Les mails a traiter depuis plus de 10 heures sont considérés comme échoués et donc remis à traiter
|
178 |
// Les mails a traiter depuis plus de 10 heures sont considérés comme échoués et donc remis à traiter
|
- |
|
179 |
// (en cas de plantage du script ou du serveur de mail pendant leur traitement)
|
- |
|
180 |
$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)
|
181 |
"WHERE adt_statut = '".self::STATUT_EN_TRAITEMENT."' ".
|
- |
|
182 |
"AND adt_date_debut_traitement < (DATE_SUB(now(), INTERVAL ".self::DELAI_MAX_TRAITEMENT.")) ";
|
- |
|
183 |
|
- |
|
184 |
$maj = $this->bdd->executer($requete);
|
- |
|
185 |
// echo pour que bash capte la sortie et stocke dans le log
|
- |
|
186 |
echo 'Gestion des mails en retard '."--";
|
- |
|
187 |
if($maj !== false) {
|
- |
|
188 |
$requete = "SELECT * FROM annu_donnees_temp WHERE adt_statut = '".self::STATUT_EN_ECHEC."'";
|
- |
|
189 |
$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 ".
|
190 |
// echo pour que bash capte la sortie et stocke dans le log
|
Line 151... |
Line 191... |
151 |
"WHERE adt_statut = '".self::STATUT_EN_TRAITEMENT."' ".
|
191 |
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.")) ";
|
192 |
$this->avertirModerateurEchecTraitement($mails_en_echec);
|
153 |
|
193 |
}
|
Line 214... |
Line 254... |
214 |
$resultats_envois_echoues = array();
|
254 |
$resultats_envois_echoues = array();
|
215 |
$ok = true;
|
255 |
$ok = true;
|
216 |
foreach ($destinataires as $destinataire) {
|
256 |
foreach ($destinataires as $destinataire) {
|
217 |
$ok = mail($destinataire, $sujetEncode, $contenu, $entetes);
|
257 |
$ok = mail($destinataire, $sujetEncode, $contenu, $entetes);
|
218 |
if (!$ok) {
|
258 |
if (!$ok) {
|
- |
|
259 |
// echo pour que bash capte la sortie et stocke dans le log
|
- |
|
260 |
echo'Echec envoi a '.$destinataire."\n";
|
219 |
$resultats_envois_echoues[] = $destinataire;
|
261 |
$resultats_envois_echoues[] = $destinataire;
|
220 |
}
|
262 |
}
|
221 |
}
|
263 |
}
|
222 |
return $resultats_envois_echoues;
|
264 |
return $resultats_envois_echoues;
|
223 |
}
|
265 |
}
|