Subversion Repositories Applications.annuaire

Rev

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

Rev 64 Rev 120
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
 
13
 
14
/**
14
/**
15
 * Controleur permettant l'abonnement à une liste de diffusion
15
 * Controleur permettant l'abonnement à une liste de diffusion
16
 * à travers un mécanisme de mail ou de web services
16
 * à travers un mécanisme de mail ou de web services
17
 */
17
 */
18
class LettreControleur extends Controleur {
18
class LettreControleur extends AppControleur {
19
 
19
 
20
	/** Adresse de base des web services
20
	/** Adresse de base des web services
21
	 * ex : http://mail.domaine.com/
21
	 * ex : http://mail.domaine.com/
22
	 */
22
	 */
23
	private $adresse_service_lettre = null;
23
	private $adresse_service_lettre = null;
24
 
24
 
25
	/**
25
	/**
26
	 * Nom du service permettant de s'inscrire
26
	 * Nom du service permettant de s'inscrire
27
	 * ex : inscription.php
27
	 * ex : inscription.php
28
	 */
28
	 */
29
	private $service_inscription_lettre = null;
29
	private $service_inscription_lettre = null;
30
 
30
 
31
	/**
31
	/**
32
	 * Nom du service permettant de s'inscrire
32
	 * Nom du service permettant de s'inscrire
33
	 * ex : desinscription.php
33
	 * ex : desinscription.php
34
	 */
34
	 */
35
	private $service_desinscription_lettre = null;
35
	private $service_desinscription_lettre = null;
36
 
36
 
37
	/**
37
	/**
38
	 * domaine de la liste
38
	 * domaine de la liste
39
	 * ex : domaine.org
39
	 * ex : domaine.org
40
	 */
40
	 */
41
	private $domaine_lettre = null;
41
	private $domaine_lettre = null;
42
 
42
 
43
	/**
43
	/**
44
	 * nom de la liste de diffusion
44
	 * nom de la liste de diffusion
45
	 * ex : actualite
45
	 * ex : actualite
46
	 */
46
	 */
47
	private $nom_lettre = null;
47
	private $nom_lettre = null;
48
 
48
 
49
	/**
49
	/**
50
	 * adresse mail d'inscription (si on utilise les mails)
50
	 * adresse mail d'inscription (si on utilise les mails)
51
	 */
51
	 */
52
	private $adresse_inscription_lettre = null;
52
	private $adresse_inscription_lettre = null;
53
 
53
 
54
	/**
54
	/**
55
	 * adresse mail de desinscription (si on utilise les mails)
55
	 * adresse mail de desinscription (si on utilise les mails)
56
	 */
56
	 */
57
	private $adresse_desinscription_lettre = null;
57
	private $adresse_desinscription_lettre = null;
58
 
58
 
59
	/**
59
	/**
60
	 * indique si on utilise les mails ou non
60
	 * indique si on utilise les mails ou non
61
	 * (si les infos des web services sont entrées, on met cette variable à true)
61
	 * (si les infos des web services sont entrées, on met cette variable à true)
62
	 */
62
	 */
63
	private $utilise_mail = false;
63
	private $utilise_mail = false;
64
 
64
 
65
	/**
65
	/**
66
	 * Constructeur sans paramètres
66
	 * Constructeur sans paramètres
67
	 */
67
	 */
68
	public function LettreControleur() {
68
	public function LettreControleur() {
69
 
69
 
70
		$this->__construct();
70
		$this->__construct();
71
 
71
 
72
		// on charge les variables de classes à partir du fichier de configuration
72
		// on charge les variables de classes à partir du fichier de configuration
73
		if(Config::get('adresse_service_lettre') != null) {
73
		if(Config::get('adresse_service_lettre') != null) {
74
			$this->adresse_service_lettre = Config::get('adresse_service_lettre');
74
			$this->adresse_service_lettre = Config::get('adresse_service_lettre');
75
		} else {
75
		} else {
76
			$this->utilise_mail = true;
76
			$this->utilise_mail = true;
77
		}
77
		}
78
 
78
 
79
		if(Config::get('service_inscription_lettre') != null) {
79
		if(Config::get('service_inscription_lettre') != null) {
80
			$this->service_inscription_lettre = Config::get('service_inscription_lettre');
80
			$this->service_inscription_lettre = Config::get('service_inscription_lettre');
81
		} else {
81
		} else {
82
			$this->utilise_mail = true;
82
			$this->utilise_mail = true;
83
		}
83
		}
84
 
84
 
85
		if(Config::get('service_desinscription_lettre') != null) {
85
		if(Config::get('service_desinscription_lettre') != null) {
86
			$this->service_desinscription_lettre = Config::get('service_desinscription_lettre');
86
			$this->service_desinscription_lettre = Config::get('service_desinscription_lettre');
87
		} else{
87
		} else{
88
			$this->utilise_mail = true;
88
			$this->utilise_mail = true;
89
		}
89
		}
90
 
90
 
91
		if(Config::get('domaine_lettre') != null) {
91
		if(Config::get('domaine_lettre') != null) {
92
			$this->domaine_lettre = Config::get('domaine_lettre');
92
			$this->domaine_lettre = Config::get('domaine_lettre');
93
		} else {
93
		} else {
94
			$this->utilise_mail = true;
94
			$this->utilise_mail = true;
95
		}
95
		}
96
 
96
 
97
		if(Config::get('nom_lettre') != null) {
97
		if(Config::get('nom_lettre') != null) {
98
			$this->nom_lettre = Config::get('nom_lettre');
98
			$this->nom_lettre = Config::get('nom_lettre');
99
		} else {
99
		} else {
100
			$this->utilise_mail = true;
100
			$this->utilise_mail = true;
101
		}
101
		}
102
		// si l'une des variables pour les web services n'est pas valide
102
		// si l'une des variables pour les web services n'est pas valide
103
 
103
 
104
		// alors on utilise les mails
104
		// alors on utilise les mails
105
		if(Config::get('adresse_inscription_lettre') != null) {
105
		if(Config::get('adresse_inscription_lettre') != null) {
106
			$this->adresse_inscription_lettre = Config::get('adresse_inscription_lettre');
106
			$this->adresse_inscription_lettre = Config::get('adresse_inscription_lettre');
107
		}
107
		}
108
 
108
 
109
		if(Config::get('adresse_desinscription_lettre') != null) {
109
		if(Config::get('adresse_desinscription_lettre') != null) {
110
			$this->adresse_desinscription_lettre = Config::get('adresse_desinscription_lettre');
110
			$this->adresse_desinscription_lettre = Config::get('adresse_desinscription_lettre');
111
		}
111
		}
112
	}
112
	}
-
 
113
 
-
 
114
/** --------------------------------- Fonction liées à l'inscription ou la desinscription à la lettre d'actualité gérée par une liste externe -------------------------------------------*/	
-
 
115
		
113
 
116
	
114
	/**
117
	/**
115
	 * Envoie un mail avec l'adresse de l'utilisateur donné en paramètre,
118
	 * Envoie un mail avec l'adresse de l'utilisateur donné en paramètre,
116
	 * à l'adresse donnée en paramètre
119
	 * à l'adresse donnée en paramètre
117
	 * @param string $adresse l'adresse de la liste à laquelle on veut abonner
120
	 * @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é
121
	 * @param string $inscrit l'adresse de l'inscrit qui doit être abonné
119
	 * @param string $sujet sujet du mail
122
	 * @param string $sujet sujet du mail
120
	 * @return boolean true ou false suivant le succès ou non de l'envoi
123
	 * @return boolean true ou false suivant le succès ou non de l'envoi
121
	 */
124
	 */
122
	private function envoyerMail($adresse, $inscrit, $sujet) {
125
	private function envoyerMail($adresse, $inscrit, $sujet) {
123
 
126
 
124
		 // Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
127
		 // Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
125
	     $entetes  = 'MIME-Version: 1.0' . "\r\n";
128
	     $entetes  = 'MIME-Version: 1.0' . "\r\n";
126
	     $entetes .= 'Content-type: text/html; charset='.Config::get('appli_encodage'). "\r\n";
129
	     $entetes .= 'Content-type: text/html; charset='.Config::get('appli_encodage'). "\r\n";
127
	     // En-têtes additionnels
130
	     // En-têtes additionnels
128
	     $entetes .= 'To: '.$adresse."\r\n";
131
	     $entetes .= 'To: '.$adresse."\r\n";
129
	     $entetes .= 'From: '.$inscrit."\r\n";
132
	     $entetes .= 'From: '.$inscrit."\r\n";
130
 
133
 
131
	     $contenu_mail = '';
134
	     $contenu_mail = '';
132
 
135
 
133
		return mail($adresse, $sujet, $contenu_mail, $entetes);
136
		return mail($adresse, $sujet, $contenu_mail, $entetes);
134
	}
137
	}
135
 
138
 
136
	/**
139
	/**
137
	 * Inscrit une adresse à la lettre d'actu
140
	 * Inscrit une adresse à la lettre d'actu
138
	 * @param string $mail le mail à inscrire à la lettre
141
	 * @param string $mail le mail à inscrire à la lettre
139
	 * @return boolean true ou false suivant le succès de la requete
142
	 * @return boolean true ou false suivant le succès de la requete
140
	 */
143
	 */
141
	public function inscriptionLettreActualite($mail) {
144
	public function inscriptionLettreActualite($mail) {
142
 
145
 
143
		if($this->utilise_mail) {
146
		if($this->utilise_mail) {
144
			return $this->envoyerMail($this->adresse_inscription_lettre, $mail, 'inscription à la lettre d\'actualité');
147
			return $this->envoyerMail($this->adresse_inscription_lettre, $mail, 'inscription à la lettre d\'actualité');
145
		} else {
148
		} else {
146
			$params = '?domaine='.$this->domaine_lettre.'&liste='.$this->nom_lettre.'&mail='.$mail;
149
			$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);
150
			//Log::getInstance()->ajouterEntree('lettre','inscription params '.$this->adresse_service_lettre.$this->service_inscription_lettre.$params);
148
			//return file_get_contents($this->adresse_service_lettre.$this->service_inscription_lettre.$params);
151
			//return file_get_contents($this->adresse_service_lettre.$this->service_inscription_lettre.$params);
149
		}
152
		}
150
 
153
 
151
	}
154
	}
152
 
155
 
153
	/**
156
	/**
154
	 * Desinscrit une adresse à une liste donnée
157
	 * Desinscrit une adresse à une liste donnée
155
	 * @param string $mail le mail à desinscrire à la lettre
158
	 * @param string $mail le mail à desinscrire à la lettre
156
	 * @return boolean true ou false suivant le succès de la requete
159
	 * @return boolean true ou false suivant le succès de la requete
157
	 */
160
	 */
158
	public function desinscriptionLettreActualite($mail) {
161
	public function desinscriptionLettreActualite($mail) {
159
 
162
 
160
		if($this->utilise_mail) {
163
		if($this->utilise_mail) {
161
			return $this->envoyerMail($this->adresse_inscription_lettre, $mail, 'desinscription à la lettre d\'actualité');
164
			return $this->envoyerMail($this->adresse_inscription_lettre, $mail, 'desinscription à la lettre d\'actualité');
162
		} else {
165
		} else {
163
			$params = '?domaine='.$this->domaine_lettre.'&liste='.$this->nom_lettre.'&mail='.$mail;
166
			$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);
167
			//Log::getInstance()->ajouterEntree('lettre','desinscription params '.$this->adresse_service_lettre.$this->service_desinscription_lettre.$params);
165
			//return file_get_contents($this->adresse_service_lettre.$this->service_desinscription_lettre.$params);
168
			//return file_get_contents($this->adresse_service_lettre.$this->service_desinscription_lettre.$params);
166
		}
169
		}
167
 
170
 
168
	}
171
	}
