Subversion Repositories Applications.annuaire

Rev

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

Rev 138 Rev 143
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
class AnnuaireControleur extends AppControleur {
14
class AnnuaireControleur extends AppControleur {
15
 
15
 
16
 
16
 
17
	/**
17
	/**
18
	 * Fonction affichant la vue par défaut, ici le menu principal
18
	 * Fonction affichant la vue par défaut, ici le menu principal
19
	 * @return String la vue contenant le menu
19
	 * @return String la vue contenant le menu
20
	 */
20
	 */
21
	public function index() {
21
	public function index() {
22
		
22
		
23
		//$this->migrer();
23
		//$this->migrerWeb();
24
		$data = array();
24
		$data = array();
25
		$index_annuaire = $this->getVue('index_annuaire', $data);
25
		$index_annuaire = $this->getVue('index_annuaire', $data);
26
 
26
 
27
		return $index_annuaire;
27
		return $index_annuaire;
28
	}
28
	}
29
	
29
	
-
 
30
	/*private function migrerWeb() {
-
 
31
		
-
 
32
		$this->chargerModele('AnnuaireModele');
-
 
33
		$this->chargerModele('MetadonneeModele');
-
 
34
		$this->chargerModele('OntologieModele');
-
 
35
		
-
 
36
		$res = $this->AnnuaireModele->migrer();
-
 
37
		
-
 
38
		foreach($res as $resultat) {
-
 
39
		  
-
 
40
			if(trim($resultat['U_WEB']) != '')	{
-
 
41
				$web = $resultat['U_WEB'];
-
 
42
				$id_utilisateur = $resultat['U_ID'];
-
 
43
				
-
 
44
				$regexp_mail = '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/';
-
 
45
				
-
 
46
				if(preg_match($regexp_mail, $web)) {
-
 
47
					
-
 
48
				} else if(!ereg("^http://",$web)) {
-
 
49
						$web = 'http://'.$web;
-
 
50
				}
-
 
51
				
-
 
52
				//ereg_replace("(http://)(([[:punct:]]|[[:alnum:]])*)",
-
 
53
				//	  "<a href=\"\\0\">\\2</a>",$Texte)
-
 
54
				
-
 
55
				//echo 'modif champ web fonc pour id '.$id_utilisateur.' valeur '.$valeur.'  <br />';
-
 
56
		
-
 
57
				// les champs arrivent avec un identifiant sous la forme type_xxx_id
-
 
58
				if(trim($web) != '') {
-
 
59
					
-
 
60
					$id_champ = 134;  
-
 
61
					if($this->MetadonneeModele->valeurExiste($id_champ,$id_utilisateur)) {
-
 
62
						// On se contente de la modifier
-
 
63
						$this->MetadonneeModele->modifierValeurMetadonnee($id_champ,$id_utilisateur,$web);
-
 
64
			
-
 
65
					} else {
-
 
66
						// S'il n'existe pas de valeur, on ajoute une nouvelle ligne à la table de valeurs de meta données
-
 
67
						if($this->MetadonneeModele->ajouterNouvelleValeurMetadonnee($id_champ,$id_utilisateur,$web)) {
-
 
68
							// Si l'insertion a réussi, on continue
-
 
69
						} else {
-
 
70
							return false;
-
 
71
						}
-
 
72
					}
-
 
73
				}
-
 
74
				
-
 
75
			} else {
-
 
76
				//echo 'pas de valeur pour l\'id '.$id_utilisateur.' <br />';
-
 
77
			}
-
 
78
		}
-
 
79
	}*/
-
 
80
	
-
 
81
	/*private function migrerStructure() {
-
 
82
		
-
 
83
		$this->chargerModele('AnnuaireModele');
-
 
84
		$this->chargerModele('MetadonneeModele');
-
 
85
		$this->chargerModele('OntologieModele');
-
 
86
		
-
 
87
		$res = $this->AnnuaireModele->migrer();
-
 
88
		
-
 
89
		foreach($res as $resultat) {
-
 
90
		  
-
 
91
			if(trim($resultat['U_TITLE']) != '' || trim($resultat['U_FONCTION']) != '')	{
-
 
92
				$organisme = $resultat['U_TITLE'];
-
 
93
				$fonction = $resultat['U_FONCTION'];
-
 
94
				$id_utilisateur = $resultat['U_ID'];
-
 
95
				
-
 
96
				echo 'modif champ struct fonc pour id '.$id_utilisateur.' valeur '.$valeur.'  <br />';
-
 
97
		
-
 
98
				// les champs arrivent avec un identifiant sous la forme type_xxx_id
-
 
99
				if(trim($organisme) != '') {
-
 
100
					
-
 
101
					$id_champ = 138;  
-
 
102
					if($this->MetadonneeModele->valeurExiste($id_champ,$id_utilisateur)) {
-
 
103
						// On se contente de la modifier
-
 
104
						$this->MetadonneeModele->modifierValeurMetadonnee($id_champ,$id_utilisateur,$organisme);
-
 
105
			
-
 
106
					} else {
-
 
107
						// S'il n'existe pas de valeur, on ajoute une nouvelle ligne à la table de valeurs de meta données
-
 
108
						if($this->MetadonneeModele->ajouterNouvelleValeurMetadonnee($id_champ,$id_utilisateur,$organisme)) {
-
 
109
							// Si l'insertion a réussi, on continue
-
 
110
						} else {
-
 
111
							return false;
-
 
112
						}
-
 
113
					}
-
 
114
				}
-
 
115
				
-
 
116
				if(trim($fonction) != '') {
-
 
117
					
-
 
118
					$id_champ = 139; 
-
 
119
					
-
 
120
					if($this->MetadonneeModele->valeurExiste($id_champ,$id_utilisateur)) {
-
 
121
						// On se contente de la modifier
-
 
122
						$this->MetadonneeModele->modifierValeurMetadonnee($id_champ,$id_utilisateur,$fonction);
-
 
123
			
-
 
124
					} else {
-
 
125
						 
-
 
126
						// S'il n'existe pas de valeur, on ajoute une nouvelle ligne à la table de valeurs de meta données
-
 
127
						if($this->MetadonneeModele->ajouterNouvelleValeurMetadonnee($id_champ,$id_utilisateur,$fonction)) {
-
 
128
							// Si l'insertion a réussi, on continue
-
 
129
						} else {
-
 
130
							return false;
-
 
131
						}
-
 
132
					}
-
 
133
				}
-
 
134
				
-
 
135
			} else {
-
 
136
				echo 'pas de valeur pour l\'id '.$id_utilisateur.' <br />';
-
 
137
			}
-
 
138
		}
-
 
139
	}*/
-
 
140
	
-
 
141
	
30
	/*private function migrer() {
142
	/*private function migrerPays() {
31
		
143
		
32
		$this->chargerModele('AnnuaireModele');
144
		$this->chargerModele('AnnuaireModele');
33
		$this->chargerModele('MetadonneeModele');
145
		$this->chargerModele('MetadonneeModele');
34
		$this->chargerModele('OntologieModele');
146
		$this->chargerModele('OntologieModele');
35
		
147
		
36
		$res = $this->AnnuaireModele->migrer();
148
		$res = $this->AnnuaireModele->migrer();
37
		
149
		
38
		foreach($res as $resultat) {
150
		foreach($res as $resultat) {
39
		  
151
		  
40
			if(isset($resultat['U_COUNTRY']) && trim($resultat['U_COUNTRY']) != '')	{
152
			if(isset($resultat['U_COUNTRY']) && trim($resultat['U_COUNTRY']) != '')	{
41
				$valeur = $this->MetadonneeModele->renvoyerCorrespondanceIdParAbreviation($resultat['U_COUNTRY'], '1074');  
153
				$valeur = $this->MetadonneeModele->renvoyerCorrespondanceIdParAbreviation($resultat['U_COUNTRY'], '1074');  
42
				$id_utilisateur = $resultat['U_ID'];
154
				$id_utilisateur = $resultat['U_ID'];
43
				$id_champ = 12;  
155
				$id_champ = 12;  
44
				
156
				
45
				echo 'modif champ 12 pour id '.$id_utilisateur.' valeur '.$valeur.'  <br />';
157
				echo 'modif champ 12 pour id '.$id_utilisateur.' valeur '.$valeur.'  <br />';
46
		
158
		
47
				// les champs arrivent avec un identifiant sous la forme type_xxx_id
159
				// les champs arrivent avec un identifiant sous la forme type_xxx_id
48
		
160
		
49
				if($this->MetadonneeModele->valeurExiste($id_champ,$id_utilisateur)) {
161
				if($this->MetadonneeModele->valeurExiste($id_champ,$id_utilisateur)) {
50
					// On se contente de la modifier
162
					// On se contente de la modifier
51
					$this->MetadonneeModele->modifierValeurMetadonnee($id_champ,$id_utilisateur,$valeur);
163
					$this->MetadonneeModele->modifierValeurMetadonnee($id_champ,$id_utilisateur,$valeur);
52
		
164
		
53
				} else {
165
				} else {
54
					// S'il n'existe pas de valeur, on ajoute une nouvelle ligne à la table de valeurs de meta données
166
					// S'il n'existe pas de valeur, on ajoute une nouvelle ligne à la table de valeurs de meta données
55
					if($this->MetadonneeModele->ajouterNouvelleValeurMetadonnee($id_champ,$id_utilisateur,$valeur)) {
167
					if($this->MetadonneeModele->ajouterNouvelleValeurMetadonnee($id_champ,$id_utilisateur,$valeur)) {
56
						// Si l'insertion a réussi, on continue
168
						// Si l'insertion a réussi, on continue
57
					} else {
169
					} else {
58
						return false;
170
						return false;
59
					}
171
					}
60
				}
172
				}
61
			} else {
173
			} else {
62
				echo 'pas de valeur pour l\'id '.$id_utilisateur;
174
				echo 'pas de valeur pour l\'id '.$id_utilisateur;
63
			}
175
			}
64
		}
176
		}
65
	}*/
177
	}*/
-
 
178
	
-
 
179
	/*private function migrerActiviteAppartenanceExperienceBota() {
-
 
180
		
-
 
181
		$this->chargerModele('AnnuaireModele');
-
 
182
		$this->chargerModele('MetadonneeModele');
-
 
183
		$this->chargerModele('OntologieModele');
-
 
184
		
-
 
185
		$corr_act = array(1 =>	30798, 2 =>	30799, 3 =>	30800);
-
 
186
		$corr_ass = array(1 =>	30811, 2 =>	30812, 3 =>	30813);
-
 
187
		$corr_niv = array(1 =>	30786, 2 =>	30787, 3 =>	30788, 4 => 30790);
-
 
188
		
-
 
189
		$res = $this->AnnuaireModele->migrer();
-
 
190
		
-
 
191
		foreach($res as $resultat) {
-
 
192
			
-
 
193
			$id_utilisateur = $resultat['U_ID'];
-
 
194
		  
-
 
195
			if(isset($resultat['U_ACT']) && trim($resultat['U_ACT']) != '')	{
-
 
196
				$id_champ = 102; 
-
 
197
				$valeur = $corr_act[$resultat['U_ACT']]; 
-
 
198
				
-
 
199
				echo 'modif champ activité pour id '.$id_utilisateur.' valeur '.$valeur.'  <br />';
-
 
200
		
-
 
201
				// les champs arrivent avec un identifiant sous la forme type_xxx_id
-
 
202
		
-
 
203
				if($this->MetadonneeModele->valeurExiste($id_champ,$id_utilisateur)) {
-
 
204
					// On se contente de la modifier
-
 
205
					$this->MetadonneeModele->modifierValeurMetadonnee($id_champ,$id_utilisateur,$valeur);
-
 
206
		
-
 
207
				} else {
-
 
208
					// S'il n'existe pas de valeur, on ajoute une nouvelle ligne à la table de valeurs de meta données
-
 
209
					if($this->MetadonneeModele->ajouterNouvelleValeurMetadonnee($id_champ,$id_utilisateur,$valeur)) {
-
 
210
						// Si l'insertion a réussi, on continue
-
 
211
					} else {
-
 
212
						return false;
-
 
213
					}
-
 
214
				}
-
 
215
			} else {
-
 
216
				echo 'pas de valeur pour l\'id '.$id_utilisateur;
-
 
217
			}
-
 
218
			
-
 
219
			if(isset($resultat['U_NIV']) && trim($resultat['U_NIV']) != '')	{ 
-
 
220
				$id_champ = 4;  
-
 
221
				$valeur = $corr_niv[$resultat['U_NIV']]; 
-
 
222
				
-
 
223
				echo 'modif champ niveau botanique pour id '.$id_utilisateur.' valeur '.$valeur.'  <br />';
-
 
224
		
-
 
225
				// les champs arrivent avec un identifiant sous la forme type_xxx_id
-
 
226
		
-
 
227
				if($this->MetadonneeModele->valeurExiste($id_champ,$id_utilisateur)) {
-
 
228
					// On se contente de la modifier
-
 
229
					$this->MetadonneeModele->modifierValeurMetadonnee($id_champ,$id_utilisateur,$valeur);
-
 
230
		
-
 
231
				} else {
-
 
232
					// S'il n'existe pas de valeur, on ajoute une nouvelle ligne à la table de valeurs de meta données
-
 
233
					if($this->MetadonneeModele->ajouterNouvelleValeurMetadonnee($id_champ,$id_utilisateur,$valeur)) {
-
 
234
						// Si l'insertion a réussi, on continue
-
 
235
					} else {
-
 
236
						return false;
-
 
237
					}
-
 
238
				}
-
 
239
			} else {
-
 
240
				echo 'pas de valeur pour l\'id '.$id_utilisateur;
-
 
241
			}
-
 
242
		
-
 
243
			if(isset($resultat['U_ASS']) && trim($resultat['U_ASS']) != '')	{  
-
 
244
				$id_champ = 133;  
-
 
245
				$valeur = $corr_ass[$resultat['U_ASS']]; 
-
 
246
				
-
 
247
				echo 'modif champ appartenance association pour id '.$id_utilisateur.' valeur '.$valeur.'  <br />';
-
 
248
		
-
 
249
				// les champs arrivent avec un identifiant sous la forme type_xxx_id
-
 
250
		
-
 
251
				if($this->MetadonneeModele->valeurExiste($id_champ,$id_utilisateur)) {
-
 
252
					// On se contente de la modifier
-
 
253
					$this->MetadonneeModele->modifierValeurMetadonnee($id_champ,$id_utilisateur,$valeur);
-
 
254
		
-
 
255
				} else {
-
 
256
					// S'il n'existe pas de valeur, on ajoute une nouvelle ligne à la table de valeurs de meta données
-
 
257
					if($this->MetadonneeModele->ajouterNouvelleValeurMetadonnee($id_champ,$id_utilisateur,$valeur)) {
-
 
258
						// Si l'insertion a réussi, on continue
-
 
259
					} else {
-
 
260
						return false;
-
 
261
					}
-
 
262
				}
-
 
263
			} else {
-
 
264
				echo 'pas de valeur pour l\'id '.$id_utilisateur;
-
 
265
			}
-
 
266
			
-
 
267
			echo '<br />';
-
 
268
		}
-
 
269
		
-
 
270
		exit;
-
 
271
	}*/
66
 
272
 
67
	/**
273
	/**
68
     * Fonction d'affichage par défaut
274
     * Fonction d'affichage par défaut
69
     */
275
     */
70
    public function executerActionParDefaut() {
276
    public function executerActionParDefaut() {
71
 
277
 
72
    	if(Registre::getInstance()->get('est_admin')) {
278
    	if(Registre::getInstance()->get('est_admin')) {
73
			$data = array();
279
			$data = array();
74
			$index_annuaire = $this->getVue('index_annuaire', $data);
280
			$index_annuaire = $this->getVue('index_annuaire', $data);
75
 
281
 
76
			return $index_annuaire;
282
			return $index_annuaire;
77
    	} else {
283
    	} else {
78
			return $this->afficherFicheUtilisateur(Registre::getInstance()->get('identification_id'));
284
			return $this->afficherFicheUtilisateur(Registre::getInstance()->get('identification_id'));
79
    	}
285
    	}
80
    }
286
    }
81
 
287
 
82
/**-------- Fonctions de gestion des annuaires --------------------------------*/
288
/**-------- Fonctions de gestion des annuaires --------------------------------*/
83
 
289
 
84
	/**
290
	/**
85
	 * Charge la vue contenant la liste des annuaires gérés par l'application
291
	 * Charge la vue contenant la liste des annuaires gérés par l'application
86
	 * @return string la vue contenant la liste des annuaires
292
	 * @return string la vue contenant la liste des annuaires
87
	 */
293
	 */
88
	public function chargerListeAnnuaire() {
294
	public function chargerListeAnnuaire() {
89
		$this->chargerModele('AnnuaireModele');
295
		$this->chargerModele('AnnuaireModele');
90
		$data['erreurs'] = null;
296
		$data['erreurs'] = null;
91
		$data['annuaires'] = $this->AnnuaireModele->chargerListeAnnuaire();
297
		$data['annuaires'] = $this->AnnuaireModele->chargerListeAnnuaire();
92
		$liste_annu = $this->getVue(Config::get('dossier_squelettes_annuaires').'liste_annu', $data);
298
		$liste_annu = $this->getVue(Config::get('dossier_squelettes_annuaires').'liste_annu', $data);
93
 
299
 
94
		return $liste_annu;
300
		return $liste_annu;
95
	}
301
	}
96
 
302
 
97
	/**
303
	/**
98
	 * Charge la vue contenant les informations d'un annuaire donné en paramètre
304
	 * Charge la vue contenant les informations d'un annuaire donné en paramètre
99
	 * @param int $id l'identifiant de l'annuaire
305
	 * @param int $id l'identifiant de l'annuaire
100
	 * @return string la vue contenant les informations sur l'annuaire
306
	 * @return string la vue contenant les informations sur l'annuaire
101
	 */
307
	 */
102
	public function chargerAnnuaire($id) {
308
	public function chargerAnnuaire($id) {
103
		$this->chargerModele('AnnuaireModele');
309
		$this->chargerModele('AnnuaireModele');
104
		$this->chargerModele('MetadonneeModele');
310
		$this->chargerModele('MetadonneeModele');
105
		$data['erreurs'] = array();
311
		$data['erreurs'] = array();
106
		$data['champs_mappage'] = $this->obtenirChampsMappageAnnuaire($id);
312
		$data['champs_mappage'] = $this->obtenirChampsMappageAnnuaire($id);
107
		$data['annuaire'] = $this->AnnuaireModele->chargerAnnuaire($id, true);
313
		$data['annuaire'] = $this->AnnuaireModele->chargerAnnuaire($id, true);
108
		$data['metadonnees'] = $this->MetadonneeModele->chargerListeMetadonneeAnnuaire($id);
314
		$data['metadonnees'] = $this->MetadonneeModele->chargerListeMetadonneeAnnuaire($id);
109
		$annuaire = $this->getVue(Config::get('dossier_squelettes_annuaires').'annuaire', $data);
315
		$annuaire = $this->getVue(Config::get('dossier_squelettes_annuaires').'annuaire', $data);
110
 
316
 
111
		return $annuaire;
317
		return $annuaire;
112
	}
318
	}
113
 
319
 
114
	/**
320
	/**
115
	 * Charge et affiche la liste des inscrits à un annuaire donné en paramètre
321
	 * Charge et affiche la liste des inscrits à un annuaire donné en paramètre
116
	 * @param $id int l'identifiant de l'annuaire
322
	 * @param $id int l'identifiant de l'annuaire
117
	 * @return string la vue contenant les inscrits à l'annuaire
323
	 * @return string la vue contenant les inscrits à l'annuaire
118
	 */
324
	 */
119
	public function chargerAnnuaireListeInscrits($id_annuaire, $numero_page = 1, $taille_page = 50) {
325
	public function chargerAnnuaireListeInscrits($id_annuaire, $numero_page = 1, $taille_page = 50) {
120
 
326
 
121
		$this->chargerModele('AnnuaireModele');
327
		$this->chargerModele('AnnuaireModele');
122
		$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire);
328
		$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire);
123
		$data['erreurs'] = array();
329
		$data['erreurs'] = array();
124
		$tableau_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
330
		$tableau_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
125
		$champ_id_annuaire = $tableau_mappage[0]['champ_id'];
331
		$champ_id_annuaire = $tableau_mappage[0]['champ_id'];
126
 
332
 
127
		$resultat_recherche = $this->AnnuaireModele->chargerAnnuaireListeInscrits($id_annuaire, $numero_page, $taille_page);	
333
		$resultat_recherche = $this->AnnuaireModele->chargerAnnuaireListeInscrits($id_annuaire, $numero_page, $taille_page);	
128
						
334
						
129
		$nb_resultats = $resultat_recherche['total'];
335
		$nb_resultats = $resultat_recherche['total'];
130
		$resultat_recherche = $resultat_recherche['resultat'];
336
		$resultat_recherche = $resultat_recherche['resultat'];
131
		
337
		
132
		$resultats = array();
338
		$resultats = array();
133
		foreach($resultat_recherche as $resultat) {
339
		foreach($resultat_recherche as $resultat) {
134
			$id_utilisateur = $resultat[$champ_id_annuaire];
340
			$id_utilisateur = $resultat[$champ_id_annuaire];
135
			$resultats[$id_utilisateur] = $this->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur);
341
			$resultats[$id_utilisateur] = $this->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur);
136
		}
