Subversion Repositories Applications.annuaire

Rev

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

Rev 361 Rev 405
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['amv_valeur'] == 1) {
308
						if($valeur['amv_valeur'] == 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
				$valeurs_get[$nom_champ] = $valeur;
461
				$valeurs_get[$nom_champ] = $valeur;
462
			}
462
			}
463
 
463
 
464
			unset($valeurs_recherchees[$nom_champ]);
464
			unset($valeurs_recherchees[$nom_champ]);
465
		}
465
		}
466
		
466
		
467
		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);
468
	}
468
	}
-
 
469
	
-
 
470
	public function convertirTableauRechercheVersChaine($id_annuaire, $valeurs_recherchees) {
-
 
471
				
-
 
472
		$this->chargerModele('MetadonneeModele');
-
 
473
		$metadonnees = $this->MetadonneeModele->chargerListeMetadonneeAnnuaire($id_annuaire);
-
 
474
		
-
 
475
		$champs = array();
-
 
476
		
-
 
477
		foreach($metadonnees as $id => $metadonnee) {
-
 
478
			$id_champ_formulaire = $metadonnee['amc_ce_template_affichage'].'_'.$id;
-
 
479
			if(isset($valeurs_recherchees[$id_champ_formulaire]) && $valeurs_recherchees[$id_champ_formulaire] != '') {
-
 
480
				$valeur = $valeurs_recherchees[$id_champ_formulaire];
-
 
481
				$champs[] = array('label' => $metadonnee['amc_nom'],
-
 
482
								  'valeur' => $this->convertirValeurChampRechercheVersTexte($metadonnee, $valeur)
-
 
483
							);
-
 
484
			}
-
 
485
		}
-
 
486
		return $champs;
-
 
487
	}
-
 
488
	
-
 
489
	private function convertirValeurChampRechercheVersTexte($metadonnee, $valeur) {
-
 
490
		if($metadonnee['amc_ce_ontologie'] != 0) {
-
 
491
			$valeurs_onto = array();
-
 
492
			if(is_array($valeur)) {
-
 
493
				foreach($valeur as $id => $element) {
-
 
494
					$valeur_element = $this->MetadonneeModele->renvoyerCorrespondanceNomId($id, $metadonnee['amc_ce_ontologie']);
-
 
495
					$valeurs_onto[] = $valeur_element['amo_nom'];
-
 
496
				}
-
 
497
				$valeur = implode(', ',$valeurs_onto);
-
 
498
				
-
 
499
			} else {
-
 
500
				if(is_numeric($valeur)) {
-
 
501
					$valeurs_onto = $this->MetadonneeModele->renvoyerCorrespondanceNomId($valeur, $metadonnee['amc_ce_ontologie']);
-
 
502
					$valeur = $valeurs_onto['amo_nom'];
-
 
503
				} else {
-
 
504
					$valeur_onto = $this->MetadonneeModele->renvoyerCorrespondanceNomParAbreviation($valeur, $metadonnee['amc_ce_ontologie']);
-
 
505
					$valeur = $valeur_onto;
-
 
506
				}
-
 
507
			}
-
 
508
		}
-
 
509
		return $valeur;
-
 
510
	}
469
 
511
 
470
	/**
512
	/**
471
	 * Renvoie vrai ou faux suivant qu'un mail donné en paramètre est syntaxiquement valide (ne vérifie pas l'existence
513
	 * Renvoie vrai ou faux suivant qu'un mail donné en paramètre est syntaxiquement valide (ne vérifie pas l'existence
472
	 * de l'adresse)
514
	 * de l'adresse)
473
	 * @param string $mail le mail à tester
515
	 * @param string $mail le mail à tester
474
	 * @return boolean vrai ou faux suivant que le mail est valide ou non
516
	 * @return boolean vrai ou faux suivant que le mail est valide ou non
475
	 */
517
	 */
