Subversion Repositories eFlore/Applications.del

Rev

Rev 1728 | Rev 1730 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1728 Rev 1729
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
 * Le script récupère tous les commentaires et déterminations fait ce jour et envoie un mail
4
 * Le script récupère tous les commentaires et déterminations fait ce jour et envoie un mail
5
 * aux auteurs des observations récapitulant celle-ci
5
 * aux auteurs des observations récapitulant celle-ci
6
 *
6
 *
7
 * @category	php 5.4
7
 * @category	php 5.4
8
 * @package		DEL
8
 * @package		DEL
9
 * @subpackage 	Scripts
9
 * @subpackage 	Scripts
10
 * @author		Aurélien PERONNET <aurelien@tela-botanica.org>
10
 * @author		Aurélien PERONNET <aurelien@tela-botanica.org>
11
 * @copyright	Copyright (c) 2012-2014, Tela Botanica (accueil@tela-botanica.org)
11
 * @copyright	Copyright (c) 2012-2014, Tela Botanica (accueil@tela-botanica.org)
12
 * @license		CeCILL v2 http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt
12
 * @license		CeCILL v2 http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt
13
 * @license		GNU-GPL http://www.gnu.org/licenses/gpl.html
13
 * @license		GNU-GPL http://www.gnu.org/licenses/gpl.html
14
 */
14
 */
15
 
15
 
