Subversion Repositories Applications.annuaire

Rev

Rev 405 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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