476
	public function mailValide($mail) {
518
	public function mailValide($mail) {
477
 
519
 
478
		$regexp_mail = '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/';
520
		$regexp_mail = '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/';
479
		return preg_match($regexp_mail, strtolower($mail));
521
		return preg_match($regexp_mail, strtolower($mail));
480
 
522
 
481
	}
523
	}
482
 
524
 
483
	/**
525
	/**
484
	 * Renvoie un mot de passe crypté selon la fonction d'encryptage définie dans le fichier de configuration
526
	 * Renvoie un mot de passe crypté selon la fonction d'encryptage définie dans le fichier de configuration
485
	 * (si celle-ci n'existe pas on utilise une fonction par défaut)
527
	 * (si celle-ci n'existe pas on utilise une fonction par défaut)
486
	 * @param string $pass le mot de passe à encrypter
528
	 * @param string $pass le mot de passe à encrypter
487
	 * @return string le mot de passe encrypté
529
	 * @return string le mot de passe encrypté
488
	 */
530
	 */
489
	public function encrypterMotDePasse($pass) {
531
	public function encrypterMotDePasse($pass) {
490
 
532
 
491
		$fonction = Config::get('pass_crypt_fonct');
533
		$fonction = Config::get('pass_crypt_fonct');
492
 
534
 
493
		if(function_exists($fonction)) {
535
		if(function_exists($fonction)) {
494
			return $fonction($pass);
536
			return $fonction($pass);
495
		} else {
537
		} else {
496
			return md5($pass);
538
			return md5($pass);
497
		}
539
		}
498
	}
540
	}
499
 
541
 
500
	//TODO: créer une class util
542
	//TODO: créer une class util
501
	static function encrypterMotDepasseStatic($pass) {
543
	static function encrypterMotDepasseStatic($pass) {
502
 
544
 
503
		$fonction = Config::get('pass_crypt_fonct');
545
		$fonction = Config::get('pass_crypt_fonct');
504
 
546
 
505
		if(function_exists($fonction)) {
547
		if(function_exists($fonction)) {
506
			return $fonction($pass);
548
			return $fonction($pass);
507
		} else {
549
		} else {
508
			return md5($pass);
550
			return md5($pass);
509
		}
551
		}
510
	}
552
	}
511
	
553
	
512
	static function convertirTailleFichier($taille) {
554
	static function convertirTailleFichier($taille) {
513
		if(!$taille) {
555
		if(!$taille) {
514
			return "0 Mo";
556
			return "0 Mo";
515
		}
557
		}
516
		
558
		
517
		return number_format($taille*(1/1024)*(1/1024), 0).' Mo';
559
		return number_format($taille*(1/1024)*(1/1024), 0).' Mo';
518
	}
560
	}
519
	
561
	
520
	public function genererMotDePasse() {
562
	public function genererMotDePasse() {
521
		
563
		
522
		$pass = "";
564
		$pass = "";
523
		$chaine = "abcdefghkmnpqrstuvwxyzABCDEFGHKLMNPQRSTUVWXYZ23456789";
565
		$chaine = "abcdefghkmnpqrstuvwxyzABCDEFGHKLMNPQRSTUVWXYZ23456789";
524
 
566
 
525
		srand((double)microtime()*1000000);
567
		srand((double)microtime()*1000000);
526
		for($i = 0; $i < 10; $i++){
568
		for($i = 0; $i < 10; $i++){
527
			$pass .= $chaine[rand()%strlen($chaine)];
569
			$pass .= $chaine[rand()%strlen($chaine)];
528
		}
570
		}
529
		
571
		
530
		return $pass;
572
		return $pass;
531
		
573
		
532
	}
574
	}
533
	
575
	
534
	public static function champEstRempli($champ) {
576
	public static function champEstRempli($champ) {
535
		return is_array($champ) && isset($champ['amv_valeur_affichage']) && trim($champ['amv_valeur_affichage']) != '';
577
		return is_array($champ) && isset($champ['amv_valeur_affichage']) && trim($champ['amv_valeur_affichage']) != '';
536
	}
578
	}