342
		}
137
 
343
 
138
		// on renvoie une liste identique à celle de la liste des inscrits
344
		// on renvoie une liste identique à celle de la liste des inscrits
139
		$donnees['resultats_recherche'] = $resultats;
345
		$donnees['resultats_recherche'] = $resultats;
140
		$donnees['tableau_mappage'] = $tableau_mappage[1];
346
		$donnees['tableau_mappage'] = $tableau_mappage[1];
141
		$donnees['id_annuaire'] = $id_annuaire;
347
		$donnees['id_annuaire'] = $id_annuaire;
142
		$donnees['nb_resultats'] = $nb_resultats;
348
		$donnees['nb_resultats'] = $nb_resultats;
143
		$url_pagination = new URL(Registre::getInstance()->get('base_url_application'));
349
		$url_pagination = new URL(Registre::getInstance()->get('base_url_application'));
144
		$url_pagination->setVariableRequete('m','annuaire_inscrits');
350
		$url_pagination->setVariableRequete('m','annuaire_inscrits');
145
		$url_pagination->setVariableRequete('id_annuaire',$id_annuaire);
351
		$url_pagination->setVariableRequete('id_annuaire',$id_annuaire);
146
 
352
 
147
		$donnees['pagination'] = $this->paginer($numero_page,$taille_page,$nb_resultats,$url_pagination, array());
353
		$donnees['pagination'] = $this->paginer($numero_page,$taille_page,$nb_resultats,$url_pagination, array());
148
 
354
 
149
		// S'il existe une page de résultats spécifique à l'annuaire pour la recherche
355
		// S'il existe une page de résultats spécifique à l'annuaire pour la recherche
150
 
356
 
151
		if($this->templateExiste($annuaire['informations']['aa_code'].'_resultat_recherche', Config::get('dossier_squelettes_annuaires'))) {
357
		if($this->templateExiste($annuaire['informations']['aa_code'].'_resultat_recherche', Config::get('dossier_squelettes_annuaires'))) {
152
			// on l'affiche
358
			// on l'affiche
153
			$annuaires_inscrits = $this->getVue(Config::get('dossier_squelettes_annuaires').$annuaire['informations']['aa_code'].'_resultat_recherche', $donnees);
359
			$annuaires_inscrits = $this->getVue(Config::get('dossier_squelettes_annuaires').$annuaire['informations']['aa_code'].'_resultat_recherche', $donnees);
154
		} else {
360
		} else {
155
			// sinon on prend celle par défaut
361
			// sinon on prend celle par défaut
156
			$annuaires_inscrits = $this->getVue(Config::get('dossier_squelettes_annuaires').'resultat_recherche', $donnees);
362
			$annuaires_inscrits = $this->getVue(Config::get('dossier_squelettes_annuaires').'resultat_recherche', $donnees);
157
		}
363
		}
158
 
364
 
159
		return $annuaires_inscrits;
365
		return $annuaires_inscrits;
160
	}
366
	}
161
 
367
 
162
/**-------- Fonctions d'affichage du formulaire de saisie d'un champ de metadonnée suivant le type de champ---------*/
368
/**-------- Fonctions d'affichage du formulaire de saisie d'un champ de metadonnée suivant le type de champ---------*/
163
 
369
 
164
	/**
370
	/**
165
	 * Affiche le formulaire d'inscription pour un annuaire donné
371
	 * Affiche le formulaire d'inscription pour un annuaire donné
166
	 * @param int $id_annuaire l'identifiant de l'annuaire pour lequel on veut afficher le formulaire
372
	 * @param int $id_annuaire l'identifiant de l'annuaire pour lequel on veut afficher le formulaire
167
	 * @param Array $donnees le tableau de données pour préremplir le formulaire si besoin (en cas de retour erreur)
373
	 * @param Array $donnees le tableau de données pour préremplir le formulaire si besoin (en cas de retour erreur)
168
	 */
374
	 */
169
	public function afficherFormulaireInscription($id_annuaire, $donnees=array()) {
375
	public function afficherFormulaireInscription($id_annuaire, $donnees=array()) {
170
 
376
 
171
		$this->chargerModele('AnnuaireModele');
377
		$this->chargerModele('AnnuaireModele');
172
		$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire, false);
378
		$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire, false);
173
 
379
 
174
		$this->chargerModele('MetadonneeModele');
380
		$this->chargerModele('MetadonneeModele');
175
		$donnees['aa_id_annuaire'] = $id_annuaire;
381
		$donnees['aa_id_annuaire'] = $id_annuaire;
176
 
382
 
177
		$metadonnees = $this->MetadonneeModele->chargerListeMetadonneeAnnuaire($id_annuaire);
383
		$metadonnees = $this->MetadonneeModele->chargerListeMetadonneeAnnuaire($id_annuaire);
178
 
384
 
179
		// TODO: ceci charge toutes les métadonnées, voir si l'on ne peut pas parser le formulaire
385
		// TODO: ceci charge toutes les métadonnées, voir si l'on ne peut pas parser le formulaire
180
		// pour ne charger que ce qui est nécéssaire
386
		// pour ne charger que ce qui est nécéssaire
181
		foreach($metadonnees as $metadonnee) {
387
		foreach($metadonnees as $metadonnee) {
182
 
388
 
183
			$id_champ = $metadonnee['amc_id_champ'];
389
			$id_champ = $metadonnee['amc_id_champ'];
184
			$type_champ = $metadonnee['amc_ce_template_affichage'];
390
			$type_champ = $metadonnee['amc_ce_template_affichage'];
185
			$nom_champ = $metadonnee['amc_abreviation'];
391
			$nom_champ = $metadonnee['amc_abreviation'];
186
 
392
 
187
			$metadonnee['aa_id_annuaire'] = $id_annuaire;
393
			$metadonnee['aa_id_annuaire'] = $id_annuaire;
188
			if(isset($donnees['erreurs'])) {
394
			if(isset($donnees['erreurs'])) {
189
				$metadonnee['erreurs'] = $donnees['erreurs'];
395
				$metadonnee['erreurs'] = $donnees['erreurs'];
190
			}
396
			}
191
 
397
 
192
			if(isset($donnees[$type_champ.'_'.$id_champ])) {
398
			if(isset($donnees[$type_champ.'_'.$id_champ])) {
193
				$metadonnee['valeur_defaut']['amv_valeur'] = $donnees[$type_champ.'_'.$id_champ];
399
				$metadonnee['valeur_defaut']['amv_valeur'] = $donnees[$type_champ.'_'.$id_champ];
194
			}
400
			}
195
 
401
 
196
			// on charge le formulaire d'affichage de chacune des métadonnées
402
			// on charge le formulaire d'affichage de chacune des métadonnées
197
			$donnees['champs'][$nom_champ] = $this->afficherFormulaireChampMetadonnees($id_champ,$metadonnee);
403
			$donnees['champs'][$nom_champ] = $this->afficherFormulaireChampMetadonnees($id_champ,$metadonnee);
198
		}
404
		}
199
 
405
 
200
		// si le formulaire existe, on le charge
406
		// si le formulaire existe, on le charge
201
		if(!$this->templateExiste($annuaire['informations']['aa_code'].'_inscription','formulaires/')) {
407
		if(!$this->templateExiste($annuaire['informations']['aa_code'].'_inscription','formulaires/')) {
202
			$formulaire_inscription = $this->genererFormulaireInscription($donnees);
408
			$formulaire_inscription = $this->genererFormulaireInscription($donnees);
203
		} else {
409
		} else {
204
			// sinon on en génère un qui contient tous les champs
410
			// sinon on en génère un qui contient tous les champs
205
			$formulaire_inscription = $this->GetVue(Config::get('dossier_squelettes_formulaires').$annuaire['informations']['aa_code'].'_inscription',$donnees);
411
			$formulaire_inscription = $this->GetVue(Config::get('dossier_squelettes_formulaires').$annuaire['informations']['aa_code'].'_inscription',$donnees);
206
		}
412
		}
207
 
413
 
208
		return $formulaire_inscription;
414
		return $formulaire_inscription;
209
	}
415
	}
210
 
416
 
211
/**-------- Fonctions d'inscription -------------------------------------------------------------------------------*/
417
/**-------- Fonctions d'inscription -------------------------------------------------------------------------------*/
212
 
418
 
213
	/**
419
	/**
214
	 * Lors d'une tentative d'inscription, ajoute les infos dans la table d'inscription
420
	 * Lors d'une tentative d'inscription, ajoute les infos dans la table d'inscription
215
	 * temporaire et envoie le mail contenant le lien de confirmation si tout s'est bien passé
421
	 * temporaire et envoie le mail contenant le lien de confirmation si tout s'est bien passé
216
	 * @param Array $valeurs les valeurs à ajouter
422
	 * @param Array $valeurs les valeurs à ajouter
217
	 * @return string la vue contenant la confirmation de l'inscription
423
	 * @return string la vue contenant la confirmation de l'inscription
218
	 */
424
	 */
219
	public function ajouterInscriptionTemporaire($valeurs) {
425
	public function ajouterInscriptionTemporaire($valeurs) {
220
 
426
 
221
		$this->chargerModele('MetadonneeModele');
427
		$this->chargerModele('MetadonneeModele');
222
		$id_annuaire = $valeurs['aa_id_annuaire'];
428
		$id_annuaire = $valeurs['aa_id_annuaire'];
223
		unset($valeurs['aa_id_annuaire']);
429
		unset($valeurs['aa_id_annuaire']);
224
		
430
		
225
		$valeurs_mappees = array();
431
		$valeurs_mappees = array();
226
		$valeurs_a_inserer = array();
432
		$valeurs_a_inserer = array();
227
 
433
 
228
		$tableau_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
434
		$tableau_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
229
 
435
 
230
		$verificateur = new VerificationControleur();
436
		$verificateur = new VerificationControleur();
231
 
437
 
232
		$valeurs_collectees = $verificateur->collecterValeurInscription($valeurs, $tableau_mappage);
438
		$valeurs_collectees = $verificateur->collecterValeurInscription($valeurs, $tableau_mappage);
233
		
439
		
234
		$valeurs_mappees = $valeurs_collectees['valeurs_mappees'];
440
		$valeurs_mappees = $valeurs_collectees['valeurs_mappees'];
235
		$valeurs_a_inserer = $valeurs_collectees['valeurs_a_inserer'];
441
		$valeurs_a_inserer = $valeurs_collectees['valeurs_a_inserer'];
236
 
442
 
237
		// vérification des champs minimaux : nom, prénom, mail, mot de passe
443
		// vérification des champs minimaux : nom, prénom, mail, mot de passe
238
		if($erreurs = $verificateur->verifierErreursChampsSelonType($id_annuaire,$valeurs_mappees, $tableau_mappage)) {
444
		if($erreurs = $verificateur->verifierErreursChampsSelonType($id_annuaire,$valeurs_mappees, $tableau_mappage)) {
239
			$valeurs['erreurs'] = $erreurs;
445
			$valeurs['erreurs'] = $erreurs;
240
			return $this->afficherFormulaireInscription($id_annuaire, $valeurs);
446
			return $this->afficherFormulaireInscription($id_annuaire, $valeurs);
241
		}
447
		}
242
		
448
		
243
		$valeurs_a_inserer['aa_id_annuaire'] = $id_annuaire ;
449
		$valeurs_a_inserer['aa_id_annuaire'] = $id_annuaire ;
244
 
450
 
245
		$this->chargerModele('DonneeTemporaireModele');
451
		$this->chargerModele('DonneeTemporaireModele');
246
				
452
				
247
		$code_confirmation = $this->DonneeTemporaireModele->stockerDonneeTemporaire($valeurs_a_inserer);
453
		$code_confirmation = $this->DonneeTemporaireModele->stockerDonneeTemporaire($valeurs_a_inserer);
248
		
454
		
249
		$mail = $valeurs_mappees[$tableau_mappage[1]['champ_mail']]['valeur'];
455
		$mail = $valeurs_mappees[$tableau_mappage[1]['champ_mail']]['valeur'];
250
		$nom = $valeurs_mappees[$tableau_mappage[1]['champ_nom']]['valeur'];
456
		$nom = $valeurs_mappees[$tableau_mappage[1]['champ_nom']]['valeur'];
251
		$prenom = $valeurs_mappees[$tableau_mappage[1]['champ_prenom']]['valeur'];
457
		$prenom = $valeurs_mappees[$tableau_mappage[1]['champ_prenom']]['valeur'];
252
		
458
		
253
 
459
 
254
		$messagerie = new MessageControleur();
460
		$messagerie = new MessageControleur();
255
		
461
		
256
		$messagerie->envoyerMailConfirmationInscription($mail,
462
		$messagerie->envoyerMailConfirmationInscription($mail,
257
													$nom,
463
													$nom,
258
													$prenom,
464
													$prenom,
259
													$code_confirmation);
465
													$code_confirmation);
260
		// Si tout s'est bien passé, on affiche la page de confirmation
466
		// Si tout s'est bien passé, on affiche la page de confirmation
261
		return $this->getVue(Config::get('dossier_squelettes_annuaires').'annuaire_inscription_reussie',array());
467
		return $this->getVue(Config::get('dossier_squelettes_annuaires').'annuaire_inscription_reussie',array());
262
	}
468
	}
