Subversion Repositories Applications.annuaire

Rev

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

Rev 14 Rev 32
1
<?php
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
7
* @author    aurelien <aurelien@tela-botanica.org>
7
* @author    aurelien <aurelien@tela-botanica.org>
8
* @copyright 2010 Tela-Botanica
8
* @copyright 2010 Tela-Botanica
9
* @license   http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
9
* @license   http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
10
* @version   SVN: <svn_id>
10
* @version   SVN: <svn_id>
11
* @link      /doc/annuaire/
11
* @link      /doc/annuaire/
12
*/
12
*/
-
 
13
 
-
 
14
/**
-
 
15
 * Controleur permettant l'abonnement à une liste de diffusion
-
 
16
 * à travers un mécanisme de mail ou de web services
13
 
17
 */
-
 
18
class LettreControleur extends Controleur {
-
 
19
 
-
 
20
	/** Adresse de base des web services
14
class LettreControleur extends Controleur {
21
	 * ex : http://mail.domaine.com/
15
 
22
	 */
-
 
23
	private $adresse_service_lettre = null;
-
 
24
 
-
 
25
	/**
-
 
26
	 * Nom du service permettant de s'inscrire
16
	private $chemin_script_inscription_lettre = null;
27
	 * ex : inscription.php
17
 
28
	 */
-
 
29
	private $service_inscription_lettre = null;
-
 
30
 
-
 
31
	/**
-
 
32
	 * Nom du service permettant de s'inscrire
18
	private $commande_inscription_lettre = null;
33
	 * ex : desinscription.php
19
 
34
	 */
-
 
35
	private $service_desinscription_lettre = null;
-
 
36
 
-
 
37
	/**
-
 
38
	 * domaine de la liste
20
	private $commande_desinscription_lettre = null;
39
	 * ex : domaine.org
-
 
40
	 */
-
 
41
	private $domaine_lettre = null;
-
 
42
 
-
 
43
	/**
-
 
44
	 * nom de la liste de diffusion
-
 
45
	 * ex : actualite
21
 
46
	 */
-
 
47
	private $nom_lettre = null;
-
 
48
 
-
 
49
	/**
22
	private $chemin_lettre = null;
50
	 * adresse mail d'inscription (si on utilise les mails)
-
 
51
	 */
-
 
52
	private $adresse_inscription_lettre = null;
-
 
53
 
23
 
54
	/**
-
 
55
	 * adresse mail de desinscription (si on utilise les mails)
-
 
56
	 */
-
 
57
	private $adresse_desinscription_lettre = null;
-
 
58
 
24
	private $adresse_inscription_lettre = null;
59
	/**
-
 
60
	 * indique si on utilise les mails ou non
-
 
61
	 * (si les infos des web services sont entrées, on met cette variable à true)
-
 
62
	 */
25
 
63
	private $utilise_mail = false;
26
	private $adresse_desinscription_lettre = null;
64
 
27
 
65
	/**
28
	private $utilise_mail = false;
66
	 * Constructeur sans paramètres
29
 
67
	 */
30
	public function LettreControleur() {
68
	public function LettreControleur() {
31
 
69
 
32
		$this->__construct();
70
		$this->__construct();
-
 
71
 
33
 
72
		// on charge les variables de classes à partir du fichier de configuration
34
		if(Config::get('chemin_script_inscription_lettre') != null) {
73
		if(Config::get('adresse_service_lettre') != null) {
35
			$this->chemin_script_inscription_lettre = Config::get('chemin_script_inscription_lettre');
74
			$this->adresse_service_lettre = Config::get('adresse_service_lettre');
36
		} else {
75
		} else {
37
			$this->utilise_mail = true;
76
			$this->utilise_mail = true;
38
		}
77
		}
39
 
78
 
40
		if(Config::get('commande_inscription_lettre') != null) {
79
		if(Config::get('service_inscription_lettre') != null) {
41
			$this->commande_inscription = Config::get('commande_inscription_lettre');
80
			$this->service_inscription_lettre = Config::get('service_inscription_lettre');
42
		} else {
81
		} else {
43
			$this->utilise_mail = true;
82
			$this->utilise_mail = true;
44
		}
83
		}
45
 
84
 
46
		if(Config::get('commande_desinscription_lettre') != null) {
85
		if(Config::get('service_desinscription_lettre') != null) {
47
			$this->commande_desinscription_lettre = Config::get('commande_desinscription_lettre');
86
			$this->service_desinscription_lettre = Config::get('service_desinscription_lettre');
48
		} else{
87
		} else{
49
			$this->utilise_mail = true;
88
			$this->utilise_mail = true;
50
		}
89
		}
51
 
90
 
52
		if(Config::get('chemin_lettre') != null) {
91
		if(Config::get('domaine_lettre') != null) {
-
 
92
			$this->domaine_lettre = Config::get('domaine_lettre');
-
 
93
		} else {
-
 
94
			$this->utilise_mail = true;
-
 
95
		}
-
 
96
 
-
 
97
		if(Config::get('nom_lettre') != null) {
53
			$this->chemin_lettre = Config::get('chemin_lettre');
98
			$this->nom_lettre = Config::get('nom_lettre');
54
		} else {
99
		} else {
55
			$this->utilise_mail = true;
100
			$this->utilise_mail = true;
56
		}
101
		}
-
 
102
		// si l'une des variables pour les web services n'est pas valide
-
 
103
 
57
 
104
		// alors on utilise les mails
58
		if(Config::get('adresse_inscription_lettre') != null) {
105
		if(Config::get('adresse_inscription_lettre') != null) {
59
			$this->adresse_inscription_lettre = Config::get('adresse_inscription_lettre');
106
			$this->adresse_inscription_lettre = Config::get('adresse_inscription_lettre');
60
		}
107
		}
61
 
108
 
62
		if(Config::get('adresse_desinscription_lettre') != null) {
109
		if(Config::get('adresse_desinscription_lettre') != null) {
63
			$this->adresse_desinscription_lettre = Config::get('adresse_desinscription_lettre');
110
			$this->adresse_desinscription_lettre = Config::get('adresse_desinscription_lettre');
64
		}
111
		}
65
	}
112
	}
-
 
113
 
-
 
114
	/**
-
 
115
	 * Envoie un mail avec l'adresse de l'utilisateur donné en paramètre,
-
 
116
	 * à l'adresse donnée en paramètre
-
 
117
	 * @param string $adresse l'adresse de la liste à laquelle on veut abonner
-
 
118
	 * @param string $inscrit l'adresse de l'inscrit qui doit être abonné
-
 
119
	 * @param string $sujet sujet du mail
-
 
120
	 * @return boolean true ou false suivant le succès ou non de l'envoi
66
 
121
	 */
67
	private function envoyerMail($adresse, $inscrit, $sujet) {
122
	private function envoyerMail($adresse, $inscrit, $sujet) {
68
 
123
 
69
		 // Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
124
		 // Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
70
	     $entetes  = 'MIME-Version: 1.0' . "\r\n";
125
	     $entetes  = 'MIME-Version: 1.0' . "\r\n";
71
	     $entetes .= 'Content-type: text/html; charset='.Config::get('appli_encodage'). "\r\n";
126
	     $entetes .= 'Content-type: text/html; charset='.Config::get('appli_encodage'). "\r\n";
72
	     // En-têtes additionnels
127
	     // En-têtes additionnels
73
	     $entetes .= 'To: '.$adresse."\r\n";
128
	     $entetes .= 'To: '.$adresse."\r\n";
74
	     $entetes .= 'From: '.$inscrit."\r\n";
129
	     $entetes .= 'From: '.$inscrit."\r\n";
75
 
130
 
76
	     $contenu_mail = '';
131
	     $contenu_mail = '';
77
 
132
 
78
		return mail($adresse, $sujet, $contenu_mail, $entetes);
133
		return mail($adresse, $sujet, $contenu_mail, $entetes);
79
	}
134
	}
-
 
135
 
-
 
136
	/**
-
 
137
	 * Inscrit une adresse à la lettre d'actu
-
 
138
	 * @param string $mail le mail à inscrire à la lettre
-
 
139
	 * @return boolean true ou false suivant le succès de la requete
80
 
140
	 */
81
	public function inscriptionLettreActualite($mail) {
141
	public function inscriptionLettreActualite($mail) {
82
 
142
 
83
		if($this->utilise_mail) {
143
		if($this->utilise_mail) {
84
			return $this->envoyerMail($this->adresse_inscription_lettre, $mail, 'inscription à la lettre d\'actualité');
144
			return $this->envoyerMail($this->adresse_inscription_lettre, $mail, 'inscription à la lettre d\'actualité');
85
		} else {
145
		} else {
86
			//echo 'exec('.$this->commande_inscription_lettre.' '.$this->chemin_lettre.' '.$mail.')';
146
			$params = '?domaine='.$this->domaine_lettre.'&liste='.$this->nom_lettre.'&mail='.$mail;
-
 
147
			//Log::getInstance()->ajouterEntree('lettre','inscription params '.$this->adresse_service_lettre.$this->service_inscription_lettre.$params);
87
			//return exec($this->commande_inscription_lettre.' '.$this->chemin_lettre.' '.$mail);
148
			//return file_get_contents($this->adresse_service_lettre.$this->service_inscription_lettre.$params);
88
		}
149
		}
89
 
150
 
90
	}
151
	}
-
 
152
 
-
 
153
	/**
-
 
154
	 * Desinscrit une adresse à une liste donnée
-
 
155
	 * @param string $mail le mail à desinscrire à la lettre
-
 
156
	 * @return boolean true ou false suivant le succès de la requete
91
 
157
	 */
92
	public function desinscriptionLettreActualite($mail) {
158
	public function desinscriptionLettreActualite($mail) {
93
 
159
 
94
		if($this->utilise_mail) {
160
		if($this->utilise_mail) {
95
			return $this->envoyerMail($this->adresse_inscription_lettre, $mail, 'desinscription à la lettre d\'actualité');
161
			return $this->envoyerMail($this->adresse_inscription_lettre, $mail, 'desinscription à la lettre d\'actualité');
96
		} else {
162
		} else {
97
			//echo 'exec('.$this->commande_desinscription_lettre.' '.$this->chemin_lettre.' '.$mail.')';
163
			$params = '?domaine='.$this->domaine_lettre.'&liste='.$this->nom_lettre.'&mail='.$mail;
-
 
164
			//Log::getInstance()->ajouterEntree('lettre','desinscription params '.$this->adresse_service_lettre.$this->service_desinscription_lettre.$params);
98
			//return exec($this->commande_desinscription_lettre.' '.$this->chemin_lettre.' '.$mail);
165
			//return file_get_contents($this->adresse_service_lettre.$this->service_desinscription_lettre.$params);
99
		}
166
		}
100
 
167
 
101
	}
168
	}
-
 
169
 
-
 
170
	/**
-
 
171
	 * Desinscrit l'ancien mail d'un utilisateur et réinscrit le nouveau
-
 
172
	 * @param string $ancien_mail l'ancien mail à desinscrire à la lettre
-
 
173
	 * @param string $nouveau_mail l'ancien mail à inscrire à la lettre
-
 
174
	 * @return boolean true ou false suivant le succès de la requete
102
 
175
	 */
103
	public function ModificationInscriptionLettreActualite($ancien_mail, $nouveau_mail) {
176
	public function ModificationInscriptionLettreActualite($ancien_mail, $nouveau_mail) {
104
 
177
 
105
		if($this->utilise_mail) {
178
		if($this->utilise_mail) {
106
 
179
 
107
			$adresse_deinscription_lettre = Config::get('adresse_desinscription_lettre');
180
			$adresse_deinscription_lettre = Config::get('adresse_desinscription_lettre');
108
			$suppression_ancien_mail = $this->envoyerMail($adresse_deinscription_lettre, $ancien_mail, 'desinscription à la lettre d\'actualité');
181
			$suppression_ancien_mail = $this->envoyerMail($adresse_deinscription_lettre, $ancien_mail, 'desinscription à la lettre d\'actualité');
109
 
182
 
110
			$adresse_inscription_lettre = Config::get('adresse_inscription_lettre');
183
			$adresse_inscription_lettre = Config::get('adresse_inscription_lettre');
111
			$ajout_nouveau_mail = $this->envoyerMail($adresse_inscription_lettre, $nouveau_mail, 'inscription à la lettre d\'actualité');
184
			$ajout_nouveau_mail = $this->envoyerMail($adresse_inscription_lettre, $nouveau_mail, 'inscription à la lettre d\'actualité');
112
 
185
 
113
			return $suppression_ancien_mail && $ajout_nouveau_mail;
186
			return $suppression_ancien_mail && $ajout_nouveau_mail;
114
		} else {
187
		} else {
115
			$desinscription = $this->desinscriptionLettreActualite($ancien_mail);
188
			$desinscription = $this->desinscriptionLettreActualite($ancien_mail);
116
			$inscription = $this->inscriptionLettreActualite($nouveau_mail);
189
			$inscription = $this->inscriptionLettreActualite($nouveau_mail);
117
 
190
 
118
			return ($desinscription && $inscription);
191
			return ($desinscription && $inscription);
119
		}
192
		}
120
 
193
 
121
	}
194
	}
122
}
195
}
123
?>
196
?>