537
	
579
	
538
	public static function AfficherSiChampRempli($champ, $chaine_format = '%s') {
580
	public static function AfficherSiChampRempli($champ, $chaine_format = '%s') {
539
		
581
		
540
		$affichage = '';
582
		$affichage = '';
541
			
583
			
542
		if (self::champEstRempli($champ)) {
584
		if (self::champEstRempli($champ)) {
543
			$valeur = $champ['amv_valeur_affichage'];
585
			$valeur = $champ['amv_valeur_affichage'];
544
			$affichage = sprintf($chaine_format,$valeur);
586
			$affichage = sprintf($chaine_format,$valeur);
545
		}
587
		}
546
		
588
		
547
		return $affichage;
589
		return $affichage;
548
	}
590
	}
549
	
591
	
550
	public static function AfficherChampSiAdmin($champ, $chaine_format = '%s') {
592
	public static function AfficherChampSiAdmin($champ, $chaine_format = '%s') {
551
		
593
		
552
		$affichage = '';
594
		$affichage = '';
553
			
595
			
554
		if (Registre::getInstance()->get('est_admin')) {
596
		if (Registre::getInstance()->get('est_admin')) {
555
			$affichage = self::AfficherSiChampRempli($champ, $chaine_format);
597
			$affichage = self::AfficherSiChampRempli($champ, $chaine_format);
556
		}
598
		}
557
			
599
			
558
		return $affichage;
600
		return $affichage;
559
	}
601
	}
560
 
602
 
561
	/**
603
	/**
562
	 * Suivant un identifiant de champ et un tableau, renvoie vrai ou faux suivant que le champs est obligatoire ou non
604
	 * Suivant un identifiant de champ et un tableau, renvoie vrai ou faux suivant que le champs est obligatoire ou non
563
	 * @param int $id_champ l'identifiant de champ
605
	 * @param int $id_champ l'identifiant de champ
564
	 * @param int $champ_obligatoire le tableau des champs obligatoires
606
	 * @param int $champ_obligatoire le tableau des champs obligatoires
565
	 */
607
	 */
566
	private function estUnchampObligatoire($id_champ, $champs_obligatoire) {
608
	private function estUnchampObligatoire($id_champ, $champs_obligatoire) {
567
 
609
 
568
		return in_array($id_champ, $champs_obligatoire) || in_array($id_champ, array_keys($champs_obligatoire));
610
		return in_array($id_champ, $champs_obligatoire) || in_array($id_champ, array_keys($champs_obligatoire));
569
	}
611
	}
570
	
612
	
571
	/**
613
	/**
572
	 * 
614
	 * 
573
	 */
615
	 */
574
	private function remplacerLienHtml($texte) {
616
	private function remplacerLienHtml($texte) {
575
		
617
		
576
		$expr = "(http[\S\.\/:]*)";
618
		$expr = "(http[\S\.\/:]*)";
577
		
619
		
578
		$matches = array();
620
		$matches = array();
579
		preg_match_all($expr, $texte, $matches);
621
		preg_match_all($expr, $texte, $matches);
580
				
622
				
581
		foreach($matches as $match) {
623
		foreach($matches as $match) {
582
			
624
			
583
			foreach($match as $element) {
625
			foreach($match as $element) {
584
				$str_lien = '<div><a class="info_resume" href="'.$element.'" >'.$element.'</a></div>'; 
626
				$str_lien = '<div><a class="info_resume" href="'.$element.'" >'.$element.'</a></div>'; 
585
				$texte = str_replace($element, $str_lien, $texte);
627
				$texte = str_replace($element, $str_lien, $texte);
586
			}
628
			}
587
		}
629
		}
588
		
630
		
589
		return $texte;
631
		return $texte;
590
	}
632
	}
591
}
633
}
592
?>
634
?>