263
 
469
 
264
	/**
470
	/**
265
	 * Ajoute une nouvelle inscription à un annuaire à partir de données d'une table temporaire.
471
	 * Ajoute une nouvelle inscription à un annuaire à partir de données d'une table temporaire.
266
	 * Typiquement, on déclenche cette fonction en cliquant sur le lien contenu dans le mail de confirmation
472
	 * Typiquement, on déclenche cette fonction en cliquant sur le lien contenu dans le mail de confirmation
267
	 * @param int $indentifant L'identifant de session d'une tentative d'inscription
473
	 * @param int $indentifant L'identifant de session d'une tentative d'inscription
268
	 */
474
	 */
269
	public function ajouterNouvelleInscription($identifiant) {
475
	public function ajouterNouvelleInscription($identifiant) {
270
 
476
 
271
		$this->chargerModele('DonneeTemporaireModele');
477
		$this->chargerModele('DonneeTemporaireModele');
272
		$valeurs = $this->DonneeTemporaireModele->chargerDonneeTemporaire($identifiant);
478
		$valeurs = $this->DonneeTemporaireModele->chargerDonneeTemporaire($identifiant);
273
 
479
 
274
		if(!$valeurs || count($valeurs) == 0) {
480
		if(!$valeurs || count($valeurs) == 0) {
275
			// TODO afficher vue en cas d'echec
481
			// TODO afficher vue en cas d'echec
276
		}
482
		}
277
 
483
 
278
		$this->chargerModele('AnnuaireModele');
484
		$this->chargerModele('AnnuaireModele');
279
 
485
 
280
		$id_annuaire = $valeurs['aa_id_annuaire'];
486
		$id_annuaire = $valeurs['aa_id_annuaire'];
281
		unset($valeurs['aa_id_annuaire']);
487
		unset($valeurs['aa_id_annuaire']);
282
 
488
 
283
		$this->chargerModele('MetadonneeModele');
489
		$this->chargerModele('MetadonneeModele');
284
 
490
 
285
		$verificateur = new VerificationControleur();
491
		$verificateur = new VerificationControleur();
286
 
492
 
287
		$tableau_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
493
		$tableau_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
288
 
494
 
289
		$valeurs_mappees = array();
495
		$valeurs_mappees = array();
290
		$valeurs_metadonnees = array();
496
		$valeurs_metadonnees = array();
291
 
497
 
292
		$mail_nouvel_inscrit = $valeurs['mail_'.$tableau_mappage[1]['champ_mail']];
498
		$mail_nouvel_inscrit = $valeurs['mail_'.$tableau_mappage[1]['champ_mail']];
293
		$pass_nouvel_inscrit = $valeurs['password_'.$tableau_mappage[1]['champ_pass']];
499
		$pass_nouvel_inscrit = $valeurs['password_'.$tableau_mappage[1]['champ_pass']];
294
 
500
 
295
		$nom = $valeurs['text_'.$tableau_mappage[1]['champ_nom']];
501
		$nom = $valeurs['text_'.$tableau_mappage[1]['champ_nom']];
296
		$prenom = $valeurs['text_'.$tableau_mappage[1]['champ_prenom']];
502
		$prenom = $valeurs['text_'.$tableau_mappage[1]['champ_prenom']];
297
		$mail = $mail_nouvel_inscrit;
503
		$mail = $mail_nouvel_inscrit;
298
		$pass = $valeurs['password_'.$tableau_mappage[1]['champ_pass']];
504
		$pass = $valeurs['password_'.$tableau_mappage[1]['champ_pass']];
299
		$pays = $valeurs['select_'.$tableau_mappage[1]['champ_pays']];
505
		$pays = $valeurs['select_'.$tableau_mappage[1]['champ_pays']];
300
 
506
 
301
		// on itère sur le tableau de valeur pour récupérer les métadonnées;
507
		// on itère sur le tableau de valeur pour récupérer les métadonnées;
302
		foreach($valeurs as $nom_champ => $valeur) {
508
		foreach($valeurs as $nom_champ => $valeur) {
303
 
509
 
304
			// pour chaque valeur
510
			// pour chaque valeur
305
			// on extrait l'id du champ
511
			// on extrait l'id du champ
306
			$ids_champ = mb_split("_",$nom_champ, 2);
512
			$ids_champ = mb_split("_",$nom_champ, 2);
307
 
513
 
308
			$type = $ids_champ[0];
514
			$type = $ids_champ[0];
309
			$condition = false;
515
			$condition = false;
310
			$id_champ = $ids_champ[1];
516
			$id_champ = $ids_champ[1];
311
 
517
 
312
			// on fait des vérifications et des remplacements sur certaines valeurs
518
			// on fait des vérifications et des remplacements sur certaines valeurs
313
			$valeur = $verificateur->remplacerValeurChampPourInsertion($type,$valeur,$mail_nouvel_inscrit);
519
			$valeur = $verificateur->remplacerValeurChampPourInsertion($type,$valeur,$mail_nouvel_inscrit);
314
 
520
 
315
			// Si le champ fait partie des champs mappés
521
			// Si le champ fait partie des champs mappés
316
			$cle_champ = array_search($id_champ, $tableau_mappage[1]);
522
			$cle_champ = array_search($id_champ, $tableau_mappage[1]);
317
			if($cle_champ) {
523
			if($cle_champ) {
318
				// on ajoute sa clé correspondante dans l'annuaire mappé et sa valeur dans le tableau des champs mappés
524
				// on ajoute sa clé correspondante dans l'annuaire mappé et sa valeur dans le tableau des champs mappés
319
				$valeurs_mappees[$tableau_mappage[0][$cle_champ]] = $valeur;
525
				$valeurs_mappees[$tableau_mappage[0][$cle_champ]] = $valeur;
320
				// et on supprime sa valeur du tableau de valeurs pour ne pas la retrouver lors
526
				// et on supprime sa valeur du tableau de valeurs pour ne pas la retrouver lors
321
				// de l'insertion des métadonnées
527
				// de l'insertion des métadonnées
322
				unset($valeurs[$nom_champ]);
528
				unset($valeurs[$nom_champ]);
323
			} else {
529
			} else {
324
				$valeurs_metadonnees[$nom_champ] = $valeur;
530
				$valeurs_metadonnees[$nom_champ] = $valeur;
325
			}
531
			}
326
		}
532
		}
327
 
533
 
328
		// cas spécial du champ pays ou l'on fait un double stockage des données
534
		// cas spécial du champ pays ou l'on fait un double stockage des données
329
		if(isset($valeurs_mappees[$tableau_mappage[0]['champ_pays']])) {
535
		if(isset($valeurs_mappees[$tableau_mappage[0]['champ_pays']])) {
330
			$pays = $valeurs_mappees[$tableau_mappage[0]['champ_pays']];
536
			$pays = $valeurs_mappees[$tableau_mappage[0]['champ_pays']];
331
			$valeurs_metadonnees[$tableau_mappage[1]['champ_pays']] = $pays;
537
			$valeurs_metadonnees[$tableau_mappage[1]['champ_pays']] = $pays;
332
			$pays = $this->MetadonneeModele->renvoyerCorrespondanceAbreviationId($pays);
538
			$pays = $this->MetadonneeModele->renvoyerCorrespondanceAbreviationId($pays);
333
			$valeurs_mappees[$tableau_mappage[0]['champ_pays']] = $pays;
539
			$valeurs_mappees[$tableau_mappage[0]['champ_pays']] = $pays;
334
		}
540
		}
335
 
541
 
336
		// obtenir l'id du nouvel arrivant en faisant un select sur le mail qui doit être unique
542
		// obtenir l'id du nouvel arrivant en faisant un select sur le mail qui doit être unique
337
		$id_nouvel_inscrit = $this->AnnuaireModele->ajouterInscriptionDansAnnuaireMappe($id_annuaire,$valeurs_mappees, $tableau_mappage[0]);
543
		$id_nouvel_inscrit = $this->AnnuaireModele->ajouterInscriptionDansAnnuaireMappe($id_annuaire,$valeurs_mappees, $tableau_mappage[0]);
338
 
544
 
339
		// les champs de metadonnees arrivent avec un identifiant sous la forme type_condition_id
545
		// les champs de metadonnees arrivent avec un identifiant sous la forme type_condition_id
340
		foreach($valeurs_metadonnees as $nom_champ => $valeur) {
546
		foreach($valeurs_metadonnees as $nom_champ => $valeur) {
341
 
547
 
342
			// pour chaque valeur
548
			// pour chaque valeur
343
			// on extrait l'id du champ
549
			// on extrait l'id du champ
344
			$ids_champ = mb_split("_",$nom_champ);
550
			$ids_champ = mb_split("_",$nom_champ);
345
			$id_champ = $ids_champ[count($ids_champ) - 1];
551
			$id_champ = $ids_champ[count($ids_champ) - 1];
346
 
552
 
347
			// Si l'insertion dans la base a réussi
553
			// Si l'insertion dans la base a réussi
348
			if($this->MetadonneeModele->ajouterNouvelleValeurMetadonnee($id_champ,$id_nouvel_inscrit,$valeur)) {
554
			if($this->MetadonneeModele->ajouterNouvelleValeurMetadonnee($id_champ,$id_nouvel_inscrit,$valeur)) {
349
				// on continue
555
				// on continue
350
			} else {
556
			} else {
351
 
557
 
352
				// Si une des insertions échoue, on supprime les méta valeurs déjà entrées.
558
				// Si une des insertions échoue, on supprime les méta valeurs déjà entrées.
353
				// La transaction du pauvre en quelque sorte
559
				// La transaction du pauvre en quelque sorte
354
				$this->MetadonneeModele->supprimerValeursMetadonneesParIdEnregistrementLie($id_nouvel_inscrit);
560
				$this->MetadonneeModele->supprimerValeursMetadonneesParIdEnregistrementLie($id_nouvel_inscrit);
355
				return false;
561
				return false;
356
			}
562
			}
357
		}
563
		}
358
 
564
 
359
			$appli_controleur = new ApplicationExterneControleur();
565
			$appli_controleur = new ApplicationExterneControleur();
360
 
566
 
361
			$params = array (
567
			$params = array (
362
				'id_utilisateur' => $id_nouvel_inscrit,
568
				'id_utilisateur' => $id_nouvel_inscrit,
363
				'prenom' => $prenom,
569
				'prenom' => $prenom,
364
				'nom' => $nom,
570
				'nom' => $nom,
365
				'mail' => $mail,
571
				'mail' => $mail,
366
				'pass' => $pass,
572
				'pass' => $pass,
367
				'pays' => $pays,
573
				'pays' => $pays,
368
				'nouveau_pass' => '',
574
				'nouveau_pass' => '',
369
				'nouveau_mail' => ''
575
				'nouveau_mail' => ''
370
			);
576
			);
371
 
577
 
372
		// on crée un controleur qui appelle les webservice pour chaque application externe
578
		// on crée un controleur qui appelle les webservice pour chaque application externe
373
		$resumes_controleur = new ApplicationExterneControleur();
579
		$resumes_controleur = new ApplicationExterneControleur();
374
		$resumes_controleur->ajouterInscription($id_nouvel_inscrit, $params);
580
		$resumes_controleur->ajouterInscription($id_nouvel_inscrit, $params);
375
 
581
 
376
		// Si tout a réussi on supprime les données d'inscription temporaire
582
		// Si tout a réussi on supprime les données d'inscription temporaire
377
		$this->DonneeTemporaireModele->supprimerDonneeTemporaire($identifiant);
583
		$this->DonneeTemporaireModele->supprimerDonneeTemporaire($identifiant);
378
 
584
 
379
		$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire, false);
585
		$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire, false);
380
 
586
 
381
		// Identifier l'utilisateur !
587
		// Identifier l'utilisateur !
382
		$identificateur = new IdentificationControleur();
588
		$identificateur = new IdentificationControleur();
383
		
589
		
384
		if(config::get('identification')) {
590
		if(config::get('identification')) {
385
			$identificateur->deloggerUtilisateur();
591
			$identificateur->deloggerUtilisateur();
386
		}
592
		}
387
		
593
		
388
		$identificateur->loggerUtilisateur($mail, $pass);
594
		$identificateur->loggerUtilisateur($mail, $pass);
389
 
595
 
390
		// S'il existe une page d'accueil spécifique à l'annuaire pour la confirmation d'inscription
596
		// S'il existe une page d'accueil spécifique à l'annuaire pour la confirmation d'inscription
391
		if($this->templateExiste($annuaire['informations']['aa_code'].'_inscription_confirmation', Config::get('dossier_squelettes_annuaires'))) {
597
		if($this->templateExiste($annuaire['informations']['aa_code'].'_inscription_confirmation', Config::get('dossier_squelettes_annuaires'))) {
392
			// on l'affiche
598
			// on l'affiche
393
			$donnees = array('id_utilisateur' => $id_nouvel_inscrit, 'id_annuaire' => $id_annuaire);
599
			$donnees = array('id_utilisateur' => $id_nouvel_inscrit, 'id_annuaire' => $id_annuaire);
394
			return $this->getVue(Config::get('dossier_squelettes_annuaires').$annuaire['informations']['aa_code'].'_inscription_confirmation', $donnees);
600
			return $this->getVue(Config::get('dossier_squelettes_annuaires').$annuaire['informations']['aa_code'].'_inscription_confirmation', $donnees);
395
 
601
 
396
		} else {
602
		} else {
397
			// sinon on le redirige
603
			// sinon on le redirige
398
			return $this->afficherFicheUtilisateur($id_annuaire, $id_nouvel_inscrit);
604
			return $this->afficherFicheUtilisateur($id_annuaire, $id_nouvel_inscrit);
399
		}
605
		}
400
	}
606
	}
401
 
607
 
402
	/**
608
	/**
403
	 * Affiche la fiche principale d'un utilisateur
609
	 * Affiche la fiche principale d'un utilisateur
404
	 * @param int $id_annuaire l'identifiant de l'annuaire
610
	 * @param int $id_annuaire l'identifiant de l'annuaire
405
	 * @param int $id_utilisateur l'identifiant de l'utilisateur
611
	 * @param int $id_utilisateur l'identifiant de l'utilisateur
406
	 * @return string la vue contenant la fiche utilisateur
612
	 * @return string la vue contenant la fiche utilisateur
407
	 */