169
 
172
 
170
	/**
173
	/**
171
	 * Desinscrit l'ancien mail d'un utilisateur et réinscrit le nouveau
174
	 * Desinscrit l'ancien mail d'un utilisateur et réinscrit le nouveau
172
	 * @param string $ancien_mail l'ancien mail à desinscrire à la lettre
175
	 * @param string $ancien_mail l'ancien mail à desinscrire à la lettre
173
	 * @param string $nouveau_mail l'ancien mail à inscrire à la lettre
176
	 * @param string $nouveau_mail l'ancien mail à inscrire à la lettre
174
	 * @return boolean true ou false suivant le succès de la requete
177
	 * @return boolean true ou false suivant le succès de la requete
175
	 */
178
	 */
176
	public function modificationInscriptionLettreActualite($ancien_mail, $nouveau_mail) {
179
	public function modificationInscriptionLettreActualite($ancien_mail, $nouveau_mail) {
177
 
180
 
178
		if($this->utilise_mail) {
181
		if($this->utilise_mail) {
179
 
182
 
180
			$adresse_deinscription_lettre = Config::get('adresse_desinscription_lettre');
183
			$adresse_deinscription_lettre = Config::get('adresse_desinscription_lettre');
181
			$suppression_ancien_mail = $this->envoyerMail($adresse_deinscription_lettre, $ancien_mail, 'desinscription à la lettre d\'actualité');
184
			$suppression_ancien_mail = $this->envoyerMail($adresse_deinscription_lettre, $ancien_mail, 'desinscription à la lettre d\'actualité');
182
 
185
 
183
			$adresse_inscription_lettre = Config::get('adresse_inscription_lettre');
186
			$adresse_inscription_lettre = Config::get('adresse_inscription_lettre');
184
			$ajout_nouveau_mail = $this->envoyerMail($adresse_inscription_lettre, $nouveau_mail, 'inscription à la lettre d\'actualité');
187
			$ajout_nouveau_mail = $this->envoyerMail($adresse_inscription_lettre, $nouveau_mail, 'inscription à la lettre d\'actualité');
185
 
188
 
186
			return $suppression_ancien_mail && $ajout_nouveau_mail;
189
			return $suppression_ancien_mail && $ajout_nouveau_mail;
187
		} else {
190
		} else {
188
			$desinscription = $this->desinscriptionLettreActualite($ancien_mail);
191
			$desinscription = $this->desinscriptionLettreActualite($ancien_mail);
189
			$inscription = $this->inscriptionLettreActualite($nouveau_mail);
192
			$inscription = $this->inscriptionLettreActualite($nouveau_mail);
190
 
193
 
191
			return ($desinscription && $inscription);
194
			return ($desinscription && $inscription);
192
		}
195
		}
193
 
196
 
194
	}
197
	}
