Subversion Repositories eFlore/Applications.del

Rev

Rev 1737 | Rev 1752 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1737 Rev 1747
Line 18... Line 18...
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;
Line -... Line 22...
-
 
22
 
-
 
23
	private $dateRenvoi = null;
22
 
24
 
23
	private $observations_concernees = array();
25
	private $observations_concernees = array();
24
	private $messageHtml = null;
26
	private $messageHtml = null;
25
	private $messageTxt = null;
27
	private $messageTxt = null;
Line 30... Line 32...
30
	}
32
	}
Line 31... Line 33...
31
 
33
 
32
	public function executer() {
34
	public function executer() {
33
		try {
35
		try {
-
 
36
			$this->verifierModeUtilisation();
34
			$this->verifierModeUtilisation();
37
			$this->verifierDateRenvoi();
35
			$observations = $this->chargerObsADeterminer();
38
			$observations = $this->chargerObsADeterminer();
36
			if (!empty($observations)) {
39
			if (!empty($observations)) {
37
				$this->formaterObservations($observations);
40
				$this->formaterObservations($observations);
38
				$this->genererMessage();
41
				$this->genererMessage();
Line 53... Line 56...
53
				new Exception($msg);
56
				new Exception($msg);
54
			}
57
			}
55
		}
58
		}
56
	}
59
	}
Line -... Line 60...
-
 
60
 
-
 
61
	private function verifierDateRenvoi() {
-
 
62
		$dateRenvoi = $this->conteneur->getParametre('d');
-
 
63
		if ($dateRenvoi) {
-
 
64
			if (preg_match('/^[0-9]{4}-[0-1][0-9]-[0-3][0-9]$/', $dateRenvoi)) {
-
 
65
				$this->dateRenvoi = $dateRenvoi;
-
 
66
			} else {
-
 
67
				$msg = "Veuillez indiquer une date au format yyyy-mm-dd valide à la suite du paramètre «-d».";
-
 
68
				new Exception($msg);
-
 
69
			}
-
 
70
		}
-
 
71
	}
57
 
72
 
58
	protected function chargerObsADeterminer() {
73
	protected function chargerObsADeterminer() {
-
 
74
		//TODO: optimiser la requête si beaucoup de mails sont envoyés
59
		//TODO: optimiser la requête si beaucoup de mails sont envoyés
75
		$date = ($this->dateRenvoi == null) ? 'CURDATE()' : "'$this->dateRenvoi'";
60
		$requete = "SELECT * ".
76
		$requete = "SELECT * ".
61
			"FROM del_obs_image AS doi ".
77
			"FROM del_obs_image AS doi ".
62
			"	INNER JOIN del_observation AS do ON doi.id_observation = do.id_observation ".
78
			"	INNER JOIN del_observation AS do ON doi.id_observation = do.id_observation ".
63
			"	LEFT JOIN del_utilisateur AS du ON do.ce_utilisateur = du.id_utilisateur AND do.ce_utilisateur != 0 ".
79
			"	LEFT JOIN del_utilisateur AS du ON do.ce_utilisateur = du.id_utilisateur AND do.ce_utilisateur != 0 ".
64
			'WHERE (do.mots_cles_texte LIKE "%aDeterminer%" '.
80
			'WHERE (do.mots_cles_texte LIKE "%aDeterminer%" '.
65
			'		OR nom_sel IS NULL OR nom_sel = "" '.
81
			'		OR nom_sel IS NULL OR nom_sel = "" '.
66
			'		OR nom_ret IS NULL OR nom_ret = "") '.
82
			'		OR nom_ret IS NULL OR nom_ret = "") '.
67
			'	AND ('.
83
			'	AND ('.
68
			'		do.date_transmission > DATE_SUB(CURDATE(), INTERVAL 1 DAY) '.
84
			"		TO_DAYS($date) - TO_DAYS(do.date_transmission) IN (0, 1) ".
69
			'		OR do.date_creation > DATE_SUB(CURDATE(), INTERVAL 1 DAY) '.
85
			"		OR TO_DAYS($date) - TO_DAYS(do.date_creation) IN (0, 1) ".
70
			'		OR do.date_modification > DATE_SUB(CURDATE(), INTERVAL 1 DAY) '.
86
			"		OR TO_DAYS($date) - TO_DAYS(do.date_modification) IN (0, 1) ".
71
			'	) '.
87
			'	) '.
72
			"ORDER BY do.id_observation ";
88
			"ORDER BY do.id_observation ";
73
		$obs = $this->conteneur->getBdd()->recupererTous($requete);
89
		$obs = $this->conteneur->getBdd()->recupererTous($requete);
74
		return $obs;
90
		return $obs;
Line 160... Line 176...
160
		}
176
		}