613
	 */
408
	public function afficherFicheUtilisateur($id_annuaire, $id_utilisateur) {
614
	public function afficherFicheUtilisateur($id_annuaire, $id_utilisateur) {
409
 
615
 
410
		// Chargement des informations de l'utilisateur dans la table annuaire principale
616
		// Chargement des informations de l'utilisateur dans la table annuaire principale
411
		$this->chargerModele('AnnuaireModele');
617
		$this->chargerModele('AnnuaireModele');
412
		$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire);
618
		$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire);
413
 
619
 
414
		$donnees['id_annuaire'] = $id_annuaire;
620
		$donnees['id_annuaire'] = $id_annuaire;
415
		$donnees['id_utilisateur'] = $id_utilisateur;
621
		$donnees['id_utilisateur'] = $id_utilisateur;
416
		
622
		
417
		$verificateur = new VerificationControleur();
623
		$verificateur = new VerificationControleur();
418
		
624
		
419
		$champs = $this->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur);
625
		$champs = $this->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur);
420
 
626
 
421
		$donnees['champs'] = $champs;
627
		$donnees['champs'] = $champs;
422
 
628
 
423
		/*if(Registre::getInstance()->get('est_admin')) {
629
		/*if(Registre::getInstance()->get('est_admin')) {
424
			$donnees['formulaire_blocage'] = $this->getVue(Config::get('dossier_squelettes_elements').'blocage',$donnees);
630
			$donnees['formulaire_blocage'] = $this->getVue(Config::get('dossier_squelettes_elements').'blocage',$donnees);
425
		}*/
631
		}*/
426
 
632
 
427
		$fiche_inscrit = $this->getVue(Config::get('dossier_squelettes_fiches').$annuaire['informations']['aa_code'].'_fiche',$donnees);
633
		$fiche_inscrit = $this->getVue(Config::get('dossier_squelettes_fiches').$annuaire['informations']['aa_code'].'_fiche',$donnees);
428
 
634
 
429
		return $fiche_inscrit;
635
		return $fiche_inscrit;
430
	}
636
	}
431
 
637
 
432
	/** Affiche le resumé des contributions d'un utilisateur
638
	/** Affiche le resumé des contributions d'un utilisateur
433
	 * @param int $id_annuaire l'identifiant de l'annuaire
639
	 * @param int $id_annuaire l'identifiant de l'annuaire
434
	 * @param int $id_utilisateur l'identifiant de l'utilisateur
640
	 * @param int $id_utilisateur l'identifiant de l'utilisateur
435
	 * @return string la vue contenant les contributions utilisateur
641
	 * @return string la vue contenant les contributions utilisateur
436
	 */
642
	 */
437
	public function afficherFicheResumeUtilisateur($id_annuaire, $id_utilisateur) {
643
	public function afficherFicheResumeUtilisateur($id_annuaire, $id_utilisateur) {
438
 
644
 
439
		$this->chargerModele('AnnuaireModele');
645
		$this->chargerModele('AnnuaireModele');
440
		$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire);
646
		$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire);
441
		
647
		
442
		$champs = $this->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur);
648
		$champs = $this->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur);
443
		$mail_utilisateur = $this->AnnuaireModele->obtenirMailParId($id_annuaire,$id_utilisateur);
649
		$mail_utilisateur = $this->AnnuaireModele->obtenirMailParId($id_annuaire,$id_utilisateur);
444
 
650
 
445
		$donnees['id_annuaire'] = $id_annuaire;
651
		$donnees['id_annuaire'] = $id_annuaire;
446
		$donnees['id_utilisateur'] = $id_utilisateur;
652
		$donnees['id_utilisateur'] = $id_utilisateur;
447
		$donnees['mail_utilisateur'] = $mail_utilisateur;
653
		$donnees['mail_utilisateur'] = $mail_utilisateur;
448
 
654
 
449
		$url_modification_profil = new Url(Config::get('base_url_application'));
655
		$url_modification_profil = new Url(Config::get('base_url_application'));
450
		$url_modification_profil->setVariableRequete('m','annuaire_formulaire_modification_inscription');
656
		$url_modification_profil->setVariableRequete('m','annuaire_formulaire_modification_inscription');
451
		$url_modification_profil->setVariableRequete('id_annuaire',$id_annuaire);
657
		$url_modification_profil->setVariableRequete('id_annuaire',$id_annuaire);
452
		$url_modification_profil->setVariableRequete('id_utilisateur',$id_utilisateur);
658
		$url_modification_profil->setVariableRequete('id_utilisateur',$id_utilisateur);
453
 
659
 
454
		$url_oubli_mdp = new Url(Config::get('base_url_application'));
660
		$url_oubli_mdp = new Url(Config::get('base_url_application'));
455
		$url_oubli_mdp->setVariableRequete('m','annuaire_afficher_formulaire_oubli_mdp');
661
		$url_oubli_mdp->setVariableRequete('m','annuaire_afficher_formulaire_oubli_mdp');
456
		$url_oubli_mdp->setVariableRequete('id_annuaire',$id_annuaire);
662
		$url_oubli_mdp->setVariableRequete('id_annuaire',$id_annuaire);
457
		$url_oubli_mdp->setVariableRequete('id_utilisateur',$id_utilisateur);
663
		$url_oubli_mdp->setVariableRequete('id_utilisateur',$id_utilisateur);
458
 
664
 
459
		$donnees['url_oubli_mdp'] = $url_oubli_mdp;
665
		$donnees['url_oubli_mdp'] = $url_oubli_mdp;
460
 
666
 
461
		$donnees['url_modification_profil'] = $url_modification_profil;
667
		$donnees['url_modification_profil'] = $url_modification_profil;
462
 
668
 
463
		$donnees['champs'] = $champs;
669
		$donnees['champs'] = $champs;
464
 
670
 
465
		// on crée un controleur appelle les hooks de résumé pour chaque application externe
671
		// on crée un controleur appelle les hooks de résumé pour chaque application externe
466
		$resumes_controleur = new ApplicationExterneControleur();
672
		$resumes_controleur = new ApplicationExterneControleur();
467
 
673
 
468
		$donnees['resumes'] = $resumes_controleur->obtenirResume($id_utilisateur,$mail_utilisateur);
674
		$donnees['resumes'] = $resumes_controleur->obtenirResume($id_utilisateur,$mail_utilisateur);
469
		$donnees['carte_id'] = $this->getVue(Config::get('dossier_squelettes_fiches').$annuaire['informations']['aa_code'].'_carte_id',$donnees);
675
		$donnees['carte_id'] = $this->getVue(Config::get('dossier_squelettes_fiches').$annuaire['informations']['aa_code'].'_carte_id',$donnees);
470
 
676
 
471
		$fiche_contrib = $this->getVue(Config::get('dossier_squelettes_fiches').$annuaire['informations']['aa_code'].'_resume',$donnees);
677
		$fiche_contrib = $this->getVue(Config::get('dossier_squelettes_fiches').$annuaire['informations']['aa_code'].'_resume',$donnees);
472
 
678
 
473
		return $fiche_contrib;
679
		return $fiche_contrib;
474
	}
680
	}
475
 
681
 
476
	public function gererInscriptionExterne($id_annuaire, $id_utilisateur) {
682
	public function gererInscriptionExterne($id_annuaire, $id_utilisateur) {
477
 
683
 
478
		$this->chargerModele('AnnuaireModele');
684
		$this->chargerModele('AnnuaireModele');
479
		$mail_utilisateur = $this->AnnuaireModele->obtenirMailParId($id_annuaire,$id_utilisateur);
685
		$mail_utilisateur = $this->AnnuaireModele->obtenirMailParId($id_annuaire,$id_utilisateur);
480
 
686
 
481
		$donnees['id_annuaire'] = $id_annuaire;
687
		$donnees['id_annuaire'] = $id_annuaire;
482
		$donnees['id_utilisateur'] = $id_utilisateur;
688
		$donnees['id_utilisateur'] = $id_utilisateur;
483
 
689
 
484
		// on crée un controleur appelle les hooks de résumé pour chaque application externe
690
		// on crée un controleur appelle les hooks de résumé pour chaque application externe
485
		$resumes_controleur = new ApplicationExterneControleur();
691
		$resumes_controleur = new ApplicationExterneControleur();
486
 
692
 
487
		$donnees['champs'] = $this->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur);
693
		$donnees['champs'] = $this->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur);
488
		
694
		
489
		//Debug::printr($champs);
695
		//Debug::printr($champs);
490
		$donnees['resumes'] = $resumes_controleur->gererInscription($id_utilisateur,$mail_utilisateur);
696
		$donnees['resumes'] = $resumes_controleur->gererInscription($id_utilisateur,$mail_utilisateur);
491
		$donnees['carte_id'] = $this->getVue(Config::get('dossier_squelettes_fiches').'annuaire_tela_inscrits_carte_id',$donnees);
697
		$donnees['carte_id'] = $this->getVue(Config::get('dossier_squelettes_fiches').'annuaire_tela_inscrits_carte_id',$donnees);
492
 
698
 
493
		$fiche_contrib = $this->getVue(Config::get('dossier_squelettes_fiches').'annuaire_tela_inscrits_gestion_inscription',$donnees);
699
		$fiche_contrib = $this->getVue(Config::get('dossier_squelettes_fiches').'annuaire_tela_inscrits_gestion_inscription',$donnees);
494
 
700
 
495
		return $fiche_contrib;
701
		return $fiche_contrib;
496
	}
702
	}
497
 
703
 
498
	public function afficherFormulaireModificationInscription($id_annuaire, $id_utilisateur, $erreurs = array()) {
704
	public function afficherFormulaireModificationInscription($id_annuaire, $id_utilisateur, $erreurs = array()) {
499
		
705
		
500
		$this->chargerModele('AnnuaireModele');
706
		$this->chargerModele('AnnuaireModele');
501
		$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire);
707
		$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire);
502
		
708
		
503
		$donnees['aa_id_annuaire'] = $id_annuaire;
709
		$donnees['aa_id_annuaire'] = $id_annuaire;
504
		
710
		
505
		$this->chargerModele('MetadonneeModele');
711
		$this->chargerModele('MetadonneeModele');
506
		$champ_metadonnees = $this->MetadonneeModele->chargerListeMetadonneeAnnuaire($id_annuaire);
712
		$champ_metadonnees = $this->MetadonneeModele->chargerListeMetadonneeAnnuaire($id_annuaire);
507
		$valeurs_metadonnees = $this->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur);
713
		$valeurs_metadonnees = $this->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur);
508
		
714
		
509
		// TODO: ceci charge toutes les métadonnées, voir si l'on ne peut pas parser le formulaire
715
		// TODO: ceci charge toutes les métadonnées, voir si l'on ne peut pas parser le formulaire
510
		// pour ne charger que ce qui est nécéssaire
716
		// pour ne charger que ce qui est nécéssaire
511
		foreach($champ_metadonnees as $champ_metadonnee) {
717
		foreach($champ_metadonnees as $champ_metadonnee) {
512
 
718
 
513
			$id_champ = $champ_metadonnee['amc_id_champ'];
719
			$id_champ = $champ_metadonnee['amc_id_champ'];
514
			$nom_champ = $champ_metadonnee['amc_abreviation'];
720
			$nom_champ = $champ_metadonnee['amc_abreviation'];
515
			
721
			
516
			if(isset($valeurs_metadonnees[$nom_champ])) {
722
			if(isset($valeurs_metadonnees[$nom_champ])) {
517
				//echo Debug::printr($valeurs_metadonnees[$nom_champ]).'<br />';
723
				//echo Debug::printr($valeurs_metadonnees[$nom_champ]).'<br />';
518
				$champ_metadonnee['valeur_defaut'] = $valeurs_metadonnees[$nom_champ];
724
				$champ_metadonnee['valeur_defaut'] = $valeurs_metadonnees[$nom_champ];
519
			}
725
			}
520
 
726
 
521
			$champ_metadonnee['aa_id_annuaire'] = $id_annuaire;
727
			$champ_metadonnee['aa_id_annuaire'] = $id_annuaire;
522
			// on charge le formulaire d'affichage de chacune des métadonnées
728
			// on charge le formulaire d'affichage de chacune des métadonnées
523
			$donnees['champs'][$nom_champ] = $this->afficherFormulaireChampMetadonnees($id_champ,$champ_metadonnee);
729
			$donnees['champs'][$nom_champ] = $this->afficherFormulaireChampMetadonnees($id_champ,$champ_metadonnee);
524
 
730
 
525
		}
731
		}
526
 
732
 
527
		$donnees['id_utilisateur'] = $id_utilisateur;
733
		$donnees['id_utilisateur'] = $id_utilisateur;
528
		$donnees['erreurs'] = $erreurs;
734
		$donnees['erreurs'] = $erreurs;
529
 
735
 
530
		// le nom du formulaire d'inscription est le même que le code de l'annuaire du genre code_annuaire_inscription
736
		// le nom du formulaire d'inscription est le même que le code de l'annuaire du genre code_annuaire_inscription
531
		if(!$this->formulaireExiste($annuaire['informations']['aa_code'])) {
737
		if(!$this->formulaireExiste($annuaire['informations']['aa_code'])) {
532
			$formulaire_inscription = $this->genererFormulaireInscription($donnees);
738
			$formulaire_inscription = $this->genererFormulaireInscription($donnees);
533
		} else {
739
		} else {
534
			$formulaire_inscription = $this->GetVue(Config::get('dossier_squelettes_formulaires').$annuaire['informations']['aa_code'].'_modification',$donnees);
740
			$formulaire_inscription = $this->GetVue(Config::get('dossier_squelettes_formulaires').$annuaire['informations']['aa_code'].'_modification',$donnees);
535
		}
741
		}
536
 
742
 
537
		return $formulaire_inscription;
743
		return $formulaire_inscription;
538
 
744
 
539
	}
745
	}
540
 
746
 
