Subversion Repositories Applications.annuaire

Rev

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

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