161
	}
177
	}
Line 162... Line 178...
162
 
178
 
163
	private function envoyerMessageAuxUtilisateurs() {
179
	private function envoyerMessageAuxUtilisateurs() {
164
		$utilisateurs = $this->obtenirDestinatairesMailsRecapitulatif();
180
		$utilisateurs = $this->obtenirDestinatairesMailsRecapitulatif();
165
		foreach ($utilisateurs as $utilisateur) {
181
		foreach ($utilisateurs as $idUtilisateur) {
166
			$this->envoyerMessage($utilisateur['id_utilisateur']);
182
			$this->envoyerMessage($idUtilisateur);
167
		}
183
		}
Line 168... Line 184...
168
	}
184
	}
169
 
185
 
Line 189... Line 205...
189
	 * @param string $message
205
	 * @param string $message
190
	 * @param int $id_destinataire
206
	 * @param int $id_destinataire
191
	 */
207
	 */
192
	private function envoyerMessage($id_destinataire) {
208
	private function envoyerMessage($id_destinataire) {
193
		$url = sprintf($this->conteneur->getParametre('url_service_messagerie'), $id_destinataire);
209
		$url = sprintf($this->conteneur->getParametre('url_service_messagerie'), $id_destinataire);
-
 
210
		$dateFmt = $this->formaterDateCourante();
-
 
211
		$sujet = sprintf($this->conteneur->getParametre('titre_message_recapitulatif_obs'), $dateFmt);
-
 
212
 
194
		$donnees = array(
213
		$donnees = array(
195
			'utilisateur_courriel' => $this->conteneur->getParametre('adresse_expediteur_recapitulatif'),
214
			'utilisateur_courriel' => $this->conteneur->getParametre('adresse_expediteur_recapitulatif'),
196
			'format' => 'html',
215
			'format' => 'html',
197
			'sujet' => $this->conteneur->getParametre('titre_message_recapitulatif_obs'),
216
			'sujet' => $sujet,
198
			'message' => $this->messageHtml,
217
			'message' => $this->messageHtml,
199
			'message_txt' => $this->messageTxt
218
			'message_txt' => $this->messageTxt
200
		);
219
		);
Line 201... Line 220...
201
 
220
 
202
		$clientRest = $this->conteneur->getRestClient();
221
		$clientRest = $this->conteneur->getRestClient();
203
		$clientRest->modifier($url, $donnees);
222
		$clientRest->modifier($url, $donnees);
Line -... Line 223...
-
 
223
	}
-
 
224
 
-
 
225
	private function formaterDateCourante() {
-
 
226
		$date = ($this->dateRenvoi == null) ? time() : strtotime($this->dateRenvoi);
-
 
227
		$dateFmt = date('d-m-Y', $date);
-
 
228
		return $dateFmt;
204
	}
229
	}
205
 
230
 