541
	public function modifierInscription($valeurs) {
747
	public function modifierInscription($valeurs) {
542
 
748
 
543
		$this->chargerModele('MetadonneeModele');
749
		$this->chargerModele('MetadonneeModele');
544
 
750
 
545
		$id_utilisateur = $valeurs['id_utilisateur'];
751
		$id_utilisateur = $valeurs['id_utilisateur'];
546
		unset($valeurs['id_utilisateur']);
752
		unset($valeurs['id_utilisateur']);
547
 
753
 
548
		$id_annuaire = $valeurs['aa_id_annuaire'];
754
		$id_annuaire = $valeurs['aa_id_annuaire'];
549
		unset($valeurs['aa_id_annuaire']);
755
		unset($valeurs['aa_id_annuaire']);
550
 
756
 
551
		$this->chargerModele('MetadonneeModele');
757
		$this->chargerModele('MetadonneeModele');
552
		$tableau_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
758
		$tableau_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
553
 
759
 
554
		$mail_utilisateur = $this->AnnuaireModele->obtenirMailParId($id_annuaire, $id_utilisateur);
760
		$mail_utilisateur = $this->AnnuaireModele->obtenirMailParId($id_annuaire, $id_utilisateur);
555
		$ancien_mail = $mail_utilisateur;
761
		$ancien_mail = $mail_utilisateur;
556
 
762
 
557
		$verificateur = new VerificationControleur();
763
		$verificateur = new VerificationControleur();
558
 
764
 
559
		$valeurs_mappees = array();
765
		$valeurs_mappees = array();
560
		$valeurs_metadonnees = array();
766
		$valeurs_metadonnees = array();
561
 
767
 
562
		$erreurs = array();
768
		$erreurs = array();
563
 
769
 
564
		// on itère sur le tableau de valeur pour récupérer les métadonnées
770
		// on itère sur le tableau de valeur pour récupérer les métadonnées
565
		// et les valeurs
771
		// et les valeurs
566
		foreach($valeurs as $nom_champ => $valeur) {
772
		foreach($valeurs as $nom_champ => $valeur) {
567
 
773
 
568
			// pour chaque valeur
774
			// pour chaque valeur
569
			// on extrait l'id du champ
775
			// on extrait l'id du champ
570
			$ids_champ = mb_split("_",$nom_champ);
776
			$ids_champ = mb_split("_",$nom_champ);
571
 
777
 
572
			$confirmation = false;
778
			$confirmation = false;
573
			$valeur_a_ignorer = false;
779
			$valeur_a_ignorer = false;
574
 
780
 
575
			// l'identifiant du champ est la dernière valeur du tableau
781
			// l'identifiant du champ est la dernière valeur du tableau
576
			if(count($ids_champ) == 3) {
782
			if(count($ids_champ) == 3) {
577
 
783
 
578
				$type = $ids_champ[0];
784
				$type = $ids_champ[0];
579
				$id_champ = $ids_champ[2];
785
				$id_champ = $ids_champ[2];
580
				$condition = $ids_champ[1];
786
				$condition = $ids_champ[1];
581
 
787
 
582
			} else {
788
			} else {
583
				$type = $ids_champ[0];
789
				$type = $ids_champ[0];
584
				$condition = false;
790
				$condition = false;
585
				$id_champ = $ids_champ[1];
791
				$id_champ = $ids_champ[1];
586
			}
792
			}
587
 
793
 
588
			if($type == 'checkbox' && $condition != 'hidden') {
794
			if($type == 'checkbox' && $condition != 'hidden') {
589
				// on récupère la valeur
795
				// on récupère la valeur
590
					$nom_champ = $type.'_'.$id_champ;
796
					$nom_champ = $type.'_'.$id_champ;
591
					$valeur = $valeurs[$type.'_'.$id_champ];
797
					$valeur = $valeurs[$type.'_'.$id_champ];
592
			}
798
			}
593
 
799
 
594
			// cas de la checkbox qui devrait être là mais pas cochée
800
			// cas de la checkbox qui devrait être là mais pas cochée
595
			if($condition == 'hidden') {
801
			if($condition == 'hidden') {
596
 
802
 
597
				if(!isset($valeurs[$type.'_'.$id_champ])) {
803
				if(!isset($valeurs[$type.'_'.$id_champ])) {
598
					// dans ce cas là on fabrique une valeur qui vaut 0
804
					// dans ce cas là on fabrique une valeur qui vaut 0
599
					$nom_champ = $type.'_'.$id_champ;
805
					$nom_champ = $type.'_'.$id_champ;
600
					$valeur = '0';
806
					$valeur = '0';
601
				} else {
807
				} else {
602
					// sinon la valeur a déjà été traitée et doit être ignorée
808
					// sinon la valeur a déjà été traitée et doit être ignorée
603
					$valeur_a_ignorer = true;
809
					$valeur_a_ignorer = true;
604
				}
810
				}
605
			}
811
			}
606
 
812
 
607
			if($type ==  'mail') {
813
			if($type ==  'mail') {
608
				$mail_utilisateur = $valeur;
814
				$mail_utilisateur = $valeur;
609
			}
815
			}
610
 
816
 
611
			// cas du changement de mot de passe
817
			// cas du changement de mot de passe
612
			if($type == 'password') {
818
			if($type == 'password') {
613
 
819
 
614
				if($condition == 'conf') {
820
				if($condition == 'conf') {
615
					$valeur_a_ignorer = true;
821
					$valeur_a_ignorer = true;
616
				}
822
				}
617
 
823
 
618
				$tentative_changemement_mdp = false;
824
				$tentative_changemement_mdp = false;
619
 
825
 
620
				if(isset($valeurs[$type.'_conf_'.$id_champ]) && trim($valeurs[$type.'_conf_'.$id_champ]) != '') {
826
				if(isset($valeurs[$type.'_conf_'.$id_champ]) && trim($valeurs[$type.'_conf_'.$id_champ]) != '') {
621
					$tentative_changemement_mdp = true;
827
					$tentative_changemement_mdp = true;
622
				} else {
828
				} else {
623
					$valeur_a_ignorer = true;
829
					$valeur_a_ignorer = true;
624
				}
830
				}
625
 
831
 
626
				if($tentative_changemement_mdp) {
832
				if($tentative_changemement_mdp) {
627
					$confirmation = $valeurs[$type.'_conf_'.$id_champ];
833
					$confirmation = $valeurs[$type.'_conf_'.$id_champ];
628
				}
834
				}
629
			}
835
			}
630
 
836
 
631
			// Si la valeur n'est présente dans le formulaire que pour des raisons de vérification
837
			// Si la valeur n'est présente dans le formulaire que pour des raisons de vérification
632
			// on passe à l'iteration suivante
838
			// on passe à l'iteration suivante
633
			if($valeur_a_ignorer) {
839
			if($valeur_a_ignorer) {
634
				continue;
840
				continue;
635
			}
841
			}
636
 
842
 
637
			$verification = $verificateur->verifierErreurChampModification($id_annuaire, $id_utilisateur, $type , $valeur, $confirmation);
843
			$verification = $verificateur->verifierErreurChampModification($id_annuaire, $id_utilisateur, $type , $valeur, $confirmation);
638
 
844
 
639
			if($verification[0] == false) {
845
			if($verification[0] == false) {
640
				$erreurs[$type.'_'.$id_champ] = $verification[1];
846
				$erreurs[$type.'_'.$id_champ] = $verification[1];
641
 
847
 
642
			}
848
			}
643
 
849
 
644
			// on fait des vérifications et des remplacements sur certaines valeurs
850
			// on fait des vérifications et des remplacements sur certaines valeurs
645
			// et quelques fois des actions externes
851
			// et quelques fois des actions externes
646
			$valeur = $verificateur->remplacerValeurChampPourModification($id_annuaire, $id_utilisateur, $type, $valeur, $mail_utilisateur);
852
			$valeur = $verificateur->remplacerValeurChampPourModification($id_annuaire, $id_utilisateur, $type, $valeur, $mail_utilisateur);
647
 
853
 
648
			// Si le champ fait partie des champs mappés
854
			// Si le champ fait partie des champs mappés
649
			$cle_champ = array_search($id_champ, $tableau_mappage[1]);
855
			$cle_champ = array_search($id_champ, $tableau_mappage[1]);
650
			if($cle_champ) {
856
			if($cle_champ) {
651
				// on ajoute sa clé correspondante dans l'annuaire mappé et sa valeur dans le tableau des champs mappés
857
				// on ajoute sa clé correspondante dans l'annuaire mappé et sa valeur dans le tableau des champs mappés
652
				$valeurs_mappees[$tableau_mappage[0][$cle_champ]] = $valeur;
858
				$valeurs_mappees[$tableau_mappage[0][$cle_champ]] = $valeur;
653
			} else {
859
			} else {
654
				// sinon, il est stocké dans les valeurs de metadonnées
860
				// sinon, il est stocké dans les valeurs de metadonnées
655
				$valeurs_metadonnees[$id_champ] = $valeur;
861
				$valeurs_metadonnees[$id_champ] = $valeur;
656
			}
862
			}
657
		}
863
		}
658
 
864
 
659
		if(count($erreurs) > 0) {
865
		if(count($erreurs) > 0) {
660
			return $this->afficherFormulaireModificationInscription($id_annuaire,$id_utilisateur,$erreurs);
866
			return $this->afficherFormulaireModificationInscription($id_annuaire,$id_utilisateur,$erreurs);
661
		}
867
		}
662
 
868
 
663
 
869
 
664
		if(isset($valeurs_mappees[$tableau_mappage[0]['champ_pays']])) {
870
		if(isset($valeurs_mappees[$tableau_mappage[0]['champ_pays']])) {
665
			$pays = $valeurs_mappees[$tableau_mappage[0]['champ_pays']];
871
			$pays = $valeurs_mappees[$tableau_mappage[0]['champ_pays']];
666
			$valeurs_metadonnees[$tableau_mappage[1]['champ_pays']] = $pays;
872
			$valeurs_metadonnees[$tableau_mappage[1]['champ_pays']] = $pays;
667
			$pays = $this->MetadonneeModele->renvoyerCorrespondanceAbreviationId($pays);
873
			$pays = $this->MetadonneeModele->renvoyerCorrespondanceAbreviationId($pays);
668
			$valeurs_mappees[$tableau_mappage[0]['champ_pays']] = $pays;
874
			$valeurs_mappees[$tableau_mappage[0]['champ_pays']] = $pays;
669
		}
875
		}
670
 
876
 
671
 
877
 
672
		$this->chargerModele('AnnuaireModele');
878
		$this->chargerModele('AnnuaireModele');
673
		$modification_annuaire = $this->AnnuaireModele->modifierInscriptionDansAnnuaireMappe($id_annuaire, $id_utilisateur ,$valeurs_mappees, $tableau_mappage[0]);
879
		$modification_annuaire = $this->AnnuaireModele->modifierInscriptionDansAnnuaireMappe($id_annuaire, $id_utilisateur ,$valeurs_mappees, $tableau_mappage[0]);
674
 
880
 
675
		$nouveau_mail = $this->AnnuaireModele->obtenirMailParId($id_annuaire, $id_utilisateur);
881
		$nouveau_mail = $this->AnnuaireModele->obtenirMailParId($id_annuaire, $id_utilisateur);
-
 
882
		
-
 
883
		$changement_mail = false;
676
 
884
 
677
		// Si le mail a changé alors il faut appeler les applications externes pour modification
885
		// Si le mail a changé alors il faut appeler les applications externes pour modification
678
		if($ancien_mail != $mail_utilisateur || $tentative_changemement_mdp) {
886
		if($ancien_mail != $mail_utilisateur || $tentative_changemement_mdp) {
-
 
887
			
-
 
888
			if($ancien_mail != $mail_utilisateur) {
-
 
889
				$changement_mail = true;
-
 
890
			}
679
 
891
 
680
			$nom = $valeurs['text_'.$tableau_mappage[1]['champ_nom']];
892
			$nom = $valeurs['text_'.$tableau_mappage[1]['champ_nom']];
681
			$prenom = $valeurs['text_'.$tableau_mappage[1]['champ_prenom']];
893
			$prenom = $valeurs['text_'.$tableau_mappage[1]['champ_prenom']];
682
			$ancien_mail = $ancien_mail;
894
			$ancien_mail = $ancien_mail;
683
			$mail = $mail_utilisateur;
895
			$mail = $mail_utilisateur;
684
			$pass = $valeurs['password_'.$tableau_mappage[1]['champ_pass']];
896
			$pass = $valeurs['password_'.$tableau_mappage[1]['champ_pass']];
685
 
897
 
686
			$appli_controleur = new ApplicationExterneControleur();
898
			$appli_controleur = new ApplicationExterneControleur();
687
 
899
 
688
			$params = array (
900
			$params = array (
689
				'id_utilisateur' => $id_utilisateur,
901
				'id_utilisateur' => $id_utilisateur,
690
				'prenom' => $prenom,
902
				'prenom' => $prenom,
691
				'nom' => $nom,
903
				'nom' => $nom,
692
				'mail' => $mail,
904
				'mail' => $mail,
693
				'pass' => $pass,
905
				'pass' => $pass,
694
				'pays' => $pays,
906
				'pays' => $pays,
695
				'nouveau_pass' => $pass,
907
				'nouveau_pass' => $pass,
696
				'nouveau_mail' => $nouveau_mail
908
				'nouveau_mail' => $nouveau_mail
697
			);
909
			);
698
 
910
 
699
			$appli_controleur->modifierInscription($id_utilisateur, $params);
911
			$appli_controleur->modifierInscription($id_utilisateur, $params);
700
 
-
 
701
			// pour qu'ils lancent les procédures de désinscription associées
-
 
702
			$lettre_controleur = new LettreControleur();
-
 
703
			$lettre_controleur->modificationInscriptionLettreActualite($ancien_mail, $nouveau_mail);
-
 
704
		}
912
		}
705
 
913
 
706
		// les champs arrivent avec un identifiant sous la forme type_xxx_id
914
		// les champs arrivent avec un identifiant sous la forme type_xxx_id
707
		foreach($valeurs_metadonnees as $id_champ => $valeur) {
915
		foreach($valeurs_metadonnees as $id_champ => $valeur) {
708
 
916
 
709
			// S'il existe déjà une valeur de metadonnée pour cette colonne et cet utilisateur
917
			// S'il existe déjà une valeur de metadonnée pour cette colonne et cet utilisateur
710
			// car on a pu ajouter de nouveaux champs entre temps
918
			// car on a pu ajouter de nouveaux champs entre temps
711
			if($this->MetadonneeModele->valeurExiste($id_champ,$id_utilisateur)) {
919
			if($this->MetadonneeModele->valeurExiste($id_champ,$id_utilisateur)) {
712
				// On se contente de la modifier
920
				// On se contente de la modifier
713
				$this->MetadonneeModele->modifierValeurMetadonnee($id_champ,$id_utilisateur,$valeur);
921
				$this->MetadonneeModele->modifierValeurMetadonnee($id_champ,$id_utilisateur,$valeur);
714
 
922
 
715
			} else {
923
			} else {
716
				// S'il n'existe pas de valeur, on ajoute une nouvelle ligne à la table de valeurs de meta données
924
				// S'il n'existe pas de valeur, on ajoute une nouvelle ligne à la table de valeurs de meta données
717
				if($this->MetadonneeModele->ajouterNouvelleValeurMetadonnee($id_champ,$id_utilisateur,$valeur)) {
925
				if($this->MetadonneeModele->ajouterNouvelleValeurMetadonnee($id_champ,$id_utilisateur,$valeur)) {
718
					// Si l'insertion a réussi, on continue
926
					// Si l'insertion a réussi, on continue
719
				} else {
927
				} else {
720
					return false;
928
					return false;
721
				}
929
				}
722
			}
930
			}
723
		}
931
		}
-
 
932
		
-
 
933
		if($changement_mail) {
-
 
934
			$identificateur = new IdentificationControleur();
-
 
935
			$identificateur->setUtilisateur($nouveau_mail);
-
 
936
		}
724
 
937
 
725
		return $this->afficherFicheUtilisateur($id_annuaire, $id_utilisateur);
938
		return $this->afficherFicheUtilisateur($id_annuaire, $id_utilisateur);
726
	}
939
	}
727
 
940
 
728
	public function bloquerDebloquerUtilisateur($id_annuaire, $id_utilisateur, $bloquer = true) {
941
	public function bloquerDebloquerUtilisateur($id_annuaire, $id_utilisateur, $bloquer = true) {
729
 
942
 
730
		$annuaire_modele = $this->getModele('AnnuaireModele');
943
		$annuaire_modele = $this->getModele('AnnuaireModele');
731
		$champs_description = $annuaire_modele->obtenirChampsDescriptionAnnuaire($id_annuaire);
944
		$champs_description = $annuaire_modele->obtenirChampsDescriptionAnnuaire($id_annuaire);
732
 
945
 
733
		$valeur = '0';
946
		$valeur = '0';
734
 
947
 
735
		if($bloquer) {
948
		if($bloquer) {
736
			$valeur = '1';
949
			$valeur = '1';
737
		}
950
		}
738
 
951
 
739
		$metadonne_modele = $this->getModele('MetadonneeModele');
952
		$metadonne_modele = $this->getModele('MetadonneeModele');
740
		$metadonne_modele->modifierValeurMetadonnee($champs_description[1]['champ_statut'],$id_utilisateur,$valeur);
953
		$metadonne_modele->modifierValeurMetadonnee($champs_description[1]['champ_statut'],$id_utilisateur,$valeur);
741
 
954
 
742
		return $this->afficherFicheUtilisateur($id_annuaire, $id_utilisateur);
955
		return $this->afficherFicheUtilisateur($id_annuaire, $id_utilisateur);
743
	}
956
	}
744
 
957
 
745
	/**
958
	/**
746
	 * Affiche le formulaire permettant d'entrer un mail et de recevoir le mot de passe
959
	 * Affiche le formulaire permettant d'entrer un mail et de recevoir le mot de passe
747
	 * associé sur cette adresse
960
	 * associé sur cette adresse
748
	 * @param int $id_annuaire l'identifiant de l'annuaire associé
961
	 * @param int $id_annuaire l'identifiant de l'annuaire associé
749
	 */
962
	 */
