Subversion Repositories Applications.annuaire

Rev

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

Rev 148 Rev 161
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
/**
15
/**
16
 * Controleur chargé de la vérification des formulaires
16
 * Controleur chargé de la vérification des formulaires
17
 * Remplace aussi les valeurs lors des actions spéciales comme la modification du mail
17
 * Remplace aussi les valeurs lors des actions spéciales comme la modification du mail
18
 * (l'inscription à la lettre d'actu se fait aussi ici même si ça n'est pas totalement sa place)
18
 * (l'inscription à la lettre d'actu se fait aussi ici même si ça n'est pas totalement sa place)
19
 */
19
 */
20
class VerificationControleur extends AppControleur {
20
class VerificationControleur extends AppControleur {
21
 
21
 
22
	/**
22
	/**
23
	 * Vérifie que les valeurs des champs de mappage et les valeurs obligatoires d'un annuaire donné
23
	 * Vérifie que les valeurs des champs de mappage et les valeurs obligatoires d'un annuaire donné
24
	 * sont correctes
24
	 * sont correctes
25
	 * @param int $id_annuaire l'identifiant de l'annuaire
25
	 * @param int $id_annuaire l'identifiant de l'annuaire
26
	 * @param Array $valeurs les valeurs à vérifier
26
	 * @param Array $valeurs les valeurs à vérifier
27
	 */
27
	 */
28
	public function verifierErreursChampsSelonType($id_annuaire, $valeurs, $tableau_mappage) {
28
	public function verifierErreursChampsSelonType($id_annuaire, $valeurs, $tableau_mappage) {
29
 
29
 
30
		$erreurs = array();
30
		$erreurs = array();
31
 
31
 
32
		$this->chargerModele('AnnuaireModele');
32
		$this->chargerModele('AnnuaireModele');
33
		$tableau_champs_obligatoire = $this->AnnuaireModele->obtenirChampsObligatoires($id_annuaire);
33
		$tableau_champs_obligatoire = $this->AnnuaireModele->obtenirChampsObligatoires($id_annuaire);
34
		
34
		
35
		if(!$tableau_champs_obligatoire) {
35
		if(!$tableau_champs_obligatoire) {
36
			$tableau_champs_obligatoire = array();
36
			$tableau_champs_obligatoire = array();
37
		}
37
		}
38
 
38
 
39
		foreach($valeurs as $id => $valeur_champ) {
39
		foreach($valeurs as $id => $valeur_champ) {
40
 
40
 
41
			$type = $valeur_champ['type'];
41
			$type = $valeur_champ['type'];
42
			$valeur = $valeur_champ['valeur'];
42
			$valeur = $valeur_champ['valeur'];
43
			$condition = $valeur_champ['condition'];
43
			$condition = $valeur_champ['condition'];
44
 
44
 
45
			switch($type) {
45
			switch($type) {
46
 
46
 
47
				case 'text':
47
				case 'text':
48
					if($this->estUnchampObligatoire($id, $tableau_champs_obligatoire) && trim($valeur) == '') {
48
					if($this->estUnchampObligatoire($id, $tableau_champs_obligatoire) && trim($valeur) == '') {
49
						$erreurs[$id] = 'Ce champ est obligatoire';
49
						$erreurs[$id] = 'Ce champ est obligatoire';
50
					}
50
					}
51
				break;
51
				break;
52
 
52
 
53
				case 'mail':
53
				case 'mail':
54
					if($this->estUnchampObligatoire($id, $tableau_champs_obligatoire) && trim($valeur) == '') {
54
					if($this->estUnchampObligatoire($id, $tableau_champs_obligatoire) && trim($valeur) == '') {
55
						$erreurs[$id] = 'Le mail est obligatoire ';
55
						$erreurs[$id] = 'Le mail est obligatoire ';
56
					}
56
					}
57
 
57
 
58
					if($this->estUnchampObligatoire($id, $tableau_champs_obligatoire) && !$this->mailValide($valeur)) {
58
					if($this->estUnchampObligatoire($id, $tableau_champs_obligatoire) && !$this->mailValide($valeur)) {
59
						$erreurs[$id] = 'Le mail est invalide ';
59
						$erreurs[$id] = 'Le mail est invalide ';
60
					}
60
					}
61
 
61
 
62
					if($this->AnnuaireModele->utilisateurExisteParMail($id_annuaire, $valeur)) {
62
					if($this->AnnuaireModele->utilisateurExisteParMail($id_annuaire, $valeur)) {
63
						$erreurs[$id] = 'Cet email est déjà utilisé par quelqu\'un d\'autre ';
63
						$erreurs[$id] = 'Cet email est déjà utilisé par quelqu\'un d\'autre ';
64
					}
64
					}
65
				break;
65
				break;
66
 
66
 
67
				case 'password':
67
				case 'password':
68
					if($this->estUnchampObligatoire($id, $tableau_champs_obligatoire) && trim($valeur) == ''
68
					if($this->estUnchampObligatoire($id, $tableau_champs_obligatoire) && trim($valeur) == ''
69
					|| $valeur != $condition) {
69
					|| $valeur != $condition) {
70
						$erreurs[$id] = 'Le mot de passe est invalide';
70
						$erreurs[$id] = 'Le mot de passe est invalide';
71
					}
71
					}
72
				break;
72
				break;
73
 
73
 
74
				// cas du champ checkbox
74
				// cas du champ checkbox
75
				case 'checkbox':
75
				case 'checkbox':
76
					if($this->estUnchampObligatoire($id, $tableau_champs_obligatoire) && trim($condition) != 'on') {
76
					if($this->estUnchampObligatoire($id, $tableau_champs_obligatoire) && trim($condition) != 'on') {
77
						$erreurs[$id] = 'N\'oubliez pas de cocher cette case';
77
						$erreurs[$id] = 'N\'oubliez pas de cocher cette case';
78
					}
78
					}
79
				break;
79
				break;
80
 
80
 
81
				default:
81
				default:
82
 
82
 
83
				break;
83
				break;
84
			}
84
			}
85
		}
85
		}
86
 
86
 
87
		if(count($erreurs) == 0) {
87
		if(count($erreurs) == 0) {
88
			$erreurs = false;
88
			$erreurs = false;
89
		}
89
		}
90
 
90
 
91
		return $erreurs;
91
		return $erreurs;
92
	}
92
	}
93
 
93
 
94
	/**
94
	/**
95
	 * Vérifie les valeurs des champs pour la modification d'un formulaire
95
	 * Vérifie les valeurs des champs pour la modification d'un formulaire
96
	 */
96
	 */
97
	public function verifierErreurChampModification($id_annuaire, $id_utilisateur, $type ,$valeur, $confirmation = false) {
97
	public function verifierErreurChampModification($id_annuaire, $id_utilisateur, $type ,$valeur, $confirmation = false) {
98
 
98
 
99
		$retour = array(true,false);
99
		$retour = array(true,false);
100
 
100
 
101
		switch($type) {
101
		switch($type) {
102
			case 'mail':
102
			case 'mail':
103
				if(!$this->mailValide($valeur)) {
103
				if(!$this->mailValide($valeur)) {
104
					$retour[0] = false;
104
					$retour[0] = false;
105
					$retour[1] = 'mail invalide';
105
					$retour[1] = 'mail invalide';
106
					break;
106
					break;
107
				}
107
				}
108
 
108
 
109
				$this->chargerModele('AnnuaireModele');
109
				$this->chargerModele('AnnuaireModele');
110
				$ancien_mail = $this->AnnuaireModele->obtenirMailParId($id_annuaire,$id_utilisateur);
110
				$ancien_mail = $this->AnnuaireModele->obtenirMailParId($id_annuaire,$id_utilisateur);
111
 
111
 
112
				if($ancien_mail != $valeur && $this->AnnuaireModele->utilisateurExisteParMail($id_annuaire, $valeur)) {
112
				if($ancien_mail != $valeur && $this->AnnuaireModele->utilisateurExisteParMail($id_annuaire, $valeur)) {
113
					$retour[0] = false;
113
					$retour[0] = false;
114
					$retour[1] = 'cet email est déjà utilisé par quelqu\'un d\'autre';
114
					$retour[1] = 'cet email est déjà utilisé par quelqu\'un d\'autre';
115
				}
115
				}
116
 
116
 
117
			break;
117
			break;
118
 
118
 
119
			case 'password':
119
			case 'password':
120
 
120
 
121
				if(trim($valeur) != trim($confirmation)) {
121
				if(trim($valeur) != trim($confirmation)) {
122
					$retour[0] = false;
122
					$retour[0] = false;
123
					$retour[1] = 'mot de passe invalide';
123
					$retour[1] = 'mot de passe invalide';
124
				}
124
				}
125
		}
125
		}
126
 
126
 
127
		return $retour;
127
		return $retour;
128
	}
128
	}
129
 
129
 
130
	public function remplacerValeurChampPourInsertion($type, $valeur, $mail_utilisateur) {
130
	public function remplacerValeurChampPourInsertion($type, $valeur, $mail_utilisateur) {
131
 
131
 
132
		$valeur_modifiee = $valeur;
132
		$valeur_modifiee = $valeur;
133
 
133
 
134
		switch($type) {
134
		switch($type) {
135
 
135
 
136
			// cas du champ texte, à priori, rien de particulier
136
			// cas du champ texte, à priori, rien de particulier
137
			case 'text':
137
			case 'text':
138
				$valeur_modifiee = $valeur;
138
				$valeur_modifiee = $valeur;
139
			break;
139
			break;
140
 
140
 
141
			// cas du champ password : on le crypte
141
			// cas du champ password : on le crypte
142
			case 'password':
142
			case 'password':
143
				$valeur_modifiee = $this->encrypterMotDePasse($valeur);
143
				$valeur_modifiee = $this->encrypterMotDePasse($valeur);
144
			break;
144
			break;
145
 
145
 
146
			// cas du champ checkbox
146
			// cas du champ checkbox
147
			case 'checkbox':
147
			case 'checkbox':
148
				// Si c'est un groupe checkbox, alors c'est une liste de checkbox liée à une ontologie
148
				// Si c'est un groupe checkbox, alors c'est une liste de checkbox liée à une ontologie
149
				if(is_array($valeur)) {
149
				if(is_array($valeur)) {
150
					// on stocke les valeurs d'ontologies liées au cases cochées
150
					// on stocke les valeurs d'ontologies liées au cases cochées
151
					$valeur_modifiee = implode(Config::get('separateur_metadonnee'), array_keys($valeur));
151
					$valeur_modifiee = implode(Config::get('separateur_metadonnee'), array_keys($valeur));
152
 
152
 
153
				} else {
153
				} else {
154
					if($valeur == 'on') {
154
					if($valeur == 'on') {
155
						// sinon on stocke 1 pour indique que la case est cochée (cas de la checkbox oui/non)
155
						// sinon on stocke 1 pour indique que la case est cochée (cas de la checkbox oui/non)
156
						$valeur_modifiee = 1;
156
						$valeur_modifiee = 1;
157
					} else {
157
					} else {
158
						$valeur_modifiee = 0;
158
						$valeur_modifiee = 0;
159
					}
159
					}
160
				}
160
				}
161
 
161
 
162
			break;
162
			break;
163
 
163
 
164
			case 'lettre':
164
			case 'lettre':
165
					if($valeur == 'on') {
165
					if($valeur == 'on') {
166
						// sinon on stocke 1 pour indique que la case est cochée (cas de la checkbox oui/non)
166
						// sinon on stocke 1 pour indique que la case est cochée (cas de la checkbox oui/non)
167
						$valeur_modifiee = 1;
167
						$valeur_modifiee = 1;
168
						// Si c'est une inscription à la lettre d'actualité, on appelle la fonction d'inscription
168
						// Si c'est une inscription à la lettre d'actualité, on appelle la fonction d'inscription
169
						$lettre_controleur = new LettreControleur();
169
						$lettre_controleur = new LettreControleur();
170
						$lettre_controleur->inscriptionLettreActualite($mail_utilisateur);
170
						$lettre_controleur->inscriptionLettreActualite($mail_utilisateur);
171
					} else {
171
					} else {
172
						$valeur_modifiee = 0;
172
						$valeur_modifiee = 0;
173
					}
173
					}
174
			break;
174
			break;
175
 
175
 
176
			default:
176
			default:
177
				$valeur_modifiee = $valeur;
177
				$valeur_modifiee = $valeur;
178
			break;
178
			break;
179
		}
179
		}
180
 
180
 
181
		return $valeur_modifiee;
181
		return $valeur_modifiee;
182
	}
182
	}
183
 
183
 
184
	public function remplacerValeurChampPourModification($id_annuaire, $id_utilisateur, $type, $valeur, $mail_utilisateur) {
184
	public function remplacerValeurChampPourModification($id_annuaire, $id_utilisateur, $type, $valeur, $mail_utilisateur) {
185
 
185
 
186
		$valeur_modifiee = $valeur;
186
		$valeur_modifiee = $valeur;
187
 
187
 
188
		switch($type) {
188
		switch($type) {
189
 
189
 
190
			// cas du champ texte, à priori, rien de particulier
190
			// cas du champ texte, à priori, rien de particulier
191
			case 'text':
191
			case 'text':
192
				$valeur_modifiee = $valeur;
192
				$valeur_modifiee = $valeur;
193
			break;
193
			break;
194
 
194
 
195
			// cas du champ password : on le crypte
195
			// cas du champ password : on le crypte
196
			case 'password':
196
			case 'password':
197
				$valeur_modifiee = $this->encrypterMotDePasse($valeur);
197
				$valeur_modifiee = $this->encrypterMotDePasse($valeur);
198
			break;
198
			break;
199
 
199
 
200
			// cas du champ checkbox
200
			// cas du champ checkbox
201
			case 'checkbox':
201
			case 'checkbox':
202
				
202
				
203
				// Si c'est un groupe checkbox, alors c'est une liste de checkbox liée à une ontologie
203
				// Si c'est un groupe checkbox, alors c'est une liste de checkbox liée à une ontologie
204
				if(is_array($valeur)) {
204
				if(is_array($valeur)) {
205
 
205
 
206
					// on stocke les valeurs d'ontologies liées au cases cochées
206
					// on stocke les valeurs d'ontologies liées au cases cochées
207
					$valeur_modifiee = implode(Config::get('separateur_metadonnee'), array_keys($valeur));
207
					$valeur_modifiee = implode(Config::get('separateur_metadonnee'), array_keys($valeur));
208
 
208
 
209
				} else {
209
				} else {
-
 
210
					
210
					if($valeur == 'on' || $valeur = '1') {
211
					if($valeur == 'on' || $valeur == '1') {
211
						// sinon on stocke 1 pour indique que la case est cochée (cas de la checkbox oui/non)
212
						// sinon on stocke 1 pour indique que la case est cochée (cas de la checkbox oui/non)
212
						$valeur_modifiee = 1;
213
						$valeur_modifiee = 1;
213
					} else {
214
					} else {
214
						$valeur_modifiee = 0;
215
						$valeur_modifiee = 0;
215
					}
216
					}
216
				}
217
				}
217
 
218
 
218
			break;
219
			break;
219
 
220
 
220
			case 'lettre':
221
			case 'lettre':
221
 
222
 
222
				// Si c'est une inscription à la lettre d'actualité, on appelle la fonction d'inscription
223
				// Si c'est une inscription à la lettre d'actualité, on appelle la fonction d'inscription
223
				$lettre_controleur = new LettreControleur();
224
				$lettre_controleur = new LettreControleur();
224
 
225
 
225
				$this->chargerModele('AnnuaireModele');
226
				$this->chargerModele('AnnuaireModele');
226
				$ancien_mail = $this->AnnuaireModele->obtenirMailParId($id_annuaire, $id_utilisateur);
227
				$ancien_mail = $this->AnnuaireModele->obtenirMailParId($id_annuaire, $id_utilisateur);
227
 
228
 
228
				$changement_mail = false;
229
				$changement_mail = false;
229
 
230
 
230
				if($ancien_mail != $mail_utilisateur) {
231
				if($ancien_mail != $mail_utilisateur) {
231
					$changement_mail = true;
232
					$changement_mail = true;
232
				}
233
				}
233
 
234
 
234
				if($valeur == 'on') {
235
				if($valeur == 'on' || $valeur == '1') {
235
					// on stocke 1 pour indique que la case est cochée (comme la checkbox oui/non)
236
					// on stocke 1 pour indique que la case est cochée (comme la checkbox oui/non)
236
					$valeur_modifiee = 1;
237
					$valeur_modifiee = 1;
237
 
238
 
238
					// si le mail a changé on désinscrit l'ancien mail et on inscrit le nouveau
239
					// si le mail a changé on désinscrit l'ancien mail et on inscrit le nouveau
239
					if($changement_mail) {
240
					if($changement_mail) {
240
						$lettre_controleur->ModificationInscriptionLettreActualite($ancien_mail, $mail_utilisateur);
241
						$lettre_controleur->ModificationInscriptionLettreActualite($ancien_mail, $mail_utilisateur);
241
					} else {
242
					} else {
242
 
243
 
243
						$lettre_controleur->inscriptionLettreActualite($mail_utilisateur);
244
						$lettre_controleur->inscriptionLettreActualite($mail_utilisateur);
244
					}
245
					}
245
 
246
 
246
				} else {
247
				} else {
247
					// sinon, si la case est vide
248
					// sinon, si la case est vide
248
					$valeur_modifiee = 0;
249
					$valeur_modifiee = 0;
249
					$mail_a_desinscrire = $mail_utilisateur;
250
					$mail_a_desinscrire = $mail_utilisateur;
250
					if($changement_mail) {
251
					if($changement_mail) {
251
						$mail_a_desinscrire = $ancien_mail;
252
						$mail_a_desinscrire = $ancien_mail;
252
					}
253
					}
253
					// on desinscrit l'utilisateur
254
					// on desinscrit l'utilisateur
254
					$lettre_controleur->desinscriptionLettreActualite($mail_a_desinscrire);
255
					$lettre_controleur->desinscriptionLettreActualite($mail_a_desinscrire);
255
				}
256
				}
256
			break;
257
			break;
257
 
258
 
258
			default:
259
			default:
259
				$valeur_modifiee = $valeur;
260
				$valeur_modifiee = $valeur;
260
			break;
261
			break;
261
		}
262
		}
262
 
263
 
263
		return $valeur_modifiee;
264
		return $valeur_modifiee;
264
	}
265
	}
265
 
266
 
266
	public function verifierEtRemplacerValeurChampPourAffichage($type, $valeur, $id_annuaire) {
267
	public function verifierEtRemplacerValeurChampPourAffichage($type, $valeur, $id_annuaire) {
267
 
268
 
268
		if(!$type) {
269
		if(!$type) {
269
			$valeur_modifiee = array();
270
			$valeur_modifiee = array();
270
 
271
 
271
			$valeur_modifiee['amv_type'] = 'champ_annuaire';
272
			$valeur_modifiee['amv_type'] = 'champ_annuaire';
272
			$valeur_modifiee['amv_valeur_affichage'] = $valeur;
273
			$valeur_modifiee['amv_valeur_affichage'] = $valeur;
273
 
274
 
274
		} else {
275
		} else {
275
			
276
			
276
			if(!isset($valeur['amv_valeur'])) {
277
			if(!isset($valeur['amv_valeur'])) {
277
				$valeur['amv_valeur'] = '';
278
				$valeur['amv_valeur'] = '';
278
			}
279
			}
279
 
280
 
280
			$valeur_modifiee = $valeur;
281
			$valeur_modifiee = $valeur;
281
 
282
 
282
			switch($type) {
283
			switch($type) {
283
 
284
 
284
				// cas du champ texte, à priori, rien de particulier
285
				// cas du champ texte, à priori, rien de particulier
285
				case 'text':
286
				case 'text':
286
					$valeur_modifiee['amv_valeur_affichage'] = $this->remplacerLienHtml($valeur['amv_valeur']);
287
					$valeur_modifiee['amv_valeur_affichage'] = $this->remplacerLienHtml($valeur['amv_valeur']);
287
				break;
288
				break;
288
				
289
				
289
				// cas du champ texte long, à priori, rien de particulier
290
				// cas du champ texte long, à priori, rien de particulier
290
				case 'textarea':
291
				case 'textarea':
291
					$valeur_modifiee['amv_valeur_affichage'] = $this->remplacerLienHtml($valeur['amv_valeur']);
292
					$valeur_modifiee['amv_valeur_affichage'] = $this->remplacerLienHtml($valeur['amv_valeur']);
292
				break;
293
				break;
293
 
294
 
294
				// cas du champ checkbox
295
				// cas du champ checkbox
295
				case 'checkbox':
296
				case 'checkbox':
296
					// si c'est un groupe checkbox, alors c'est une liste de checkbox liée à une ontologie
297
					// si c'est un groupe checkbox, alors c'est une liste de checkbox liée à une ontologie
297
					if(isset($valeur['amo_nom'])) {
298
					if(isset($valeur['amo_nom'])) {
298
						if(is_array($valeur['amo_nom']) && count($valeur['amo_nom']) > 0) {
299
						if(is_array($valeur['amo_nom']) && count($valeur['amo_nom']) > 0) {
299
						// on stocke les valeurs d'ontologies liées au cases cochées
300
						// on stocke les valeurs d'ontologies liées au cases cochées
300
							$valeur_modifiee['amv_valeur_affichage'] = implode(', ', $valeur['amo_nom']);
301
							$valeur_modifiee['amv_valeur_affichage'] = implode(', ', $valeur['amo_nom']);
301
						} else {
302
						} else {
302
							$valeur_modifiee['amv_valeur_affichage'] = $valeur['amo_nom'];
303
							$valeur_modifiee['amv_valeur_affichage'] = $valeur['amo_nom'];
303
						}
304
						}
304
					} else {
305
					} else {
305
						// sinon on stocke 1 pour indique que la case est cochée (cas de la checkbox oui/non)
306
						// sinon on stocke 1 pour indique que la case est cochée (cas de la checkbox oui/non)
306
						if($valeur_modifiee == 1) {
307
						if($valeur_modifiee == 1) {
307
							$valeur_modifiee['amv_valeur_affichage'] = 'oui';
308
							$valeur_modifiee['amv_valeur_affichage'] = 'oui';
308
						} else {
309
						} else {
309
							$valeur_modifiee['amv_valeur_affichage'] = 'non';
310
							$valeur_modifiee['amv_valeur_affichage'] = 'non';
310
						}
311
						}
311
					}
312
					}
312
				break;
313
				break;
313
 
314
 
314
				case 'select':
315
				case 'select':
315
					// TODO: si ça n'existe pas on va le chercher ?
316
					// TODO: si ça n'existe pas on va le chercher ?
316
					if(isset($valeur['amo_nom'])) {
317
					if(isset($valeur['amo_nom'])) {
317
						$valeur_modifiee['amv_valeur_affichage'] = $valeur['amo_nom'];
318
						$valeur_modifiee['amv_valeur_affichage'] = $valeur['amo_nom'];
318
					} else {
319
					} else {
319
						if(isset($valeur['amv_valeur'])) {
320
						if(isset($valeur['amv_valeur'])) {
320
							$ontologie_modele = new OntologieModele();
321
							$ontologie_modele = new OntologieModele();
321
							$infos_onto = $ontologie_modele->chargerInformationsOntologie($valeur['amv_valeur']);
322
							$infos_onto = $ontologie_modele->chargerInformationsOntologie($valeur['amv_valeur']);
322
							if(is_array($infos_onto) && !empty($infos_onto)) {
323
							if(is_array($infos_onto) && !empty($infos_onto)) {
323
								$valeur_modifiee['amv_valeur_affichage'] = $infos_onto['amo_nom'];
324
								$valeur_modifiee['amv_valeur_affichage'] = $infos_onto['amo_nom'];
324
							} else  {
325
							} else  {
325
								$valeur_modifiee['amv_valeur_affichage'] = '';
326
								$valeur_modifiee['amv_valeur_affichage'] = '';
326
							}
327
							}
327
						} else  {
328
						} else  {
328
							$valeur_modifiee['amv_valeur_affichage'] = '';
329
							$valeur_modifiee['amv_valeur_affichage'] = '';
329
						}
330
						}
330
					}
331
					}
331
					
332
					
332
				break;
333
				break;
333
 
334
 
334
				case 'radio':
335
				case 'radio':
335
					$valeur_modifiee['amv_valeur_affichage'] = $valeur['amo_nom'];
336
					$valeur_modifiee['amv_valeur_affichage'] = $valeur['amo_nom'];
336
				break;
337
				break;
337
 
338
 
338
				case 'image':
339
				case 'image':
339
					// si c'est une image, on recherche son url véritable à partir de l'id donnée en paramètre
340
					// si c'est une image, on recherche son url véritable à partir de l'id donnée en paramètre
340
					if(isset($valeur['amv_valeur']) && $valeur['amv_valeur'] != '') {
341
					if(isset($valeur['amv_valeur']) && $valeur['amv_valeur'] != '') {
341
						$this->chargerModele('ImageModele');
342
						$this->chargerModele('ImageModele');
342
						$valeur_modifiee['amv_valeur_affichage'] = $this->ImageModele->obtenirEmplacementFichierParId($valeur['amv_valeur'],$id_annuaire, 'S');
343
						$valeur_modifiee['amv_valeur_affichage'] = $this->ImageModele->obtenirEmplacementFichierParId($valeur['amv_valeur'],$id_annuaire, 'S');
343
					}
344
					}
344
				break;
345
				break;
345
 
346
 
346
				// cas du champ lettre
347
				// cas du champ lettre
347
				case 'lettre':
348
				case 'lettre':
348
 
349
 
349
					// on affiche oui ou non
350
					// on affiche oui ou non
350
					if($valeur_modifiee['amv_valeur'] == 1) {
351
					if($valeur_modifiee['amv_valeur'] == 1) {
351
						$valeur_modifiee['amv_valeur_affichage'] = 'oui';
352
						$valeur_modifiee['amv_valeur_affichage'] = 'oui';
352
					} else {
353
					} else {
353
						$valeur_modifiee['amv_valeur_affichage'] = 'non';
354
						$valeur_modifiee['amv_valeur_affichage'] = 'non';
354
					}
355
					}
355
				break;
356
				break;
356
				
357
				
357
				// cas de la date, on la formate
358
				// cas de la date, on la formate
358
				case 'date':
359
				case 'date':
359
					
360
					
360
					//echo '|'.$valeur['amv_valeur'].'|';
361
					//echo '|'.$valeur['amv_valeur'].'|';
361
					
362
					
362
					$format = Config::get('date_format_simple');
363
					$format = Config::get('date_format_simple');
363
					
364
					
364
					if(!isset($format)) {
365
					if(!isset($format)) {
365
						$format = 'd/m/Y';
366
						$format = 'd/m/Y';
366
					}
367
					}
367
					
368
					
368
					$time = strtotime($valeur['amv_valeur']);
369
					$time = strtotime($valeur['amv_valeur']);
369
					
370
					
370
					if(!$time || $time == '') {
371
					if(!$time || $time == '') {
371
						$valeur_modifiee['amv_valeur_affichage'] = $valeur['amv_valeur'];
372
						$valeur_modifiee['amv_valeur_affichage'] = $valeur['amv_valeur'];
372
					} else {
373
					} else {
373
						$valeur_modifiee['amv_valeur_affichage'] = date($format, $time);
374
						$valeur_modifiee['amv_valeur_affichage'] = date($format, $time);
374
					}
375
					}
375
								
376
								
376
				break;
377
				break;
377
 
378
 
378
				default:
379
				default:
379
					$valeur_modifiee['amv_valeur_affichage'] = $valeur['amv_valeur'];
380
					$valeur_modifiee['amv_valeur_affichage'] = $valeur['amv_valeur'];
380
				break;
381
				break;
381
			}
382
			}
382
		}
383
		}
383
 
384
 
384
		return $valeur_modifiee;
385
		return $valeur_modifiee;
385
	}
386
	}
386
	
387
	
387
	public function collecterValeurInscription($valeurs, $tableau_mappage) {
388
	public function collecterValeurInscription($valeurs, $tableau_mappage) {
388
		
389
		
389
		$valeurs_mappees = array();
390
		$valeurs_mappees = array();
390
		$valeurs_a_inserer = array();
391
		$valeurs_a_inserer = array();
391
		
392
		
392
		// on itère sur le tableau de valeur pour récupérer les champs de mappage;
393
		// on itère sur le tableau de valeur pour récupérer les champs de mappage;
393
		foreach($valeurs as $nom_champ => $valeur) {
394
		foreach($valeurs as $nom_champ => $valeur) {
394
 
395
 
395
			// pour chaque valeur
396
			// pour chaque valeur
396
			// on extrait l'id du champ
397
			// on extrait l'id du champ
397
			$ids_champ = mb_split("_",$nom_champ, 3);
398
			$ids_champ = mb_split("_",$nom_champ, 3);
398
 
399
 
399
			if(count($ids_champ) == 3) {
400
			if(count($ids_champ) == 3) {
400
 
401
 
401
				$type = $ids_champ[0];
402
				$type = $ids_champ[0];
402
				$id_champ = $ids_champ[2];
403
				$id_champ = $ids_champ[2];
403
				$condition = $ids_champ[1];
404
				$condition = $ids_champ[1];
404
 
405
 
405
				// cas de la checkbox qui devrait être là mais pas cochée
406
				// cas de la checkbox qui devrait être là mais pas cochée
406
				if($condition == 'hidden' && !isset($valeurs[$type.'_'.$id_champ])) {
407
				if($condition == 'hidden' && !isset($valeurs[$type.'_'.$id_champ])) {
407
					// dans ce cas là on fabrique une valeur vide
408
					// dans ce cas là on fabrique une valeur vide
408
					$valeurs[$type.'_'.$id_champ] = 0;
409
					$valeurs[$type.'_'.$id_champ] = 0;
409
				}
410
				}
410
 
411
 
411
			} else {
412
			} else {
412
				$type = $ids_champ[0];
413
				$type = $ids_champ[0];
413
				$condition = false;
414
				$condition = false;
414
				$id_champ = $ids_champ[1];
415
				$id_champ = $ids_champ[1];
415
			}
416
			}
416
 
417
 
417
			// Si le champ fait partie des champs mappés
418
			// Si le champ fait partie des champs mappés
418
			$cle_champ = array_search($id_champ, $tableau_mappage[1]);
419
			$cle_champ = array_search($id_champ, $tableau_mappage[1]);
419
 
420
 
420
			// on ajoute sa clé correspondante dans le tableau des champs mappés
421
			// on ajoute sa clé correspondante dans le tableau des champs mappés
421
			// qui sont les champs à vérifier
422
			// qui sont les champs à vérifier
422
			if($condition) {
423
			if($condition) {
423
				$condition = $valeurs[$type.'_'.$id_champ];
424
				$condition = $valeurs[$type.'_'.$id_champ];
424
				$valeurs_mappees[$id_champ] = array('valeur' => $valeur, 'type' => $type, 'condition' => $condition);
425
				$valeurs_mappees[$id_champ] = array('valeur' => $valeur, 'type' => $type, 'condition' => $condition);
425
			} else {
426
			} else {
426
				//$valeurs_mappees[$cle_champ] = $valeur;
427
				//$valeurs_mappees[$cle_champ] = $valeur;
427
				$valeurs_mappees[$id_champ] = array('valeur' => $valeur, 'type' => $type, 'condition' => false);
428
				$valeurs_mappees[$id_champ] = array('valeur' => $valeur, 'type' => $type, 'condition' => false);
428
			}
429
			}
429
 
430
 
430
			if(!$condition) {
431
			if(!$condition) {
431
				$valeurs_a_inserer[$nom_champ] = $valeur;
432
				$valeurs_a_inserer[$nom_champ] = $valeur;
432
			}
433
			}
433
		}
434
		}
434
		
435
		
435
		return array('valeurs_mappees' => $valeurs_mappees, 'valeurs_a_inserer' => $valeurs_a_inserer);
436
		return array('valeurs_mappees' => $valeurs_mappees, 'valeurs_a_inserer' => $valeurs_a_inserer);
436
	}
437
	}
437
 
438
 
438
	/**
439
	/**
439
	 * Renvoie vrai ou faux suivant qu'un mail donné en paramètre est syntaxiquement valide (ne vérifie pas l'existence
440
	 * Renvoie vrai ou faux suivant qu'un mail donné en paramètre est syntaxiquement valide (ne vérifie pas l'existence
440
	 * de l'adresse)
441
	 * de l'adresse)
441
	 * @param string $mail le mail à tester
442
	 * @param string $mail le mail à tester
442
	 * @return boolean vrai ou faux suivant que le mail est valide ou non
443
	 * @return boolean vrai ou faux suivant que le mail est valide ou non
443
	 */
444
	 */
444
	public function mailValide($mail) {
445
	public function mailValide($mail) {
445
 
446
 
446
		$regexp_mail = '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/';
447
		$regexp_mail = '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/';
447
		return preg_match($regexp_mail, $mail);
448
		return preg_match($regexp_mail, $mail);
448
 
449
 
449
	}
450
	}
450
 
451
 
451
	/**
452
	/**
452
	 * Renvoie un mot de passe crypté selon la fonction d'encryptage définie dans le fichier de configuration
453
	 * Renvoie un mot de passe crypté selon la fonction d'encryptage définie dans le fichier de configuration
453
	 * (si celle-ci n'existe pas on utilise une fonction par défaut)
454
	 * (si celle-ci n'existe pas on utilise une fonction par défaut)
454
	 * @param string $pass le mot de passe à encrypter
455
	 * @param string $pass le mot de passe à encrypter
455
	 * @return string le mot de passe encrypté
456
	 * @return string le mot de passe encrypté
456
	 */
457
	 */
457
	public function encrypterMotDePasse($pass) {
458
	public function encrypterMotDePasse($pass) {
458
 
459
 
459
		$fonction = Config::get('pass_crypt_fonct');
460
		$fonction = Config::get('pass_crypt_fonct');
460
 
461
 
461
		if(function_exists($fonction)) {
462
		if(function_exists($fonction)) {
462
			return $fonction($pass);
463
			return $fonction($pass);
463
		} else {
464
		} else {
464
			return md5($pass);
465
			return md5($pass);
465
		}
466
		}
466
	}
467
	}
467
 
468
 
468
	//TODO: créer une class util
469
	//TODO: créer une class util
469
	static function encrypterMotDepasseStatic($pass) {
470
	static function encrypterMotDepasseStatic($pass) {
470
 
471
 
471
		$fonction = Config::get('pass_crypt_fonct');
472
		$fonction = Config::get('pass_crypt_fonct');
472
 
473
 
473
		if(function_exists($fonction)) {
474
		if(function_exists($fonction)) {
474
			return $fonction($pass);
475
			return $fonction($pass);
475
		} else {
476
		} else {
476
			return md5($pass);
477
			return md5($pass);
477
		}
478
		}
478
	}
479
	}
479
	
480
	
480
	static function convertirTailleFichier($taille) {
481
	static function convertirTailleFichier($taille) {
481
		if(!$taille) {
482
		if(!$taille) {
482
			return "0 Mo";
483
			return "0 Mo";
483
		}
484
		}
484
		
485
		
485
		return number_format($taille*(1/1024)*(1/1024), 0).' Mo';
486
		return number_format($taille*(1/1024)*(1/1024), 0).' Mo';
486
	}
487
	}
487
	
488
	
488
	public function genererMotDePasse() {
489
	public function genererMotDePasse() {
489
		
490
		
490
		$pass = "";
491
		$pass = "";
491
		$chaine = "abcdefghkmnpqrstuvwxyzABCDEFGHKLMNPQRSTUVWXYZ23456789";
492
		$chaine = "abcdefghkmnpqrstuvwxyzABCDEFGHKLMNPQRSTUVWXYZ23456789";
492
 
493
 
493
		srand((double)microtime()*1000000);
494
		srand((double)microtime()*1000000);
494
		for($i = 0; $i < 10; $i++){
495
		for($i = 0; $i < 10; $i++){
495
			$pass .= $chaine[rand()%strlen($chaine)];
496
			$pass .= $chaine[rand()%strlen($chaine)];
496
		}
497
		}
497
		
498
		
498
		return $pass;
499
		return $pass;
499
		
500
		
500
	}
501
	}
501
 
502
 
502
	/**
503
	/**
503
	 * Suivant un identifiant de champ et un tableau, renvoie vrai ou faux suivant que le champs est obligatoire ou non
504
	 * Suivant un identifiant de champ et un tableau, renvoie vrai ou faux suivant que le champs est obligatoire ou non
504
	 * @param int $id_champ l'identifiant de champ
505
	 * @param int $id_champ l'identifiant de champ
505
	 * @param int $champ_obligatoire le tableau des champs obligatoires
506
	 * @param int $champ_obligatoire le tableau des champs obligatoires
506
	 */
507
	 */
507
	private function estUnchampObligatoire($id_champ, $champs_obligatoire) {
508
	private function estUnchampObligatoire($id_champ, $champs_obligatoire) {
508
 
509
 
509
		return in_array($id_champ, $champs_obligatoire) || in_array($id_champ, array_keys($champs_obligatoire));
510
		return in_array($id_champ, $champs_obligatoire) || in_array($id_champ, array_keys($champs_obligatoire));
510
	}
511
	}
511
	
512
	
512
	/**
513
	/**
513
	 * 
514
	 * 
514
	 */
515
	 */
515
	private function remplacerLienHtml($texte) {
516
	private function remplacerLienHtml($texte) {
516
		
517
		
517
		$expr = "(http[\S\.\/:]*)";
518
		$expr = "(http[\S\.\/:]*)";
518
		
519
		
519
		$matches = array();
520
		$matches = array();
520
		preg_match_all($expr, $texte, $matches);
521
		preg_match_all($expr, $texte, $matches);
521
				
522
				
522
		foreach($matches as $match) {
523
		foreach($matches as $match) {
523
			
524
			
524
			foreach($match as $element) {
525
			foreach($match as $element) {
525
				$str_lien = '<br /><a class="info_resume" href="'.$element.'" >'.$element.'</a>'; 
526
				$str_lien = '<br /><a class="info_resume" href="'.$element.'" >'.$element.'</a>'; 
526
				$texte = str_replace($element, $str_lien, $texte);
527
				$texte = str_replace($element, $str_lien, $texte);
527
			}
528
			}
528
		}
529
		}
529
		
530
		
530
		return $texte;
531
		return $texte;
531
	}
532
	}
532
}
533
}
533
?>
534
?>