Subversion Repositories Applications.annuaire

Rev

Rev 138 | Rev 146 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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