16
class AlerteMailCommentaires {
16
class AlerteMailCommentaires {
17
 
17
 
18
	private $conteneur;
18
	private $conteneur;
19
	private $testeurCourriel = null;
19
	private $testeurCourriel = null;
20
	private $recapitulatifAdmin = [];
20
	private $recapitulatifAdmin = [];
21
	private $messageRecapitulatif = null;
21
	private $messageRecapitulatif = null;
22
 
22
 
23
	private $observations_concernees = array();
23
	private $observations_concernees = array();
24
	private $correspondance_id_obs_auteurs = array();
24
	private $correspondance_id_obs_auteurs = array();
25
 
25
 
26
	public function __construct($conteneur) {
26
	public function __construct($conteneur) {
27
		$this->conteneur = $conteneur;
27
		$this->conteneur = $conteneur;
28
	}
28
	}
29
 
29
 
30
	public function executer() {
30
	public function executer() {
31
		try {
31
		try {
32
			$this->verifierModeUtilisation();
32
			$this->verifierModeUtilisation();
33
			$observations = $this->chargerObservationsCommentees();
33
			$observations = $this->chargerObservationsCommentees();
34
			if (!empty($observations)) {
34
			if (!empty($observations)) {
35
				$this->formaterObservations($observations);
35
				$this->formaterObservations($observations);
36
				$commentaires = $this->chargerCommentairesDuJour();
36
				$commentaires = $this->chargerCommentairesDuJour();
37
				$this->formaterCommentaires($commentaires);
37
				$this->formaterCommentaires($commentaires);
38
				$this->envoyerMessageAuxDestinataires();
38
				$this->envoyerMessageAuxDestinataires();
39
			}
39
			}
40
		} catch (Exception $e) {
40
		} catch (Exception $e) {
41
			$this->traiterErreur($e->getMessage());
41
			$this->traiterErreur($e->getMessage());
42
		}
42
		}
43
	}
43
	}
44
 
44
 
45
	private function verifierModeUtilisation() {
45
	private function verifierModeUtilisation() {
46
		$testeurCourriel = $this->conteneur->getParametre('t');
46
		$testeurCourriel = $this->conteneur->getParametre('t');
47
		if ($testeurCourriel) {
47
		if ($testeurCourriel) {
48
			if (filter_var($testeurCourriel, FILTER_VALIDATE_EMAIL)) {
48
			if (filter_var($testeurCourriel, FILTER_VALIDATE_EMAIL)) {
49
				$this->testeurCourriel = $testeurCourriel;
49
				$this->testeurCourriel = $testeurCourriel;
50
			} else {
50
			} else {
51
				$msg = "Veuillez indiquer une adresse de courriel valide à la suite du paramètre «-t».";
51
				$msg = "Veuillez indiquer une adresse de courriel valide à la suite du paramètre «-t».";
52
				new Exception($msg);
52
				new Exception($msg);
53
			}
53
			}
54
		}
54
		}
55
	}
55
	}
56
 
56
 
57
	private function chargerObservationsCommentees() {
57
	private function chargerObservationsCommentees() {
58
		// Seuls les utilisateurs ayant explicitement refusé le mail sont ignorés
58
		// Seuls les utilisateurs ayant explicitement refusé le mail sont ignorés
59
		$preferences = $this->conteneur->getBdd()->proteger('%"mail_notification_mes_obs":"0"%');
59
		$preferences = $this->conteneur->getBdd()->proteger('%"mail_notification_mes_obs":"0"%');
60
		//TODO: optimiser la requête si beaucoup de mails sont envoyés
60
		//TODO: optimiser la requête si beaucoup de mails sont envoyés
61
		$requete = "SELECT * FROM del_observation AS do ".
61
		$requete = "SELECT * FROM del_observation AS do ".
62
			"WHERE do.id_observation IN ".
62
			"WHERE do.id_observation IN ".
63
				"( ".
63
				"( ".
64
					//TODO: essayer de factoriser cette sous requete entre ici et la fonction du dessus
64
					//TODO: essayer de factoriser cette sous requete entre ici et la fonction du dessus
65
					"SELECT dc.ce_observation ".
65
					"SELECT dc.ce_observation ".
66
					"FROM del_commentaire AS dc ".
66
					"FROM del_commentaire AS dc ".
67
					"WHERE dc.ce_observation != '0' ".
67
					"WHERE dc.ce_observation != '0' ".
68
					"AND dc.id_commentaire NOT IN ".
68
					"AND dc.id_commentaire NOT IN ".
69
					"( ".
69
					"( ".
70
					"	SELECT dc.id_commentaire ".
70
					"	SELECT dc.id_commentaire ".
71
					"	FROM del_commentaire AS dc, del_observation AS dob".
71
					"	FROM del_commentaire AS dc, del_observation AS dob".
72
					"	WHERE dc.nom_sel = dob.nom_sel ".
72
					"	WHERE dc.nom_sel = dob.nom_sel ".
73
					"		AND dc.ce_utilisateur = dob.ce_utilisateur ".
73
					"		AND dc.ce_utilisateur = dob.ce_utilisateur ".
74
					"		AND dc.ce_observation = dob.id_observation ".
74
					"		AND dc.ce_observation = dob.id_observation ".
75
					") ".
75
					") ".
76
					"AND TO_DAYS(NOW()) - TO_DAYS(dc.date) <= 1 ".
76
					"AND TO_DAYS(NOW()) - TO_DAYS(dc.date) <= 1 ".
77
				") ".
77
				") ".
78
				"AND do.ce_utilisateur NOT IN ".
78
				"AND do.ce_utilisateur NOT IN ".
79
					"( ".
79
					"( ".
80
					"	SELECT id_utilisateur ".
80
					"	SELECT id_utilisateur ".
81
					"	FROM del_utilisateur_infos ".
81
					"	FROM del_utilisateur_infos ".
82
					"	WHERE preferences LIKE $preferences ".
82
					"	WHERE preferences LIKE $preferences ".
83
					") ".
83
					") ".
84
			"ORDER BY do.ce_utilisateur, do.id_observation ";
84
			"ORDER BY do.ce_utilisateur, do.id_observation ";
85
		$observations = $this->conteneur->getBdd()->recupererTous($requete);
85
		$observations = $this->conteneur->getBdd()->recupererTous($requete);
86
		return $observations;
86
		return $observations;
87
	}
87
	}
88
 
88
 
89
	private function formaterObservations($liste_obs) {
89
	private function formaterObservations($liste_obs) {
90
		foreach ($liste_obs as $obs) {
90
		foreach ($liste_obs as $obs) {
91
			$id_obs = $obs['id_observation'];
91
			$id_obs = $obs['id_observation'];
92
			$auteur_obs = $obs['ce_utilisateur'];
92
			$auteur_obs = $obs['ce_utilisateur'];
93
			$obs['date'] = $this->formaterDateObs($obs['date_observation']);
93
			$obs['date'] = $this->formaterDateObs($obs['date_observation']);
94
			$obs['lieu'] = $this->formaterLieuObservation($obs);
94
			$obs['lieu'] = $this->formaterLieuObservation($obs);
95
			$obs['lien'] = $this->obtenirLienFicheObs($obs['id_observation']);
95
			$obs['lien'] = $this->obtenirLienFicheObs($obs['id_observation']);
96
			$obs['commentaires'] = array();
96
			$obs['commentaires'] = array();
97
			$this->correspondance_id_obs_auteurs[$id_obs] = $auteur_obs;
97
			$this->correspondance_id_obs_auteurs[$id_obs] = $auteur_obs;
98
			$this->observations_concernees[$auteur_obs][$id_obs] = $obs;
98
			$this->observations_concernees[$auteur_obs][$id_obs] = $obs;
99
		}
99
		}
100
	}
100
	}
101
 
101
 
102
	private function formaterDateObs($date) {
102
	private function formaterDateObs($date) {
103
		$time = strtotime($date);
103
		$time = strtotime($date);
104
		return date('d/m/Y', $time);
104
		return date('d/m/Y', $time);
105
	}
105
	}
106
 
106
 
107
	private function formaterLieuObservation($obs) {
107
	private function formaterLieuObservation($obs) {
108
		$lieux = array();
108
		$lieux = array();
109
		if (!empty($obs['zone_geo'])) {
109
		if (!empty($obs['zone_geo'])) {
110
			$zone_geo = $obs['zone_geo'];
110
			$zone_geo = $obs['zone_geo'];
111
			$zone_geo.= (!empty($obs['ce_zone_geo']) ? ' ('.$this->convertirCodeZoneGeoVersDepartement($obs['ce_zone_geo']).')' : '');
111
			$zone_geo.= (!empty($obs['ce_zone_geo']) ? ' ('.$this->convertirCodeZoneGeoVersDepartement($obs['ce_zone_geo']).')' : '');
112
			$lieux[] = $zone_geo;
112
			$lieux[] = $zone_geo;
113
		}
113
		}
114
		if (!empty($obs['lieudit'])) {
114
		if (!empty($obs['lieudit'])) {
115
			$lieux[] = $obs['lieudit'];
115
			$lieux[] = $obs['lieudit'];
116
		}
116
		}
117
		if (!empty($obs['station'])) {
117
		if (!empty($obs['station'])) {
118
			$lieux[] = $obs['station'];
118
			$lieux[] = $obs['station'];
119
		}
119
		}
120
		return implode(' > ', $lieux);
120
		return implode(' > ', $lieux);
121
	}
121
	}
122
 
122
 
123
 
123
 
124
	private function convertirCodeZoneGeoVersDepartement($code_zone_geo) {
124
	private function convertirCodeZoneGeoVersDepartement($code_zone_geo) {
125
		$code_departement = '';
125
		$code_departement = '';
126
		if ($this->estUnCodeInseeDepartement($code_zone_geo)) {
126
		if ($this->estUnCodeInseeDepartement($code_zone_geo)) {
127
			$code_departement = substr(ltrim($code_zone_geo, 'INSEE-C:'), 0, 2);
127
			$code_departement = substr(ltrim($code_zone_geo, 'INSEE-C:'), 0, 2);
128
		}
128
		}
129
		return $code_departement;
129
		return $code_departement;
130
	}
130
	}
131
 
131
 
132
	private function estUnCodeInseeDepartement($code_a_tester) {
132
	private function estUnCodeInseeDepartement($code_a_tester) {
133
		return preg_match('/^INSEE-C:[0-9]{5}/', $code_a_tester);
133
		return preg_match('/^INSEE-C:[0-9]{5}/', $code_a_tester);
134
	}
134
	}
135
 
135
 
136
	private function obtenirLienFicheObs($id_obs) {
136
	private function obtenirLienFicheObs($id_obs) {
137
		return sprintf($this->conteneur->getParametre('url_fiche_observation'), $id_obs);
137
		return sprintf($this->conteneur->getParametre('url_fiche_observation'), $id_obs);
138
	}
138
	}
139
 
139
 
140
	protected function chargerCommentairesDuJour() {
140
	protected function chargerCommentairesDuJour() {
141
		$preferences = $this->conteneur->getBdd()->proteger('%"mail_notification_mes_obs":"0"%');
141
		$preferences = $this->conteneur->getBdd()->proteger('%"mail_notification_mes_obs":"0"%');
142
		// TODO: optimiser la requête si beaucoup de mails sont envoyés
142
		// TODO: optimiser la requête si beaucoup de mails sont envoyés
143
		$requete = "SELECT * ".
143
		$requete = "SELECT * ".
144
			"FROM del_commentaire AS dc ".
144
			"FROM del_commentaire AS dc ".
145
			"WHERE dc.ce_observation != '0' ".
145
			"WHERE dc.ce_observation != '0' ".
146
			"AND dc.id_commentaire NOT IN ".
146
			"AND dc.id_commentaire NOT IN ".
147
			"( ".
147
			"( ".
148
			"	SELECT dc.id_commentaire ".
148
			"	SELECT dc.id_commentaire ".
149
			"	FROM del_commentaire AS dc, del_observation AS dob".
149
			"	FROM del_commentaire AS dc, del_observation AS dob".
150
			"	WHERE dc.nom_sel = dob.nom_sel ".
150
			"	WHERE dc.nom_sel = dob.nom_sel ".
151
			"		AND dc.ce_utilisateur = dob.ce_utilisateur ".
151
			"		AND dc.ce_utilisateur = dob.ce_utilisateur ".
152
			"		AND dc.ce_observation = dob.id_observation ".
152
			"		AND dc.ce_observation = dob.id_observation ".
153
			") ".
153
			") ".
154
			"AND dc.ce_utilisateur NOT IN ".
154
			"AND dc.ce_utilisateur NOT IN ".
155
			"( ".
155
			"( ".
156
			"	SELECT id_utilisateur ".
156
			"	SELECT id_utilisateur ".
157
			"	FROM del_utilisateur_infos ".
157
			"	FROM del_utilisateur_infos ".
158
			"	WHERE preferences LIKE $preferences ".
158
			"	WHERE preferences LIKE $preferences ".
159
			") ".
159
			") ".
160
			"AND TO_DAYS(NOW()) - TO_DAYS(dc.date) <= 1 ".
160
			"AND TO_DAYS(NOW()) - TO_DAYS(dc.date) <= 1 ".
161
			"ORDER BY dc.ce_observation";
161
			"ORDER BY dc.ce_observation";
162
		$commentaires = $this->conteneur->getBdd()->recupererTous($requete);
162
		$commentaires = $this->conteneur->getBdd()->recupererTous($requete);
163
		return $commentaires;
163
		return $commentaires;
164
	}
164
	}
165
 
165
 
166
	protected function formaterCommentaires($liste_commentaires) {
166
	protected function formaterCommentaires($liste_commentaires) {
167
		foreach ($liste_commentaires as $commentaire) {
167
		foreach ($liste_commentaires as $commentaire) {
168
			$id_obs = $commentaire['ce_observation'];
168
			$id_obs = $commentaire['ce_observation'];
169
			if (isset($this->correspondance_id_obs_auteurs[$commentaire['ce_observation']])) {
169
			if (isset($this->correspondance_id_obs_auteurs[$commentaire['ce_observation']])) {
170
				$id_auteur_obs = $this->correspondance_id_obs_auteurs[$commentaire['ce_observation']];
170
				$id_auteur_obs = $this->correspondance_id_obs_auteurs[$commentaire['ce_observation']];
171
				$commentaire['auteur'] = $this->formaterAuteur($commentaire);
171
				$commentaire['auteur'] = $this->formaterAuteur($commentaire);
172
				$this->observations_concernees[$id_auteur_obs][$id_obs]['commentaires'][] = $commentaire;
172
				$this->observations_concernees[$id_auteur_obs][$id_obs]['commentaires'][] = $commentaire;
173
			}
173
			}
174
		}
174
		}
175
	}
175
	}
176
 
176
 
177
	private function formaterAuteur($commentaire) {
177
	private function formaterAuteur($commentaire) {
178
		return $commentaire['utilisateur_prenom'].' '.$commentaire['utilisateur_nom'];
178
		return $commentaire['utilisateur_prenom'].' '.$commentaire['utilisateur_nom'];
179
	}
179
	}
180
 
180
 
181
	protected function envoyerMessageAuxDestinataires() {
181
	protected function envoyerMessageAuxDestinataires() {
182
		foreach ($this->observations_concernees as $auteurId => $liste_obs) {
182
		foreach ($this->observations_concernees as $auteurId => $liste_obs) {
183
			$donnees = $this->formaterDonneesPourMessage($liste_obs);
183
			$donnees = $this->formaterDonneesPourMessage($liste_obs);
184
			$messageTxt = $this->formaterMessageTxt($donnees);
184
			$messageTxt = $this->formaterMessageTxt($donnees);
185
			$messageHtml = $this->formaterMessageHtml($donnees);
185
			$messageHtml = $this->formaterMessageHtml($donnees);
186
			$this->recapitulatifAdmin[$auteurId] = array('txt' => $messageTxt, 'html' => $messageHtml);
186
			$this->recapitulatifAdmin[$auteurId] = array('txt' => $messageTxt, 'html' => $messageHtml);
187
 
187
 
188
			if ($this->testeurCourriel == null) {
188
			if ($this->testeurCourriel == null) {
189
				$this->envoyerMessage($messageHtml, $messageTxt, $auteurId);
189
				$this->envoyerMessage($messageHtml, $messageTxt, $auteurId);
190
			}
190
			}
191
		}
191
		}
192
		if ($this->testeurCourriel == null) {
192
		if ($this->testeurCourriel == null) {
193
			$this->envoyerMessageRecap();
193
			$this->envoyerMessageRecap();
194
		}
194
		}
195
		$this->envoyerMessagesTesteur();
195
		$this->envoyerMessagesTesteur();
196
	}
196
	}
197
 
197
 
198
	private function formaterMessageHtml($donnees) {
198
	private function formaterMessageHtml($donnees) {
199
		$squelette = dirname(__FILE__).DS.'squelettes'.DS.'commentaires.tpl.html';
199
		$squelette = dirname(__FILE__).DS.'squelettes'.DS.'commentaires.tpl.html';
200
		$squelettePhp = $this->conteneur->getSquelettePhp();
200
		$squelettePhp = $this->conteneur->getSquelettePhp();
201
		$msgHtml = $squelettePhp->analyser($squelette, $donnees);
201
		$msgHtml = $squelettePhp->analyser($squelette, $donnees);
202
		return $msgHtml;
202
		return $msgHtml;
203
	}
203
	}
204
 
204
 
205
	private function formaterMessageTxt($donnees) {
205
	private function formaterMessageTxt($donnees) {
206
		$squelette = dirname(__FILE__).DS.'squelettes'.DS.'commentaires.tpl.txt';
206
		$squelette = dirname(__FILE__).DS.'squelettes'.DS.'commentaires.tpl.txt';
207
		$squelettePhp = $this->conteneur->getSquelettePhp();
207
		$squelettePhp = $this->conteneur->getSquelettePhp();
208
		$msgTxt = $squelettePhp->analyser($squelette, $donnees);
208
		$msgTxt = $squelettePhp->analyser($squelette, $donnees);
209
		// Nettoyage des tabulations pour indentation du code PHP
209
		// Nettoyage des tabulations pour indentation du code PHP
210
		$msgTxt = str_replace("\t", '', $msgTxt);
210
		$msgTxt = str_replace("\t", '', $msgTxt);
211
		return $msgTxt;
211
		return $msgTxt;
212
	}
212
	}
213
 
213
 
214
	private function formaterDonneesPourMessage($liste_obs) {
214
	private function formaterDonneesPourMessage($liste_obs) {
215
		$donnees = array();
215
		$donnees = array();
216
		// copie de la première obs pour en obtenir le nom et prénom de l'auteur
216
		// copie de la première obs pour en obtenir le nom et prénom de l'auteur
217
		// (en deux fois pour éviter un warning en mode strict)
217
		// (en deux fois pour éviter un warning en mode strict)
218
		$valeurs = array_values($liste_obs);
218
		$valeurs = array_values($liste_obs);
219
		$premiere_obs = array_shift($valeurs);
219
		$premiere_obs = array_shift($valeurs);
220
		$donnees['liste_observations'] = $liste_obs;
220
		$donnees['liste_observations'] = $liste_obs;
221
		$donnees['auteur_formate'] = ucfirst($premiere_obs['prenom_utilisateur']).' '.ucfirst($premiere_obs['nom_utilisateur']);
221
		$donnees['auteur_formate'] = ucfirst($premiere_obs['prenom_utilisateur']).' '.ucfirst($premiere_obs['nom_utilisateur']);
222
 
222
 
223
		return $donnees;
223
		return $donnees;
224
	}
224
	}
225
 
225
 
226
	private function envoyerMessage($messageHtml, $messageTxt, $id_destinataire) {
226
	private function envoyerMessage($messageHtml, $messageTxt, $id_destinataire) {
227
		$url = sprintf($this->conteneur->getParametre('url_service_messagerie'), $id_destinataire);
227
		$url = sprintf($this->conteneur->getParametre('url_service_messagerie'), $id_destinataire);
228
		$donnees = array(
228
		$donnees = array(
229
			'utilisateur_courriel' => $this->conteneur->getParametre('adresse_expediteur_recapitulatif'),
229
			'utilisateur_courriel' => $this->conteneur->getParametre('adresse_expediteur_recapitulatif'),
230
			'format' => 'html',
230
			'format' => 'html',
231
			'sujet' => $this->conteneur->getParametre('titre_message_recapitulatif'),
231
			'sujet' => $this->conteneur->getParametre('titre_message_recapitulatif'),
232
			'message' => $messageHtml,
232
			'message' => $messageHtml,
233
			'message_txt' => $messageTxt
233
			'message_txt' => $messageTxt
234
		);
234
		);
235
 
235
 
236
		$clientRest = $this->conteneur->getRestClient();
236
		$clientRest = $this->conteneur->getRestClient();
237
		$clientRest->modifier($url, $donnees);
237
		$clientRest->modifier($url, $donnees);
238
	}
238
	}
239
 
239
 
240
	private function envoyerMessageRecap() {
240
	private function envoyerMessageRecap() {
241
		$msgRecap = $this->obtenirMessageRecap();
241
		$msgRecap = $this->obtenirMessageRecap();
242
		$sujet = "IdentiPlante : récapitulatif envoies alertes commentaires";
242
		$sujet = "IdentiPlante : récapitulatif envoies alertes commentaires";
243
		$messagerie = $this->conteneur->getMessagerie();
243
		$messagerie = $this->conteneur->getMessagerie();
244
		$destinataire = $this->conteneur->getParametre('email_recap');
244
		$destinataire = $this->conteneur->getParametre('email_recap');
245
		$messagerie->envoyerTxt($destinataire, $sujet, $msgRecap);
245
		$messagerie->envoyerTxt($destinataire, $sujet, $msgRecap);
246
	}
246
	}
247
 
247
 
248
	private function obtenirMessageRecap() {
248
	private function obtenirMessageRecap() {
249
		if ($this->messageRecapitulatif == null) {
249
		if ($this->messageRecapitulatif == null) {
250
			$msgRecap = '';
250
			$msgRecap = '';
251
			$separateur = str_repeat('-', 50);
251
			$separateur = str_repeat('-', 50);
252
			$utilisateursIntitules = $this->obtenirInfosUtilisateurs();
252
			$utilisateursIntitules = $this->obtenirInfosUtilisateurs();
253
			foreach ($this->recapitulatifAdmin as $utilisateurId => $message) {
253
			foreach ($this->recapitulatifAdmin as $utilisateurId => $message) {
254
				$messageTxt = $message['txt'];
254
				$messageTxt = $message['txt'];
255
				$intitule = $utilisateursIntitules[$utilisateurId];
255
				$intitule = $utilisateursIntitules[$utilisateurId];
256
				$msgRecap .= "Message envoyé à : $intitule\n$messageTxt\n$separateur\n";
256
				$msgRecap .= "Message envoyé à : $intitule\n$messageTxt\n$separateur\n";
257
			}
257
			}
258
			$intituleRecap = implode("\n", $utilisateursIntitules);
258
			$intituleRecap = implode("\n", $utilisateursIntitules);
259
 
259
 
260
			$msgTpl = "Messages envoyés aux utilisateurs suivant :\n%s\n%s\n%s";
260
			$msgTpl = "Messages envoyés aux utilisateurs suivant :\n%s\n%s\n%s";
261
			$this->messageRecapitulatif = sprintf($msgTpl, $intituleRecap, $separateur, $msgRecap);
261
			$this->messageRecapitulatif = sprintf($msgTpl, $intituleRecap, $separateur, $msgRecap);
262
		}
262
		}
263
		return $this->messageRecapitulatif;
263
		return $this->messageRecapitulatif;
264
	}
264
	}
265
 
265
 
266
	private function envoyerMessagesTesteur() {
266
	private function envoyerMessagesTesteur() {
267
		if ($this->testeurCourriel != null) {
267
		if ($this->testeurCourriel != null) {
268
			$messagerie = $this->conteneur->getMessagerie();
268
			$messagerie = $this->conteneur->getMessagerie();
269
 
269
 
270
			$sujet = "TESTEUR : récapitulatif envoies alertes commentaires";
270
			$sujet = "TESTEUR : récapitulatif envoies alertes commentaires";
271
			$msgRecap = $this->obtenirMessageRecap();
271
			$msgRecap = $this->obtenirMessageRecap();
272
			$messagerie->envoyerTxt($this->testeurCourriel, $sujet, $msgRecap);
272
			$messagerie->envoyerTxt($this->testeurCourriel, $sujet, $msgRecap);
273
 
273
 
274
			$message = array_shift($this->recapitulatifAdmin);
274
			$message = array_shift($this->recapitulatifAdmin);
275
			$sujet = "TESTEUR : exemple message HTML - alerte commentaire";
275
			$sujet = "TESTEUR : exemple message HTML - alerte commentaire";
276
			$messagerie->envoyerHtml($this->testeurCourriel, $sujet, $message['html'], $message['txt']);
276
			$messagerie->envoyerHtml($this->testeurCourriel, $sujet, $message['html'], $message['txt']);
277
 
277
 
278
			$sujet = "TESTEUR : exemple message TXT - alerte commentaire";
278
			$sujet = "TESTEUR : exemple message TXT - alerte commentaire";
279
			$messagerie->envoyerTxt($this->testeurCourriel, $sujet, $message['txt']);
279
			$messagerie->envoyerTxt($this->testeurCourriel, $sujet, $message['txt']);
280
		}
280
		}
281
	}
281
	}
282
 
282
 
283
	private function obtenirInfosUtilisateurs() {
283
	private function obtenirInfosUtilisateurs() {
284
		$clientRest = $this->conteneur->getRestClient();
284
		$clientRest = $this->conteneur->getRestClient();
285
		$urlTpl = $this->conteneur->getParametre('url_service_utilisateur');
285
		$urlTpl = $this->conteneur->getParametre('url_service_utilisateur');
286
		$idUtilisateurs = array_keys($this->recapitulatifAdmin);
286
		$idUtilisateurs = array_keys($this->recapitulatifAdmin);
287
		$utilisateursIntitules = [];
287
		$utilisateursIntitules = [];
288
		foreach ($idUtilisateurs as $utilisateurId) {
288
		foreach ($idUtilisateurs as $utilisateurId) {
289
			$url = sprintf($urlTpl, $utilisateurId);
289
			$url = sprintf($urlTpl, $utilisateurId);
290
			$json = $clientRest->consulter($url);
290
			$json = $clientRest->consulter($url);
291
			$infosUtilisateur = json_decode($json);
291
			$infosUtilisateur = json_decode($json);
292
			if (isset($infosUtilisateur->courriel) && isset($infosUtilisateur->intitule)) {
292
			if (isset($infosUtilisateur->courriel) && isset($infosUtilisateur->intitule)) {
293
				$prenomNom = $infosUtilisateur->nom.' '.$infosUtilisateur->prenom;
293
				$prenomNom = $infosUtilisateur->nom.' '.$infosUtilisateur->prenom;
294
				$pseudo = $infosUtilisateur->pseudoUtilise ? ' ['.$infosUtilisateur->pseudo.']' : '';
294
				$pseudo = $infosUtilisateur->pseudoUtilise ? ' ['.$infosUtilisateur->pseudo.']' : '';
295
				$courriel = $infosUtilisateur->courriel;
295
				$courriel = $infosUtilisateur->courriel;
296
				$intitule = "$prenomNom $pseudo ($courriel) - id#$utilisateurId";
296
				$intitule = "$prenomNom $pseudo ($courriel) - id#$utilisateurId";
297
			} else {
297
			} else {
298
				$intitule = "Utilisateur avec id $utilisateurId introuvable";
298
				$intitule = "Utilisateur avec id $utilisateurId introuvable";
299
			}
299
			}
300
			$utilisateursIntitules[$intitule] = $utilisateurId;
300
			$utilisateursIntitules[$utilisateurId] = $intitule;
301
		}
301
		}
302
		ksort($utilisateursIntitules);
302
		asort($utilisateursIntitules);
303
		$utilisateursIntitules = array_flip($utilisateursIntitules);
-
 
304
		return $utilisateursIntitules;
303
		return $utilisateursIntitules;
305
	}
304
	}
306
}
305
}