Subversion Repositories Applications.annuaire

Rev

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

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