750
	public function afficherFormulaireOubliMotDePasse($id_annuaire) {
963
	public function afficherFormulaireOubliMotDePasse($id_annuaire) {
751
 
964
 
752
		$donnees['aa_id_annuaire'] = $id_annuaire;
965
		$donnees['aa_id_annuaire'] = $id_annuaire;
753
		return $this->getVue(Config::get('dossier_squelettes_formulaires').'oubli_mdp',$donnees);
966
		return $this->getVue(Config::get('dossier_squelettes_formulaires').'oubli_mdp',$donnees);
754
	}
967
	}
755
 
968
 
756
	/**
969
	/**
757
	 * Supprime l'ancien mot de passe d'un utilisateur et crée un nouveau mot de passe
970
	 * Supprime l'ancien mot de passe d'un utilisateur et crée un nouveau mot de passe
758
	 * aléatoire qui sera envoyé par mail
971
	 * aléatoire qui sera envoyé par mail
759
	 * @param int $id_annuaire l'identifiant de l'annuaire associé
972
	 * @param int $id_annuaire l'identifiant de l'annuaire associé
760
	 * @param int $mail le mail auquel on envoie le mot de passe
973
	 * @param int $mail le mail auquel on envoie le mot de passe
761
	 *
974
	 *
762
	 */
975
	 */
763
	public function reinitialiserMotDePasse($id_annuaire, $mail) {
976
	public function reinitialiserMotDePasse($id_annuaire, $mail) {
764
 
977
 
765
		$this->chargerModele('AnnuaireModele');
978
		$this->chargerModele('AnnuaireModele');
766
		$verificateur = new VerificationControleur();
979
		$verificateur = new VerificationControleur();
767
		$messagerie = new MessageControleur();
980
		$messagerie = new MessageControleur();
768
 
981
 
769
		$donnees = array();
982
		$donnees = array();
770
 
983
 
771
		if(!$verificateur->mailValide($mail) || !$this->AnnuaireModele->utilisateurExisteParMail($id_annuaire,$mail)) {
984
		if(!$verificateur->mailValide($mail) || !$this->AnnuaireModele->utilisateurExisteParMail($id_annuaire,$mail)) {
772
			$donnees['erreurs']['mail'] = 'Cet utilisateur n\'existe pas';
985
			$donnees['erreurs']['mail'] = 'Cet utilisateur n\'existe pas';
773
			$donnees['aa_id_annuaire'] = $id_annuaire;
986
			$donnees['aa_id_annuaire'] = $id_annuaire;
774
			return $this->getVue(Config::get('dossier_squelettes_formulaires').'oubli_mdp',$donnees);
987
			return $this->getVue(Config::get('dossier_squelettes_formulaires').'oubli_mdp',$donnees);
775
		}
988
		}
776
		
989
		
777
		$nouveau_mdp = $verificateur->genererMotDePasse();
990
		$nouveau_mdp = $verificateur->genererMotDePasse();
778
		$nouveau_mdp_encrypte = $verificateur->encrypterMotDePasse($nouveau_mdp);
991
		$nouveau_mdp_encrypte = $verificateur->encrypterMotDePasse($nouveau_mdp);
779
		
992
		
780
		$modif_mdp = $this->AnnuaireModele->reinitialiserMotDePasse($id_annuaire, $mail, $nouveau_mdp_encrypte);
993
		$modif_mdp = $this->AnnuaireModele->reinitialiserMotDePasse($id_annuaire, $mail, $nouveau_mdp_encrypte);
781
		
994
		
782
		if(!$modif_mdp) {
995
		if(!$modif_mdp) {
783
			$donnees['erreurs']['mdp'] = 'Impossible de générer un nouveau mot de passe';
996
			$donnees['erreurs']['mdp'] = 'Impossible de générer un nouveau mot de passe';
784
			$donnees['aa_id_annuaire'] = $id_annuaire;
997
			$donnees['aa_id_annuaire'] = $id_annuaire;
785
			return $this->getVue(Config::get('dossier_squelettes_formulaires').'oubli_mdp',$donnees);
998
			return $this->getVue(Config::get('dossier_squelettes_formulaires').'oubli_mdp',$donnees);
786
		}
999
		}
787
 
1000
 
788
		if($messagerie->envoyerMailOubliMdp($id_annuaire, $mail, $nouveau_mdp)) {
1001
		if($messagerie->envoyerMailOubliMdp($id_annuaire, $mail, $nouveau_mdp)) {
789
			$donnees['titre'] = 'Mot de passe envoyé';
1002
			$donnees['titre'] = 'Mot de passe envoyé';
790
			$donnees['message'] = 'Votre nouveau mot de passe a été envoyé à l\'adresse '.$mail;
1003
			$donnees['message'] = 'Votre nouveau mot de passe a été envoyé à l\'adresse '.$mail;
791
		} else {
1004
		} else {
792
			$donnees['titre'] = 'Impossible de renvoyer le nouveau mot de passe';
1005
			$donnees['titre'] = 'Impossible de renvoyer le nouveau mot de passe';
793
			$donnees['message'] = 'Votre nouveau mot de passe n\'a pas pu être envoyé à l\'adresse indiquée ';
1006
			$donnees['message'] = 'Votre nouveau mot de passe n\'a pas pu être envoyé à l\'adresse indiquée ';
794
		}
1007
		}
795
		
1008
		
796
		return $this->getVue(Config::get('dossier_squelettes_annuaires').'information_simple',$donnees);
1009
		return $this->getVue(Config::get('dossier_squelettes_annuaires').'information_simple',$donnees);
797
	}
1010
	}
798
	
1011
	
799
	public function afficherFormulaireSuppressionInscription($id_annuaire, $id_utilisateur) {
1012
	public function afficherFormulaireSuppressionInscription($id_annuaire, $id_utilisateur) {
800
 
1013
 
801
		$donnees['id_annuaire'] = $id_annuaire;
1014
		$donnees['id_annuaire'] = $id_annuaire;
802
		$donnees['id_utilisateur'] = $id_utilisateur;
1015
		$donnees['id_utilisateur'] = $id_utilisateur;
803
		return $this->getVue(Config::get('dossier_squelettes_formulaires').'suppression_inscription',$donnees);
1016
		return $this->getVue(Config::get('dossier_squelettes_formulaires').'suppression_inscription',$donnees);
804
		
1017
		
805
	}
1018
	}
806
 
1019
 
807
	/**
1020
	/**
808
	 * Supprime l'inscription d'un utilisateur dans un annuaire donné
1021
	 * Supprime l'inscription d'un utilisateur dans un annuaire donné
809
	 * @param int $id_annuaire l'identifiant de l'annuaire associé
1022
	 * @param int $id_annuaire l'identifiant de l'annuaire associé
810
	 * @param int $id_utilisateur l'identifiant de l'utilisateur à supprimer
1023
	 * @param int $id_utilisateur l'identifiant de l'utilisateur à supprimer
811
	 */
1024
	 */
812
	public function supprimerInscription($id_annuaire, $id_utilisateur) {
1025
	public function supprimerInscription($id_annuaire, $id_utilisateur) {
813
		
1026
		
814
		if(!$id_utilisateur || $id_utilisateur == '') {
1027
		if(!$id_utilisateur || $id_utilisateur == '') {
815
			return $this->index();
1028
			return $this->index();
816
		}
1029
		}
817
 
1030
 
818
		$this->chargerModele('AnnuaireModele');
1031
		$this->chargerModele('AnnuaireModele');
819
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
1032
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
820
		$suppression_inscription = $this->AnnuaireModele->supprimerInscriptionDansAnnuaireMappe($id_annuaire, $id_utilisateur);
1033
		$suppression_inscription = $this->AnnuaireModele->supprimerInscriptionDansAnnuaireMappe($id_annuaire, $id_utilisateur);
821
 
1034
 
822
		$mail_utilisateur = $this->AnnuaireModele->obtenirMailParId($id_utilisateur);
1035
		$mail_utilisateur = $this->AnnuaireModele->obtenirMailParId($id_utilisateur);
823
 
1036
 
824
		$donnees = array('erreurs' => array());
1037
		$donnees = array('erreurs' => array());
825
 
1038
 
826
		$this->chargerModele('MetadonneeModele');
1039
		$this->chargerModele('MetadonneeModele');
827
 		$suppression_metadonnees = $this->MetadonneeModele->supprimerValeursMetadonneesParIdEnregistrementLie($id_utilisateur);
1040
 		$suppression_metadonnees = $this->MetadonneeModele->supprimerValeursMetadonneesParIdEnregistrementLie($id_utilisateur);
828
 
1041
 
829
		if(!$suppression_inscription || !$suppression_metadonnees) {
1042
		if(!$suppression_inscription || !$suppression_metadonnees) {
830
			$donnees['erreurs']['inscription'] = $suppression_inscription;
1043
			$donnees['erreurs']['inscription'] = $suppression_inscription;
831
			$donnees['erreurs']['metadonnees'] = $suppression_metadonnees;
1044
			$donnees['erreurs']['metadonnees'] = $suppression_metadonnees;
832
			$donnees['erreurs']['titre'] = 'Erreur lors de la suppression de l\'inscription ';
1045
			$donnees['erreurs']['titre'] = 'Erreur lors de la suppression de l\'inscription ';
833
 
1046
 
834
			return $this->getVue(Config::get('dossier_squelettes_elements').'erreurs',$donnees);
1047
			return $this->getVue(Config::get('dossier_squelettes_elements').'erreurs',$donnees);
835
		}
1048
		}
836
 
1049
 
837
		$params = array (
1050
		$params = array (
838
				'id_utilisateur' => $id_utilisateur,
1051
				'id_utilisateur' => $id_utilisateur,
839
				'prenom' => '',
1052
				'prenom' => '',
840
				'nom' => '',
1053
				'nom' => '',
841
				'mail' => $mail_utilisateur,
1054
				'mail' => $mail_utilisateur,
842
				'pass' => '',
1055
				'pass' => '',
843
				'pays' => '',
1056
				'pays' => '',
844
				'nouveau_pass' => '',
1057
				'nouveau_pass' => '',
845
				'nouveau_mail' => ''
1058
				'nouveau_mail' => ''
846
			);
1059
			);
847
 
1060
 
848
		// on appelle les controleur de lettre actu et d'applications externes
1061
		// on appelle les controleur de lettre actu et d'applications externes
849
		$appli_controleur = new ApplicationExterneControleur();
1062
		$appli_controleur = new ApplicationExterneControleur();
850
		$appli_controleur->supprimerInscription($id_utilisateur, $params);
1063
		$appli_controleur->supprimerInscription($id_utilisateur, $params);
851
 
1064
 
852
		// pour qu'ils lancent les procédures de désinscription associées
1065
		// pour qu'ils lancent les procédures de désinscription associées
853
		$lettre_controleur = new LettreControleur();
1066
		$lettre_controleur = new LettreControleur();
854
		$lettre_controleur->desinscriptionLettreActualite($mail_utilisateur);
1067
		$lettre_controleur->desinscriptionLettreActualite($mail_utilisateur);
855
		
1068
		
856
		if($id_utilisateur == Registre::getInstance()->get('identification_id')) {
1069
		if($id_utilisateur == Registre::getInstance()->get('identification_id')) {
857
			$identificateur = new IdentificationControleur();
1070
			$identificateur = new IdentificationControleur();
858
			$identificateur->deloggerUtilisateur();
1071
			$identificateur->deloggerUtilisateur();
859
		}
1072
		}
860
 
1073
 
861
		return $this->index();
1074
		return $this->index();
862
	}
1075
	}
863
 
1076
 
864
	/**
1077
	/**
865
	 * Affiche le formulaire de recherche pour un annuaire donné ou en génère un à la volée
1078
	 * Affiche le formulaire de recherche pour un annuaire donné ou en génère un à la volée
866
	 * @param int $id_annuaire l'identifiant de l'annuaire
1079
	 * @param int $id_annuaire l'identifiant de l'annuaire
867
	 * @param array $donnees des données utilisées pour pré remplir le formulaire
1080
	 * @param array $donnees des données utilisées pour pré remplir le formulaire
868
	 * @return string le html contenant le formulaire de recherche
1081
	 * @return string le html contenant le formulaire de recherche
869
	 */
1082
	 */
870
	public function afficherFormulaireRecherche($id_annuaire, $donnees = array()) {
1083
	public function afficherFormulaireRecherche($id_annuaire, $donnees = array()) {
871
 
1084
 
872
		$this->chargerModele('AnnuaireModele');
1085
		$this->chargerModele('AnnuaireModele');
873
		$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire, false);
1086
		$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire, false);
874
 
1087
 
875
		$this->chargerModele('MetadonneeModele');
1088
		$this->chargerModele('MetadonneeModele');
876
		$metadonnees = $this->MetadonneeModele->chargerListeMetadonneeAnnuaire($id_annuaire);
1089
		$metadonnees = $this->MetadonneeModele->chargerListeMetadonneeAnnuaire($id_annuaire);
877
 
1090
 
878
		$donnees['aa_id_annuaire'] = $id_annuaire;
1091
		$donnees['aa_id_annuaire'] = $id_annuaire;
879
 
1092
 
880
		// TODO: ceci charge toutes les métadonnées, voir si l'on ne peut pas parser le formulaire
1093
		// TODO: ceci charge toutes les métadonnées, voir si l'on ne peut pas parser le formulaire
881
		// pour ne charger que ce qui est nécéssaire
1094
		// pour ne charger que ce qui est nécéssaire
882
 
1095
 
883
		foreach($metadonnees as $nom_champ => $metadonnee) {
1096
		foreach($metadonnees as $nom_champ => $metadonnee) {
884
 
1097
 
885
			$id_champ = $metadonnee['amc_id_champ'];
1098
			$id_champ = $metadonnee['amc_id_champ'];
886
			$type_champ = $metadonnee['amc_ce_template_affichage'];
1099
			$type_champ = $metadonnee['amc_ce_template_affichage'];
887
			$nom_champ = $metadonnee['amc_abreviation'];
1100
			$nom_champ = $metadonnee['amc_abreviation'];
888
 
1101
 
889
			if(isset($donnees[$type_champ.'_'.$id_champ])) {
1102
			if(isset($donnees[$type_champ.'_'.$id_champ])) {
890
						
1103
						
891
				//Debug::printr($donnees[$type_champ.'_'.$id_champ]);
1104
				//Debug::printr($donnees[$type_champ.'_'.$id_champ]);
892
				$metadonnee['valeur_defaut']['amv_valeur'] = $donnees[$type_champ.'_'.$id_champ];
1105
				$metadonnee['valeur_defaut']['amv_valeur'] = $donnees[$type_champ.'_'.$id_champ];
893
			}
1106
			}
894
 
1107
 
895
			$metadonnee['aa_id_annuaire'] = $id_annuaire;
1108
			$metadonnee['aa_id_annuaire'] = $id_annuaire;
896
			// on charge le formulaire d'affichage de chacune des métadonnées
1109
			// on charge le formulaire d'affichage de chacune des métadonnées
897
			$donnees['champs'][$nom_champ] = $this->afficherFormulaireChampMetadonnees($id_champ,$metadonnee);
1110
			$donnees['champs'][$nom_champ] = $this->afficherFormulaireChampMetadonnees($id_champ,$metadonnee);
898
		}
1111
		}
899
 
1112
 
900
		// Si le formulaire spécifique à l'annuaire existe, on l'affiche
1113
		// Si le formulaire spécifique à l'annuaire existe, on l'affiche
901
		if(!$this->templateExiste($annuaire['informations']['aa_code'].'_recherche','/formulaires/')) {
1114
		if(!$this->templateExiste($annuaire['informations']['aa_code'].'_recherche','/formulaires/')) {
902
			$formulaire_recherche = $this->genererFormulaireRecherche($donnees);
1115
			$formulaire_recherche = $this->genererFormulaireRecherche($donnees);
903
		} else {
1116
		} else {
904
			// Sinon on prend celui par defaut
1117
			// Sinon on prend celui par defaut
905
			$formulaire_recherche = $this->GetVue(Config::get('dossier_squelettes_formulaires').$annuaire['informations']['aa_code'].'_recherche',$donnees);
1118
			$formulaire_recherche = $this->GetVue(Config::get('dossier_squelettes_formulaires').$annuaire['informations']['aa_code'].'_recherche',$donnees);
906
		}
1119
		}
907
 
1120
 
908
		return $formulaire_recherche;
1121
		return $formulaire_recherche;
909
	}
1122
	}
910
 
1123
 