-
 
198
 
-
 
199
	
-
 
200
/** ---------------------------------    Fonction de gestion du champ de données associé à la lettre d'actu -------------------------------------------*/	
-
 
201
		
-
 
202
	
-
 
203
	public function estAbonneLettreActualite($id_annuaire, $id_utilisateur) {
-
 
204
 
-
 
205
		$annuaire_modele = $this->getModele('AnnuaireModele');
-
 
206
		$champs_description = $annuaire_modele->obtenirChampsDescriptionAnnuaire($id_annuaire);
-
 
207
 
-
 
208
		$valeur = $annuaire_modele->obtenirValeurChampAnnuaireMappe($id_annuaire, $id_utilisateur, 'champ_lettre');
-
 
209
 
-
 
210
		return $valeur;
-
 
211
	}
-
 
212
 
-
 
213
	public function abonnerDesabonnerLettreActualite($id_annuaire, $id_utilisateur, $abonner = true) {
-
 
214
 
-
 
215
		$annuaire_modele = $this->getModele('AnnuaireModele');
-
 
216
		$champs_description = $annuaire_modele->obtenirChampsDescriptionAnnuaire($id_annuaire);
-
 
217
 
-
 
218
		$mail_utilisateur = $annuaire_modele->obtenirMailParId($id_annuaire, $id_utilisateur);
-
 
219
 
-
 
220
		$champ_lettre = $champs_description[0]['champ_lettre'];
-
 
221
 
-
 
222
		if($abonner) {
-
 
223
			$valeur = 'on';
-
 
224
		} else {
-
 
225
			$valeur = '0';
-
 
226
		}
-
 
227
 
-
 
228
		$verificateur = new VerificationControleur();
-
 
229
		$valeur_modif = $verificateur->remplacerValeurChampPourModification($id_annuaire, $id_utilisateur, 'lettre', $valeur, $mail_utilisateur);
-
 
230
 
-
 
231
 
-
 
232
		$annuaire_modele = $this->getModele('AnnuaireModele');
-
 
233
		$valeur_modif = $annuaire_modele->modifierValeurChampAnnuaireMappe($id_annuaire, $id_utilisateur, $champ_lettre, $valeur_modif);
-
 
234
		//$this->chargerModele('MetadonneeModele');
-
 
235
		//$this->MetadonneeModele->modifierValeurMetadonnee($champ_lettre,$id_utilisateur,$valeur_modif);
-
 
236
 
-
 
237
		return $valeur_modif;
-
 
238
	}
195
}
239
}
196
?>
240
?>