Subversion Repositories Applications.annuaire

Rev

Rev 405 | Rev 429 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 405 Rev 423
Line 1... Line 1...
1
<?
1
<?php
2
/**
2
/**
3
* PHP Version 5
3
* PHP Version 5
4
*
4
*
5
* @category  PHP
5
* @category  PHP
6
* @package   annuaire
6
* @package   annuaire
Line 47... Line 47...
47
	 /**
47
	 /**
48
	  *
48
	  *
49
	  * Constructeur sans paramètres
49
	  * Constructeur sans paramètres
50
	 */
50
	 */
51
	public function MessageControleur() {
51
	public function MessageControleur() {
52
 
-
 
53
		$this->__construct();
52
		$this->__construct();
Line 54... Line 53...
54
 
53
 
55
		// doit on modérer ?
54
		// doit on modérer ?
56
		if(Config::get('moderer_mail') != null) {
55
		if(Config::get('moderer_mail') != null) {
Line 88... Line 87...
88
	 * @param string $code_confirmation_inscription code de confirmation à inclure dans le mail
87
	 * @param string $code_confirmation_inscription code de confirmation à inclure dans le mail
89
	 *
88
	 *
90
	 * @return boolean le succès ou l'échec de l'envoi du mail
89
	 * @return boolean le succès ou l'échec de l'envoi du mail
91
	 */
90
	 */
92
	public function envoyerMailConfirmationInscription($adresse_mail, $nom, $prenom, $code_confirmation_inscription) {
91
	public function envoyerMailConfirmationInscription($adresse_mail, $nom, $prenom, $code_confirmation_inscription) {
93
 
-
 
94
		$lien_confirmation_inscription = AppControleur::getUrlConfirmationInscription($code_confirmation_inscription);
92
		$lien_confirmation_inscription = AppControleur::getUrlConfirmationInscription($code_confirmation_inscription);
Line 95... Line 93...
95
		
93
 
96
		$donnees = array('nom' => $nom, 'prenom' => $prenom, 'lien_confirmation_inscription' => $lien_confirmation_inscription);
94
		$donnees = array('nom' => $nom, 'prenom' => $prenom, 'lien_confirmation_inscription' => $lien_confirmation_inscription);
Line 107... Line 105...
107
	 * @param int $id_annuaire l'identifiant d'annuaire
105
	 * @param int $id_annuaire l'identifiant d'annuaire
108
	 * @param string $adresse_mail adresse mail
106
	 * @param string $adresse_mail adresse mail
109
	 * @return boolean le succès ou l'échec de l'envoi du mail
107
	 * @return boolean le succès ou l'échec de l'envoi du mail
110
	 */
108
	 */
111
	public function envoyerMailOubliMdp($id_annuaire,$mail, $nouveau_mdp) {
109
	public function envoyerMailOubliMdp($id_annuaire,$mail, $nouveau_mdp) {
112
 
-
 
113
		$base_url = clone(Registre::getInstance()->get('base_url_application'));
110
		$base_url = clone(Registre::getInstance()->get('base_url_application'));
Line 114... Line 111...
114
		
111
 
115
		$url_cette_page = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
112
		$url_cette_page = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
116
		$url_base = $url_cette_page;
113
		$url_base = $url_cette_page;
Line 176... Line 173...
176
		$resultat_recherche = $resultat_annuaire_mappe['resultat'];
173
		$resultat_recherche = $resultat_annuaire_mappe['resultat'];
177
		$nb_resultats = $resultat_annuaire_mappe['total'];
174
		$nb_resultats = $resultat_annuaire_mappe['total'];
178
		$destinataires = $this->aplatirTableauSansPreserverCles($resultat_recherche);
175
		$destinataires = $this->aplatirTableauSansPreserverCles($resultat_recherche);
Line 179... Line 176...
179
		
176
 
180
		return $this->envoyerMailDirectOuModere($id_annuaire, $expediteur, $destinataires, $sujet, $message);
-
 
181
		
177
		return $this->envoyerMailDirectOuModere($id_annuaire, $expediteur, $destinataires, $sujet, $message);
Line 182... Line 178...
182
	}
178
	}
183
	
179
 
184
	/** Envoie un mail au format texte avec l'adresse de l'utilisateur donné en paramètre,
180
	/** Envoie un mail au format texte avec l'adresse de l'utilisateur donné en paramètre,
Line 229... Line 225...
229
			$destinataires = array($destinataires);
225
			$destinataires = array($destinataires);
230
		}
226
		}
Line 231... Line 227...
231
		
227
 
232
		$message_antislashe = $this->encoderChainePourEnvoiMail($message);
228
		$message_antislashe = $this->encoderChainePourEnvoiMail($message);
233
		$message_texte = $this->filtrerChaine($message_antislashe);
-
 
234
		
229
		$message_texte = $this->filtrerChaine($message_antislashe);
Line 235... Line 230...
235
		$message_html = $message_antislashe;
230
		$message_html = $message_antislashe;
Line 236... Line 231...
236
		
231
 
Line 258... Line 253...
258
		// le message en html est préféré s'il est lisible
253
		// le message en html est préféré s'il est lisible
259
		$contenu .= "--".$limite."\n";
254
		$contenu .= "--".$limite."\n";
260
		$contenu .= "Content-Type: text/html;";
255
		$contenu .= "Content-Type: text/html;";
261
		$contenu .= "charset=\"".Config::get('appli_encodage')."\";\n";
256
		$contenu .= "charset=\"".Config::get('appli_encodage')."\";\n";
262
		$contenu .= "Content-Transfer-Encoding: 7bit;\n\n";
257
		$contenu .= "Content-Transfer-Encoding: 7bit;\n\n";
263
		$contenu .= $message_antislashe."\n";
258
		$contenu .= $message_html."\n";
Line 264... Line 259...
264
		
259
 
Line 265... Line 260...
265
		$contenu .= "--".$limite."--\n";
260
		$contenu .= "--".$limite."--\n";
266
						
261
 
267
		$sujet = $this->encoderChainePourEnvoiMail($sujet);
262
		$sujet = $this->encoderChainePourEnvoiMail($sujet);
268
 
-
 
269
		foreach($destinataires as $destinataire) {
263
		$ok = true;
-
 
264
		foreach ($destinataires as $destinataire) {
270
									
265
			$ok = mail($destinataire, mb_encode_mimeheader($sujet), $contenu, $entetes);
271
			if (!mail('aurelien@tela-botanica.org', mb_encode_mimeheader($sujet), $contenu, $entetes)) {
266
			if (!$ok) {
272
				return false;
267
				break;
273
			}		
-
 
274
		}
268
			}
275
		
269
		}
Line 276... Line 270...
276
		return true;
270
		return $ok;
277
	}
271
	}
278
	
272
 
279
	public function envoyerMailAvecPieceJointe($expediteur, $destinataires, $sujet, $message, $piece_jointe = null, $nom_fichier, $type_mime = 'text/plain') {
273
	public function envoyerMailAvecPieceJointe($expediteur, $destinataires, $sujet, $message, $piece_jointe = null, $nom_fichier, $type_mime = 'text/plain') {
Line 280... Line 274...
280
		if (!is_array($destinataires)) {
274
		if (!is_array($destinataires)) {
281
			$destinataires = array($destinataires);
275
			$destinataires = array($destinataires);
282
		}
276
		}
Line 283... Line 277...
283
		
277
 
284
		$message_antislashe = $this->encoderChainePourEnvoiMail($message);
278
		$message_antislashe = $this->encoderChainePourEnvoiMail($message);
Line 285... Line 279...
285
		$message_texte = $this->filtrerChaine($message);
279
		$message_texte = $this->filtrerChaine($message);
Line 322... Line 316...
322
		$contenu .= "--".$limite_partie_message."\n";
316
		$contenu .= "--".$limite_partie_message."\n";
323
		$contenu .= "Content-Type: text/html;";
317
		$contenu .= "Content-Type: text/html;";
324
		$contenu .= "charset=\"".Config::get('appli_encodage')."\";\n";
318
		$contenu .= "charset=\"".Config::get('appli_encodage')."\";\n";
325
		$contenu .= "Content-Transfer-Encoding: 7bit;\n";
319
		$contenu .= "Content-Transfer-Encoding: 7bit;\n";
326
		$contenu .= "\n";
320
		$contenu .= "\n";
327
		$contenu .= nl2br($message_antislashe)."\n";
321
		$contenu .= $message_html."\n";
Line 328... Line 322...
328
		
322
 
Line 329... Line 323...
329
		$contenu .= "\n--".$limite_partie_message."--\n";
323
		$contenu .= "\n--".$limite_partie_message."--\n";
Line 330... Line 324...
330
			
324
 
331
		$contenu .= "--".$limite."\n";
325
		$contenu .= "--".$limite."\n";
332
		
-
 
333
		// Seconde sous partie : pièce jointe
326
 
Line 334... Line 327...
334
		if ($piece_jointe != null) {
327
		// Seconde sous partie : pièce jointe
335
				
328
		if ($piece_jointe != null) {
336
			$attachment = chunk_split(base64_encode($piece_jointe));
329
			$attachment = chunk_split(base64_encode($piece_jointe));
337
			
330
 
Line 338... Line 331...
338
			$contenu .= "Content-Type: ".$type_mime."; name=\"".$nom_fichier."\"\n";
331
			$contenu .= "Content-Type: ".$type_mime."; name=\"".$nom_fichier."\"\n";
339
			$contenu .= "Content-Transfer-Encoding: base64\n";
332
			$contenu .= "Content-Transfer-Encoding: base64\n";
340
			$contenu .= "Content-Disposition: attachment; filename=\"".$nom_fichier."\"\n";
-
 
341
			$contenu .= "X-Attachment-Id: ".md5($attachment)."\n\n";
333
			$contenu .= "Content-Disposition: attachment; filename=\"".$nom_fichier."\"\n";
Line 342... Line 334...
342
			
334
			$contenu .= "X-Attachment-Id: ".md5($attachment)."\n\n";
343
			$contenu .= $attachment;
335
 
344
			$contenu .= "\n--".$limite."--\n";
336
			$contenu .= $attachment;
Line 362... Line 354...
362
	 * @param string $sujet sujet du message
354
	 * @param string $sujet sujet du message
363
	 * @param string $message corps du message
355
	 * @param string $message corps du message
364
	 * @param string $donnees_sup tableau d'informations supplémentaires à joindre au message
356
	 * @param string $donnees_sup tableau d'informations supplémentaires à joindre au message
365
	 */
357
	 */
366
	public function envoyerMailDirectOuModere($id_annuaire, $expediteur, $destinataires, $sujet = '', $message = '') {
358
	public function envoyerMailDirectOuModere($id_annuaire, $expediteur, $destinataires, $sujet = '', $message = '') {
367
		
-
 
368
		$donnees['erreurs'] = false;
359
		$donnees['erreurs'] = false;
Line 369... Line 360...
369
		
360
 
370
		if(!Registre::getInstance()->get('est_admin')) {
361
		if (!Registre::getInstance()->get('est_admin')) {
371
			$donnees['contenu_message'] = $this->filtrerChaine($message);
362
			$donnees['contenu_message'] = $this->filtrerChaine($message);
Line 390... Line 381...
390
			$donnees['erreurs'] = true;
381
			$donnees['erreurs'] = true;
391
			$donnees['pas_de_message'] = true;
382
			$donnees['pas_de_message'] = true;
392
		}
383
		}
Line 393... Line 384...
393
				
384
 
394
		if(!$donnees['erreurs'])  {
-
 
395
			
385
		if (!$donnees['erreurs'])  {
Line 396... Line 386...
396
			$template_mail = 'mail_messagerie';
386
			$template_mail = 'mail_messagerie';
397
			
387
 
398
			if(Registre::getInstance()->get('est_admin')) {
388
			if(Registre::getInstance()->get('est_admin')) {
Line 441... Line 431...
441
		
431
 
442
		return $destinataires_mails;
432
		return $destinataires_mails;
Line 443... Line 433...
443
	}
433
	}
444
	
-
 
445
	private function envoyerCopieMessageAuModerateur($id_annuaire, $expediteur, $sujet, $destinataires, $message) {
434
 
446
		
435
	private function envoyerCopieMessageAuModerateur($id_annuaire, $expediteur, $sujet, $destinataires, $message) {
447
		$donnees['expediteur_message'] = $expediteur;
436
		$donnees['expediteur_message'] = $expediteur;
Line 448... Line 437...
448
		$donnees['sujet_message'] = $sujet;
437
		$donnees['sujet_message'] = $sujet;
Line 465... Line 454...
465
	/**
454
	/**
466
	 * Retrouve les informations d'un mail en attente de modération et envoie le mail
455
	 * Retrouve les informations d'un mail en attente de modération et envoie le mail
467
	 * @param string $code_confirmation le code associé au données en attente
456
	 * @param string $code_confirmation le code associé au données en attente
468
	 */
457
	 */
469
	public function envoyerMailModere($code_confirmation) {
458
	public function envoyerMailModere($code_confirmation) {
470
 
-
 
471
		// chargement des données temporaire
459
		// chargement des données temporaire
472
		$message_modele = $this->getModele('DonneeTemporaireModele');
460
		$message_modele = $this->getModele('DonneeTemporaireModele');
473
		$mail_a_moderer = $message_modele->chargerDonneeTemporaire($code_confirmation);
461
		$mail_a_moderer = $message_modele->chargerDonneeTemporaire($code_confirmation);
Line 474... Line 462...
474
 
462
 
Line 484... Line 472...
484
			} else {
472
			} else {
485
				$donnees = array('envoi_echoue' => true);
473
				$donnees = array('envoi_echoue' => true);
486
			}
474
			}
Line 487... Line 475...
487
			
475
 
488
			$supression_donnees_temp = $message_modele->supprimerDonneeTemporaire($code_confirmation);
-
 
489
			
476
			$supression_donnees_temp = $message_modele->supprimerDonneeTemporaire($code_confirmation);
490
		} else {
477
		} else {
491
			$donnees = array('message_inexistant' => true);
478
			$donnees = array('message_inexistant' => true);
Line 492... Line 479...
492
		}
479
		}
Line 498... Line 485...
498
	/**
485
	/**
499
	 * Supprime un mail en attente de modération grâce au code donné en paramètre
486
	 * Supprime un mail en attente de modération grâce au code donné en paramètre
500
	 * @param string $code_confirmation le code associé au données en attente
487
	 * @param string $code_confirmation le code associé au données en attente
501
	 */
488
	 */
502
	public function supprimerMailModere($code_confirmation) {
489
	public function supprimerMailModere($code_confirmation) {
503
 
-
 
504
		$message_modele = $this->getModele('DonneeTemporaireModele');
490
		$message_modele = $this->getModele('DonneeTemporaireModele');
505
		$supression_donnees_temp = $message_modele->supprimerDonneeTemporaire($code_confirmation);
491
		$supression_donnees_temp = $message_modele->supprimerDonneeTemporaire($code_confirmation);
Line 506... Line 492...
506
		
492
 
Line 517... Line 503...
517
	 * @param array $destinataires les destinataires du mail
503
	 * @param array $destinataires les destinataires du mail
518
	 * @param string $sujet sujet du message
504
	 * @param string $sujet sujet du message
519
	 * @param string $message corps du message
505
	 * @param string $message corps du message
520
	 */
506
	 */
521
	private function stockerMailPourModeration($expediteur ,$destinataires, $sujet, $message) {
507
	private function stockerMailPourModeration($expediteur ,$destinataires, $sujet, $message) {
522
 
-
 
523
		$mail = array('expediteur' => $expediteur,
508
		$mail = array('expediteur' => $expediteur,
524
				 	'destinataires' => $destinataires,
509
			'destinataires' => $destinataires,
525
					'sujet' => $sujet,
510
			'sujet' => $sujet,
526
					'message' => $message);
511
			'message' => $message);
Line 530... Line 515...
530
 
515
 
531
		if($id_stockage) {
516
		if ($id_stockage) {
532
			$this->envoyerMailModeration($id_stockage, $expediteur ,$destinataires, $sujet , $message);
517
			$this->envoyerMailModeration($id_stockage, $expediteur ,$destinataires, $sujet , $message);
533
			return true;
518
			return true;
534
		}
-
 
535
 
519
		}
536
		return false;
-
 
537
 
520
		return false;
Line 538... Line 521...
538
	}
521
	}
539
 
522
 
540
	/**
523
	/**
541
	 * Envoie un mail au modérateur contenant les liens pour, au choix, refuser ou bien accepter l'envoi du mail
524
	 * Envoie un mail au modérateur contenant les liens pour, au choix, refuser ou bien accepter l'envoi du mail
542
	 * @param int $id_mail_a_moderer identifiant du mail à modérer (dans la table des données temporaires)
525
	 * @param int $id_mail_a_moderer identifiant du mail à modérer (dans la table des données temporaires)
543
	 * @param string $sujet_message_a_moderer sujet du message
526
	 * @param string $sujet_message_a_moderer sujet du message
544
	 * @param string $message_a_moderer corps du message
527
	 * @param string $message_a_moderer corps du message
545
	 */
-
 
546
	private function envoyerMailModeration($id_mail_a_moderer, $expediteur, $destinataires, $sujet_message_a_moderer, $message_a_moderer) {
528
	 */
547
 
529
	private function envoyerMailModeration($id_mail_a_moderer, $expediteur, $destinataires, $sujet_message_a_moderer, $message_a_moderer) {
Line 548... Line 530...
548
		$url_cette_page = $this->getUrlCettePage();
530
		$url_cette_page = $this->getUrlCettePage();
Line 577... Line 559...
577
		}
559
		}
Line 578... Line 560...
578
 
560
 
Line 579... Line 561...
579
		$contenu_mail = $this->getVue(Config::get('dossier_squelettes_mails').'mail_moderation_message',$donnees);
561
		$contenu_mail = $this->getVue(Config::get('dossier_squelettes_mails').'mail_moderation_message',$donnees);
580
 
-
 
581
		return $this->envoyerMail($this->adresse_mail_annuaire, $this->mail_moderateur, 'Un message est en attente de modération', $contenu_mail);
562
 
Line 582... Line 563...
582
 
563
		return $this->envoyerMail($this->adresse_mail_annuaire, $this->mail_moderateur, 'Un message est en attente de modération', $contenu_mail);
Line 583... Line 564...
583
	}
564
	}
Line -... Line 565...
-
 
565
 
-
 
566
 
-
 
567
	public function afficherMailsEnAttenteModeration() {
-
 
568
 
584
	
569
	}
-
 
570
 
-
 
571
	/** Transforme automatiquement le message html en message txt.
585
 
572
	 *
-
 
573
	 * Réalise un strip_tags et avant ça un remplacement des liens sur mesure pour les mettre au format email txt.
-
 
574
	 */
-
 
575
	private function filtrerChaine($messageHtml) {
-
 
576
		$html = $this->ajouterHrefDansBalise($messageHtml);
-
 
577
		$messageTxt = strip_tags($html);
-
 
578
		return $messageTxt;
-
 
579
	}
-
 
580
 
-
 
581
	/**
-
 
582
	 * Extrait la valeur de l'attribut href des balises HTML de liens (a) et ajoute le lien entre
-
 
583
	 * chevrons (<>) dans le contenu de la balise "a".
-
 
584
	 */
-
 
585
	private function ajouterHrefDansBalise($html) {
-
 
586
		$dom = new DOMDocument;
-
 
587
		$dom->loadHTML($html);
-
 
588
		foreach ($dom->getElementsByTagName('a') as $node) {
-
 
589
			if ($node->hasAttribute( 'href' )) {
586
	public function afficherMailsEnAttenteModeration() {
590
				$href = $node->getAttribute('href');
Line 587... Line 591...
587
			
591
				$node->nodeValue = $node->nodeValue." < $href >";
588
	}
592
			}
589
	
593
		}