911
	/**
1124
	/**
912
	 * Recherche un ou plusieurs inscrits selon les valeurs passées en paramètres, qui peuvent êtres des valeurs
1125
	 * Recherche un ou plusieurs inscrits selon les valeurs passées en paramètres, qui peuvent êtres des valeurs
913
	 * dans l'annuaire mappé ou bien des valeurs de metadonnées
1126
	 * dans l'annuaire mappé ou bien des valeurs de metadonnées
914
	 * @param int $id_annuaire l'identifiant de l'annuaire
1127
	 * @param int $id_annuaire l'identifiant de l'annuaire
915
	 * @param array $valeurs_recherchees les valeurs à rechercher
1128
	 * @param array $valeurs_recherchees les valeurs à rechercher
916
	 * @param boolean $exclusive indique si la recherche si fait sur tous les critères ou bien sur au moins un
1129
	 * @param boolean $exclusive indique si la recherche si fait sur tous les critères ou bien sur au moins un
917
	 */
1130
	 */
918
	public function rechercherInscrit($id_annuaire,$valeurs_recherchees, $exclusive = true) {
1131
	public function rechercherInscrit($id_annuaire,$valeurs_recherchees, $exclusive = true) {
919
 
1132
 
920
		$this->chargerModele('AnnuaireModele');
1133
		$this->chargerModele('AnnuaireModele');
921
		$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire, true);
1134
		$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire, true);
922
 
1135
 
923
		if(isset($_GET['numero_page'])) {
1136
		if(isset($_GET['numero_page'])) {
924
			$numero_page = $_GET['numero_page'];
1137
			$numero_page = $_GET['numero_page'];
925
		} else {
1138
		} else {
926
			$numero_page = 1;
1139
			$numero_page = 1;
927
		}
1140
		}
928
 
1141
 
929
		if(isset($_GET['taille_page'])) {
1142
		if(isset($_GET['taille_page'])) {
930
			$taille_page = $_GET['taille_page'];
1143
			$taille_page = $_GET['taille_page'];
931
		} else {
1144
		} else {
932
			$taille_page = 50;
1145
			$taille_page = 50;
933
		}
1146
		}
934
 
1147
 
935
		$tableau_mappage = $this->AnnuaireModele->obtenirChampsMappageAnnuaire($id_annuaire);
1148
		$tableau_mappage = $this->AnnuaireModele->obtenirChampsMappageAnnuaire($id_annuaire);
936
 
1149
 
937
		$valeurs_mappees = array();
1150
		$valeurs_mappees = array();
938
		$valeurs = array();
1151
		$valeurs = array();
939
 
1152
 
940
		//TODO: faire une fonction qui factorise ce principe !!!!
1153
		//TODO: faire une fonction qui factorise ce principe !!!!
941
		//
1154
		//
942
		//
1155
		//
943
		//
1156
		//
944
		//
1157
		//
945
		//
1158
		//
946
		//
1159
		//
947
		//
1160
		//
948
		// on itère sur le tableau de valeur pour récupérer les métadonnées;
1161
		// on itère sur le tableau de valeur pour récupérer les métadonnées;
949
		foreach($valeurs_recherchees as $nom_champ => $valeur) {
1162
		foreach($valeurs_recherchees as $nom_champ => $valeur) {
950
 
1163
 
951
			// pour chaque valeur
1164
			// pour chaque valeur
952
			// on extrait l'id du champ
1165
			// on extrait l'id du champ
953
			$ids_champ = mb_split("_",$nom_champ);
1166
			$ids_champ = mb_split("_",$nom_champ);
954
 
1167
 
955
			if(count($ids_champ) == 2) {
1168
			if(count($ids_champ) == 2) {
956
 
1169
 
957
				// l'identifiant du champ est la dernière valeur du tableau
1170
				// l'identifiant du champ est la dernière valeur du tableau
958
				$type = $ids_champ[0];
1171
				$type = $ids_champ[0];
959
				$id_champ = $ids_champ[1];
1172
				$id_champ = $ids_champ[1];
960
 
1173
 
961
				// Si le champ fait partie des champs mappés
1174
				// Si le champ fait partie des champs mappés
962
				$cle_champ = array_search($id_champ, $tableau_mappage[1]);
1175
				$cle_champ = array_search($id_champ, $tableau_mappage[1]);
963
				if($cle_champ) {
1176
				if($cle_champ) {
964
					// on ajoute sa clé correspondante dans l'annuaire mappé et sa valeur dans le tableau des champs mappés
1177
					// on ajoute sa clé correspondante dans l'annuaire mappé et sa valeur dans le tableau des champs mappés
965
					$valeurs_mappees[$tableau_mappage[0][$cle_champ]] = $valeur;
1178
					$valeurs_mappees[$tableau_mappage[0][$cle_champ]] = $valeur;
966
					// et on supprime sa valeur du tableau de valeurs pour ne pas la retrouver lors
1179
					// et on supprime sa valeur du tableau de valeurs pour ne pas la retrouver lors
967
					// de l'insertion des métadonnées
1180
					// de l'insertion des métadonnées
968
				} else {
1181
				} else {
969
					$valeurs_recherchees[$id_champ] = $valeur;
1182
					$valeurs_recherchees[$id_champ] = $valeur;
970
				}
1183
				}
971
				// on retire la valeur du tableau pour ne pas la retrouver dans les deux recherches
1184
				// on retire la valeur du tableau pour ne pas la retrouver dans les deux recherches
972
				$valeurs_get[$nom_champ] = $valeur;
1185
				$valeurs_get[$nom_champ] = $valeur;
973
			}
1186
			}
974
 
1187
 
975
			unset($valeurs_recherchees[$nom_champ]);
1188
			unset($valeurs_recherchees[$nom_champ]);
976
		}
1189
		}
977
		
1190
		
978
		$admin = Registre::getInstance()->get('est_admin');
1191
		$admin = Registre::getInstance()->get('est_admin');
979
 
1192
 
980
		//if(!$admin) {
1193
		//if(!$admin) {
981
		//	$champs_blocage = $this->AnnuaireModele->obtenirChampsDescriptionAnnuaire($id_annuaire);
1194
		//	$champs_blocage = $this->AnnuaireModele->obtenirChampsDescriptionAnnuaire($id_annuaire);
982
		//	$valeurs_recherchees[$champs_blocage[1]['champ_statut']] = '0';
1195
		//	$valeurs_recherchees[$champs_blocage[1]['champ_statut']] = '0';
983
		//}
1196
		//}
984
 
1197
 
985
		$champ_id_annuaire = $tableau_mappage[0]['champ_id'];
1198
		$champ_id_annuaire = $tableau_mappage[0]['champ_id'];
986
 
1199
 
987
		// on recherche dans les métadonnées
1200
		// on recherche dans les métadonnées
988
		$this->chargerModele('MetadonneeModele');
1201
		$this->chargerModele('MetadonneeModele');
989
		// le résultat est un ensemble d'identifiants
1202
		// le résultat est un ensemble d'identifiants
990
		$resultat_metadonnees = $this->MetadonneeModele->rechercherDansValeurMetadonnees($id_annuaire,$valeurs_recherchees, $exclusive);
1203
		$resultat_metadonnees = $this->MetadonneeModele->rechercherDansValeurMetadonnees($id_annuaire,$valeurs_recherchees, $exclusive);
991
		
1204
		
992
		// on recherche les infos dans la table annuaire mappée
1205
		// on recherche les infos dans la table annuaire mappée
993
		// en incluant ou excluant les id déjà trouvées dans les metadonnées
1206
		// en incluant ou excluant les id déjà trouvées dans les metadonnées
994
		// suivant le critères d'exclusivité ou non
1207
		// suivant le critères d'exclusivité ou non
995
		$resultat_annuaire_mappe = $this->AnnuaireModele->rechercherInscritDansAnnuaireMappe($id_annuaire,$valeurs_mappees, $resultat_metadonnees, $exclusive, $numero_page, $taille_page);
1208
		$resultat_annuaire_mappe = $this->AnnuaireModele->rechercherInscritDansAnnuaireMappe($id_annuaire,$valeurs_mappees, $resultat_metadonnees, $exclusive, $numero_page, $taille_page);
996
 
1209
 
997
		$resultat_recherche = $resultat_annuaire_mappe['resultat'];
1210
		$resultat_recherche = $resultat_annuaire_mappe['resultat'];
998
 
1211
 
999
		$nb_resultats = $resultat_annuaire_mappe['total'];
1212
		$nb_resultats = $resultat_annuaire_mappe['total'];
1000
		
1213
		
1001
		$resultats = array();
1214
		$resultats = array();
1002
		foreach($resultat_recherche as $resultat) {
1215
		foreach($resultat_recherche as $resultat) {
1003
			$id_utilisateur = $resultat[$champ_id_annuaire];
1216
			$id_utilisateur = $resultat[$champ_id_annuaire];
1004
			$resultats[$id_utilisateur] = $this->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur);
1217
			$resultats[$id_utilisateur] = $this->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur);
1005
		}
1218
		}
1006
 
1219
 
1007
		// on renvoie une liste identique à celle de la liste des inscrits
1220
		// on renvoie une liste identique à celle de la liste des inscrits
1008
		$donnees['resultats_recherche'] = $resultats;
1221
		$donnees['resultats_recherche'] = $resultats;
1009
		$donnees['tableau_mappage'] = $tableau_mappage[1];
1222
		$donnees['tableau_mappage'] = $tableau_mappage[1];
1010
		$donnees['id_annuaire'] = $id_annuaire;
1223
		$donnees['id_annuaire'] = $id_annuaire;
1011
		$donnees['nb_resultats'] = $nb_resultats;
1224
		$donnees['nb_resultats'] = $nb_resultats;
1012
 
1225
 
1013
		$url_base = new URL(Registre::getInstance()->get('base_url_application'));
1226
		$url_base = new URL(Registre::getInstance()->get('base_url_application'));
1014
		$url_pagination = clone($url_base);
1227
		$url_pagination = clone($url_base);
1015
 
1228
 
1016
		$valeurs_get['id_annuaire'] = $id_annuaire;
1229
		$valeurs_get['id_annuaire'] = $id_annuaire;
1017
		$valeurs_get['m'] = $_GET['m'];
1230
		$valeurs_get['m'] = $_GET['m'];
1018
 
1231
 
1019
		$donnees['pagination'] = $this->paginer($numero_page,$taille_page,$nb_resultats,$url_pagination, $valeurs_get);
1232
		$donnees['pagination'] = $this->paginer($numero_page,$taille_page,$nb_resultats,$url_pagination, $valeurs_get);
1020
 
1233
 
1021
		// S'il existe une page de résultats spécifique à l'annuaire pour la recherche
1234
		// S'il existe une page de résultats spécifique à l'annuaire pour la recherche
1022
		if($this->templateExiste($annuaire['informations']['aa_code'].'_resultat_recherche', Config::get('dossier_squelettes_annuaires'))) {
1235
		if($this->templateExiste($annuaire['informations']['aa_code'].'_resultat_recherche', Config::get('dossier_squelettes_annuaires'))) {
1023
			// on l'affiche
1236
			// on l'affiche
1024
			$vue_resultat_recherche = $this->getVue(Config::get('dossier_squelettes_annuaires').$annuaire['informations']['aa_code'].'_resultat_recherche', $donnees);
1237
			$vue_resultat_recherche = $this->getVue(Config::get('dossier_squelettes_annuaires').$annuaire['informations']['aa_code'].'_resultat_recherche', $donnees);
1025
 
1238
 
1026
		} else {
1239
		} else {
1027
			// sinon on prend celle par défaut
1240
			// sinon on prend celle par défaut
1028
			$vue_resultat_recherche = $this->getVue(Config::get('dossier_squelettes_annuaires').'resultat_recherche', $donnees);
1241
			$vue_resultat_recherche = $this->getVue(Config::get('dossier_squelettes_annuaires').'resultat_recherche', $donnees);
1029
		}
1242
		}
1030
		
1243
		
1031
		return $this->afficherFormulaireRecherche($id_annuaire, $valeurs_get).$vue_resultat_recherche;
1244
		return $this->afficherFormulaireRecherche($id_annuaire, $valeurs_get).$vue_resultat_recherche;
1032
	}
1245
	}
1033
 
1246
 
1034
	/** Recherche un ou plusieurs inscrits selon des indications géographiques, qui peuvent êtres des valeurs
1247
	/** Recherche un ou plusieurs inscrits selon des indications géographiques, qui peuvent êtres des valeurs
1035
	 * dans l'annuaire mappé ou bien des valeurs de metadonnées
1248
	 * dans l'annuaire mappé ou bien des valeurs de metadonnées
1036
	 * @param int $id_annuaire l'identifiant de l'annuaire
1249
	 * @param int $id_annuaire l'identifiant de l'annuaire
1037
	 * @param array $valeurs_recherchees les valeurs à rechercher
1250
	 * @param array $valeurs_recherchees les valeurs à rechercher
1038
	 * @param boolean $exclusive indique si la recherche si fait sur tous les critères ou bien sur au moins un
1251
	 * @param boolean $exclusive indique si la recherche si fait sur tous les critères ou bien sur au moins un
1039
	 * @param int $numero_page le numero de page demandé
1252
	 * @param int $numero_page le numero de page demandé
1040
	 * @param int $taille_page la taille de page
1253
	 * @param int $taille_page la taille de page
1041
	 */
1254
	 */
1042
	public function rechercherInscritParlocalisation($id_annuaire,$valeurs_recherchees) {
1255
	public function rechercherInscritParlocalisation($id_annuaire,$valeurs_recherchees) {
1043
 
1256
 
1044
		if(isset($_GET['taille_page'])) {
1257
		if(isset($_GET['taille_page'])) {
1045
			$taille_page = $_GET['taille_page'];
1258
			$taille_page = $_GET['taille_page'];
1046
		} else  {
1259
		} else  {
1047
			$taille_page = 50;
1260
			$taille_page = 50;
1048
		}
1261
		}
1049
 
1262
 
1050
		if(isset($_GET['numero_page'])) {
1263
		if(isset($_GET['numero_page'])) {
1051
			$numero_page = $_GET['numero_page'];
1264
			$numero_page = $_GET['numero_page'];
1052
		} else {
1265
		} else {
1053
			$numero_page = 1;
1266
			$numero_page = 1;
1054
		}
1267
		}
1055
 
1268
 
1056
		$this->chargerModele('AnnuaireModele');
1269
		$this->chargerModele('AnnuaireModele');
1057
		$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire, true);
1270
		$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire, true);
1058
 
1271
 
1059
		$tableau_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
1272
		$tableau_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
1060
 
1273
 
1061
		$valeurs_get = $valeurs_recherchees;
1274
		$valeurs_get = $valeurs_recherchees;
1062
 
1275
 
1063
		$valeurs_mappees = array();
1276
		$valeurs_mappees = array();
1064
		$valeurs = array();
1277
		$valeurs = array();
1065
 
1278
 
1066
		$champ_id_annuaire = $tableau_mappage[0]['champ_id'];
1279
		$champ_id_annuaire = $tableau_mappage[0]['champ_id'];
1067
 
1280
 
1068
		$valeur = $valeurs_recherchees['pays'];
1281
		$valeur = $valeurs_recherchees['pays'];
1069
		$champ_critere = $tableau_mappage[0]['champ_pays'];
1282
		$champ_critere = $tableau_mappage[0]['champ_pays'];
1070
 
1283
 
1071
		if(isset($valeurs_recherchees['departement'])) {
1284
		if(isset($valeurs_recherchees['departement'])) {
1072
			$valeur = $valeurs_recherchees['departement'];
1285
			$valeur = $valeurs_recherchees['departement'];
1073
			$champ_critere = $tableau_mappage[0]['champ_code_postal'];
1286
			$champ_critere = $tableau_mappage[0]['champ_code_postal'];
1074
		}
1287
		}
1075
 
1288
 
1076
		$resultat_annuaire_mappe = $this->AnnuaireModele->rechercherInscritDansAnnuaireMappeParChamp($id_annuaire, $champ_critere, $valeur, true, $numero_page, $taille_page);
1289
		$resultat_annuaire_mappe = $this->AnnuaireModele->rechercherInscritDansAnnuaireMappeParChamp($id_annuaire, $champ_critere, $valeur, true, $numero_page, $taille_page);