206
	/** La liste détermination n'étant pas un membre de tela botanica,
231
	/** La liste détermination n'étant pas un membre de tela botanica,
207
	* on lui envoie un message directement
232
	* on lui envoie un message directement
208
	* @return boolean true ou false suivant le succès ou non de l'envoi
233
	* @return boolean true ou false suivant le succès ou non de l'envoi
209
	*/
234
	*/
-
 
235
	private function envoyerMessageListeDetermination() {
210
	private function envoyerMessageListeDetermination() {
236
		$destinataires = $this->conteneur->getParametre('adresse_destinataire_recapitulatif_determination');
Line 211... Line 237...
211
		$destinataires = $this->conteneur->getParametre('adresse_destinataire_recapitulatif_determination');
237
		$dateFmt = $this->formaterDateCourante();
212
		$sujet = $this->conteneur->getParametre('titre_message_recapitulatif_obs');
238
		$sujet = sprintf($this->conteneur->getParametre('titre_message_recapitulatif_obs'), $dateFmt);
213
 
239
 
214
		$messagerie = $this->conteneur->getMessagerie();
240
		$messagerie = $this->conteneur->getMessagerie();
Line 215... Line 241...
215
		$envoieStatut = $messagerie->envoyerHtml($destinataires, $sujet, $this->messageHtml, $this->messageTxt);
241
		$envoieStatut = $messagerie->envoyerHtml($destinataires, $sujet, $this->messageHtml, $this->messageTxt);
216
		return $envoieStatut;
242
		return $envoieStatut;
-
 
243
	}
217
	}
244
 
218
 
245
	private function envoyerMessageRecap() {
219
	private function envoyerMessageRecap() {
246
		$msgRecap = $this->obtenirMessageRecap();
220
		$msgRecap = $this->obtenirMessageRecap();
247
		$dateFmt = $this->formaterDateCourante();
221
		$sujet = "IdentiPlante : récapitulatif envoies alertes à déterminer";
248
		$sujet = "IdentiPlante : récapitulatif envoies alertes à déterminer du $dateFmt";
Line 273... Line 300...
273
	}
300
	}
Line 274... Line 301...
274
 
301
 
275
	private function envoyerMessageTesteur() {
302
	private function envoyerMessageTesteur() {
276
		if ($this->testeurCourriel != null) {
303
		if ($this->testeurCourriel != null) {
-
 
304
			$messagerie = $this->conteneur->getMessagerie();
Line 277... Line 305...
277
			$messagerie = $this->conteneur->getMessagerie();
305
			$dateFmt = $this->formaterDateCourante();
278
 
306
 
279
			$sujet = "TESTEUR : récapitulatif envoies alertes à déterminer";
307
			$sujet = "TESTEUR : récapitulatif envoies alertes à déterminer - $dateFmt";
Line 280... Line 308...
280
			$msgRecap = $this->obtenirMessageRecap();
308
			$msgRecap = $this->obtenirMessageRecap();
281
			$messagerie->envoyerTxt($this->testeurCourriel, $sujet, $msgRecap);
309
			$messagerie->envoyerTxt($this->testeurCourriel, $sujet, $msgRecap);
Line 282... Line 310...
282
 
310
 
283
			$sujet = "TESTEUR : exemple message HTML - alerte à déterminer";
311
			$sujet = "TESTEUR : exemple message HTML - alerte à déterminer - $dateFmt";
284
			$messagerie->envoyerHtml($this->testeurCourriel, $sujet, $this->messageHtml, $this->messageTxt);
312
			$messagerie->envoyerHtml($this->testeurCourriel, $sujet, $this->messageHtml, $this->messageTxt);
285
 
313
 
286
			$sujet = "TESTEUR : exemple message TXT - alerte à déterminer";
314
			$sujet = "TESTEUR : exemple message TXT - alerte à déterminer - $dateFmt";
287
			$messagerie->envoyerTxt($this->testeurCourriel, $sujet, $this->messageTxt);
315
			$messagerie->envoyerTxt($this->testeurCourriel, $sujet, $this->messageTxt);