1077
 
1290
 
1078
		$resultat_recherche = $resultat_annuaire_mappe;
1291
		$resultat_recherche = $resultat_annuaire_mappe;
1079
		
1292
		
1080
		$nb_resultats = $resultat_recherche['total'];
1293
		$nb_resultats = $resultat_recherche['total'];
1081
		$resultat_recherche = $resultat_recherche['resultat'];
1294
		$resultat_recherche = $resultat_recherche['resultat'];
1082
		
1295
		
1083
		$resultats = array();
1296
		$resultats = array();
1084
		foreach($resultat_recherche as $resultat) {
1297
		foreach($resultat_recherche as $resultat) {
1085
			$id_utilisateur = $resultat[$champ_id_annuaire];
1298
			$id_utilisateur = $resultat[$champ_id_annuaire];
1086
			$resultats[$id_utilisateur] = $this->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur);
1299
			$resultats[$id_utilisateur] = $this->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur);
1087
		}
1300
		}
1088
 
1301
 
1089
		// on renvoie une liste identique à celle de la liste des inscrits
1302
		// on renvoie une liste identique à celle de la liste des inscrits
1090
		$donnees['resultats_recherche'] = $resultats;
1303
		$donnees['resultats_recherche'] = $resultats;
1091
		$donnees['tableau_mappage'] = $tableau_mappage[1];
1304
		$donnees['tableau_mappage'] = $tableau_mappage[1];
1092
		$donnees['id_annuaire'] = $id_annuaire;
1305
		$donnees['id_annuaire'] = $id_annuaire;
1093
		$donnees['nb_resultats'] = $nb_resultats;
1306
		$donnees['nb_resultats'] = $nb_resultats;
1094
		
1307
		
1095
		//Debug::printr($resultat_annuaire_mappe);
1308
		//Debug::printr($resultat_annuaire_mappe);
1096
 
1309
 
1097
		$url_base = new URL(Registre::getInstance()->get('base_url_application'));
1310
		$url_base = new URL(Registre::getInstance()->get('base_url_application'));
1098
		$url_pagination = clone($url_base);
1311
		$url_pagination = clone($url_base);
1099
 
1312
 
1100
		$valeurs_get['id_annuaire'] = $id_annuaire;
1313
		$valeurs_get['id_annuaire'] = $id_annuaire;
1101
		$valeurs_get['m'] = $_GET['m'];
1314
		$valeurs_get['m'] = $_GET['m'];
1102
 
1315
 
1103
		$donnees['pagination'] = $this->paginer($numero_page,$taille_page,$nb_resultats,$url_pagination, $valeurs_get);
1316
		$donnees['pagination'] = $this->paginer($numero_page,$taille_page,$nb_resultats,$url_pagination, $valeurs_get);
1104
 
1317
 
1105
		// S'il existe une page de résultats spécifique à l'annuaire pour la recherche
1318
		// S'il existe une page de résultats spécifique à l'annuaire pour la recherche
1106
		if($this->templateExiste($annuaire['informations']['aa_code'].'_resultat_recherche', Config::get('dossier_squelettes_annuaires'))) {
1319
		if($this->templateExiste($annuaire['informations']['aa_code'].'_resultat_recherche', Config::get('dossier_squelettes_annuaires'))) {
1107
			// on l'affiche
1320
			// on l'affiche
1108
			$vue_resultat_recherche = $this->getVue(Config::get('dossier_squelettes_annuaires').$annuaire['informations']['aa_code'].'_resultat_recherche', $donnees);
1321
			$vue_resultat_recherche = $this->getVue(Config::get('dossier_squelettes_annuaires').$annuaire['informations']['aa_code'].'_resultat_recherche', $donnees);
1109
 
1322
 
1110
		} else {
1323
		} else {
1111
			// sinon on prend celle par défaut
1324
			// sinon on prend celle par défaut
1112
			$vue_resultat_recherche = $this->getVue(Config::get('dossier_squelettes_annuaires').'resultat_recherche', $donnees);
1325
			$vue_resultat_recherche = $this->getVue(Config::get('dossier_squelettes_annuaires').'resultat_recherche', $donnees);
1113
		}
1326
		}
1114
		
1327
		
1115
		return $vue_resultat_recherche;
1328
		return $vue_resultat_recherche;
1116
	}
1329
	}
1117
 
1330
 
1118
 
1331
 
1119
/**--------------------------- Fonctions de vérification et de correspondance des champs --------------------*/
1332
/**--------------------------- Fonctions de vérification et de correspondance des champs --------------------*/
1120
 
1333
 
1121
 
1334
 
1122
/** --- Fonction pour les images ------------------------------------------------------------------------*/
1335
/** --- Fonction pour les images ------------------------------------------------------------------------*/
1123
 
1336
 
1124
	public function afficherFormulaireUploadImage($id_annuaire,$id_utilisateur, $donnees = array()) {
1337
	public function afficherFormulaireUploadImage($id_annuaire,$id_utilisateur, $donnees = array()) {
1125
 
1338
 
1126
		$donnees['aa_id_annuaire'] = $id_annuaire;
1339
		$donnees['aa_id_annuaire'] = $id_annuaire;
1127
		$donnees['id_utilisateur'] = $id_utilisateur;
1340
		$donnees['id_utilisateur'] = $id_utilisateur;
1128
 
1341
 
1129
		$donnees['amc_nom'] = 'Avatar';
1342
		$donnees['amc_nom'] = 'Avatar';
1130
 
1343
 
1131
		$this->chargerModele('AnnuaireModele');
1344
		$this->chargerModele('AnnuaireModele');
1132
		$id_champ_image = $this->AnnuaireModele->obtenirChampAvatar($id_annuaire);
1345
		$id_champ_image = $this->AnnuaireModele->obtenirChampAvatar($id_annuaire);
1133
 
1346
 
1134
		if(!$id_champ_image) {
1347
		if(!$id_champ_image) {
1135
			$donnees['erreurs'] = 'Aucun champ n\'est défini pour l\'image de profil';
1348
			$donnees['erreurs'] = 'Aucun champ n\'est défini pour l\'image de profil';
1136
			return $this->getVue(Config::get('dossier_squelettes_elements').'erreurs',$donnees);
1349
			return $this->getVue(Config::get('dossier_squelettes_elements').'erreurs',$donnees);
1137
		}
1350
		}
1138
		
1351
		
1139
		$formats = str_replace('|',', ',Config::get('extensions_acceptees'));
1352
		$formats = str_replace('|',', ',Config::get('extensions_acceptees'));
1140
		$donnees['formats'] = $formats; 
1353
		$donnees['formats'] = $formats; 
1141
 
1354
 
1142
		$donnees['amc_id_champ'] = $id_champ_image;
1355
		$donnees['amc_id_champ'] = $id_champ_image;
1143
 
1356
 
1144
		return $this->getVue(Config::get('dossier_squelettes_champs').'image',$donnees);
1357
		return $this->getVue(Config::get('dossier_squelettes_champs').'image',$donnees);
1145
	}
1358
	}
1146
 
1359
 
1147
	/**
1360
	/**
1148
	 * Ajoute une image uploadée à travers le formulaire
1361
	 * Ajoute une image uploadée à travers le formulaire
1149
	 *
1362
	 *
1150
	 */
1363
	 */
1151
	public function ajouterImageUtilisateur($id_annuaire, $id_utilisateur, $fichier_a_stocker, $retourner_booleen = false) {
1364
	public function ajouterImageUtilisateur($id_annuaire, $id_utilisateur, $fichier_a_stocker, $retourner_booleen = false) {
1152
 
1365
 
1153
		$donnees = array('erreurs' => array(), 'aa_id_annuaire' => $id_annuaire);
1366
		$donnees = array('erreurs' => array(), 'aa_id_annuaire' => $id_annuaire);
1154
 
1367
 
1155
		foreach($fichier_a_stocker as $nom_champ => $fichier) {
1368
		foreach($fichier_a_stocker as $nom_champ => $fichier) {
1156
 
1369
 
1157
			$ids_champ = mb_split("_",$nom_champ, 3);
1370
			$ids_champ = mb_split("_",$nom_champ, 3);
1158
 
1371
 
1159
			if(count($ids_champ) == 2) {
1372
			if(count($ids_champ) == 2) {
1160
 
1373
 
1161
				$type = $ids_champ[0];
1374
				$type = $ids_champ[0];
1162
				$id_champ = $ids_champ[1];
1375
				$id_champ = $ids_champ[1];
1163
 
1376
 
1164
 
1377
 
1165
			} else {
1378
			} else {
1166
				trigger_error('Ce champ n\'est pas relié à un annuaire');
1379
				trigger_error('Ce champ n\'est pas relié à un annuaire');
1167
				return false;
1380
				return false;
1168
			}
1381
			}
1169
 
1382
 
1170
			$this->chargerModele('ImageModele');
1383
			$this->chargerModele('ImageModele');
1171
 
1384
 
1172
			$format_accepte = $this->ImageModele->verifierFormat($fichier['name']);
1385
			$format_accepte = $this->ImageModele->verifierFormat($fichier['name']);
1173
 
1386
 
1174
			if(!$format_accepte) {
1387
			if(!$format_accepte) {
1175
				$formats = str_replace('|',', ',Config::get('extensions_acceptees'));
1388
				$formats = str_replace('|',', ',Config::get('extensions_acceptees'));
1176
				$donnees['erreurs'][$id_champ] = 'Cette extension de fichier n\'est pas prise en charge. Veuillez utiliser un fichier portant l\'une des extensions suivantes :'.$formats ;
1389
				$donnees['erreurs'][$id_champ] = 'Cette extension de fichier n\'est pas prise en charge. Veuillez utiliser un fichier portant l\'une des extensions suivantes :'.$formats ;
1177
				
1390
				
1178
				return $this->afficherFormulaireUploadImage($id_annuaire, $id_utilisateur,$donnees);
1391
				return $this->afficherFormulaireUploadImage($id_annuaire, $id_utilisateur,$donnees);
1179
			}
1392
			}
1180
 
1393
 
1181
			$stockage_image = $this->ImageModele->stockerFichier($id_annuaire, $id_utilisateur, $fichier);
1394
			$stockage_image = $this->ImageModele->stockerFichier($id_annuaire, $id_utilisateur, $fichier);
1182
 
1395
 
1183
			$this->chargerModele('MetadonneeModele');
1396
			$this->chargerModele('MetadonneeModele');
1184
 
1397
 
1185
			if($this->MetadonneeModele->valeurExiste($id_champ,$id_utilisateur)) {
1398
			if($this->MetadonneeModele->valeurExiste($id_champ,$id_utilisateur)) {
1186
				// On se contente de la modifier
1399
				// On se contente de la modifier
1187
				if($stockage_image && $this->MetadonneeModele->modifierValeurMetadonnee($id_champ,$id_utilisateur,$id_utilisateur)) {
1400
				if($stockage_image && $this->MetadonneeModele->modifierValeurMetadonnee($id_champ,$id_utilisateur,$id_utilisateur)) {
1188
 
1401
 
1189
				} else {
1402
				} else {
1190
					$donnees['erreurs'][$id_champ] = 'Problème durant le stockage de l\'image';
1403
					$donnees['erreurs'][$id_champ] = 'Problème durant le stockage de l\'image';
1191
					return $this->afficherFormulaireUploadImage($id_annuaire, $id_utilisateur,$donnees);
1404
					return $this->afficherFormulaireUploadImage($id_annuaire, $id_utilisateur,$donnees);
1192
				}
1405
				}
1193
 
1406
 
1194
			} else {
1407
			} else {
1195
				// S'il n'existe pas de valeur, on ajoute une nouvelle ligne à la table de valeurs de meta données
1408
				// S'il n'existe pas de valeur, on ajoute une nouvelle ligne à la table de valeurs de meta données
1196
				if($stockage_image && $this->MetadonneeModele->ajouterNouvelleValeurMetadonnee($id_champ,$id_utilisateur,$id_utilisateur)) {
1409
				if($stockage_image && $this->MetadonneeModele->ajouterNouvelleValeurMetadonnee($id_champ,$id_utilisateur,$id_utilisateur)) {
1197
					// Si l'insertion a réussi, on continue
1410
					// Si l'insertion a réussi, on continue
1198
				} else {
1411
				} else {
1199
					$donnees['erreurs'][$id_champ] = 'Problème durant le stockage de l\'image';
1412
					$donnees['erreurs'][$id_champ] = 'Problème durant le stockage de l\'image';
1200
					return $this->afficherFormulaireUploadImage($id_annuaire, $id_utilisateur,$id_champ,$donnees);
1413
					return $this->afficherFormulaireUploadImage($id_annuaire, $id_utilisateur,$id_champ,$donnees);
1201
				}
1414
				}
1202
			}
1415
			}
1203
		}
1416
		}
1204
 
1417
 
1205
		if($retourner_booleen) {
1418
		if($retourner_booleen) {
1206
			return true;
1419
			return true;
1207
		} else {
1420
		} else {
1208
			return $this->afficherFicheUtilisateur($id_annuaire, $id_utilisateur) ;
1421
			return $this->afficherFicheUtilisateur($id_annuaire, $id_utilisateur) ;
1209
		}
1422
		}
1210
	}
1423
	}
1211
	
1424
	
1212
	public function obtenirTableauDerniersInscrits($id_annuaire, $limite = '20') {
1425
	public function obtenirTableauDerniersInscrits($id_annuaire, $limite = '20') {
1213
		
1426
		
1214
		// Chargement des informations de l'utilisateur dans la table annuaire principale
1427
		// Chargement des informations de l'utilisateur dans la table annuaire principale
1215
		$this->chargerModele('AnnuaireModele');
1428
		$this->chargerModele('AnnuaireModele');
1216
		$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire);
1429
		$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire);
1217
		$tableau_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
1430
		$tableau_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
1218
		$this->chargerModele('AnnuaireModele');
1431
		$this->chargerModele('AnnuaireModele');
1219
		$tableau_ids = $this->AnnuaireModele->obtenirTableauIdsUtilisateurs($id_annuaire, $tableau_mappage[0]);
1432
		$tableau_ids = $this->AnnuaireModele->obtenirTableauIdsUtilisateurs($id_annuaire, $tableau_mappage[0]);
1220
		
1433
		
1221
		$derniers_inscrits = array();
1434
		$derniers_inscrits = array();
1222
		
1435
		
1223
		foreach($tableau_ids as $id) {
1436
		foreach($tableau_ids as $id) {
1224
			
1437
			
1225
			$id_utilisateur = $id[$tableau_mappage[0][champ_id]];
1438
			$id_utilisateur = $id[$tableau_mappage[0][champ_id]];
1226
			$derniers_inscrits[$id_utilisateur] = $this->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur);
1439
			$derniers_inscrits[$id_utilisateur] = $this->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur);
1227
		}
1440
		}
1228
		
1441
		
1229
		return $derniers_inscrits;
1442
		return $derniers_inscrits;
1230
	}
1443
	}
1231
 
1444
 
1232
	public function chargerNombreAnnuaireListeInscritsParPays($id_annuaire, $id_zones) {
1445
	public function chargerNombreAnnuaireListeInscritsParPays($id_annuaire, $id_zones) {
1233
 
1446
 
1234
		$annuaire_modele = $this->getModele('AnnuaireModele');
1447
		$annuaire_modele = $this->getModele('AnnuaireModele');
1235
		return $annuaire_modele->chargerNombreAnnuaireListeInscritsParPays($id_annuaire, $id_zones);
1448
		return $annuaire_modele->chargerNombreAnnuaireListeInscritsParPays($id_annuaire, $id_zones);
1236
	}
1449
	}
1237
 
1450
 
1238
	public function chargerNombreAnnuaireListeInscritsParDepartement($id_annuaire) {
1451
	public function chargerNombreAnnuaireListeInscritsParDepartement($id_annuaire) {
1239
		$this->chargerModele('AnnuaireModele');
1452
		$this->chargerModele('AnnuaireModele');
1240
		return $this->AnnuaireModele->chargerNombreAnnuaireListeInscritsParDepartement($id_annuaire);
1453
		return $this->AnnuaireModele->chargerNombreAnnuaireListeInscritsParDepartement($id_annuaire);
1241
	}
1454
	}
1242
}
1455
}
1243
?>
1456
?>