Subversion Repositories Applications.annuaire

Rev

Rev 108 | Rev 138 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 108 Rev 120
Line 9... Line 9...
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
*/
Line 13... Line 13...
13
 
13
 
Line 14... Line -...
14
class AnnuaireControleur extends Controleur {
-
 
15
 
-
 
16
	/**
-
 
17
	 * (fonction héritée de la classe Controleur)
-
 
18
	 * Avant chaque chargement de vue, on ajoute l'url de la page dans
-
 
19
	 * les variables à insérer.
-
 
20
	 * @param Array $donnes les données à insérer dans la vue
-
 
21
	 * @return Array $donnees les données modifiées
-
 
22
	 */
-
 
23
	public function preTraiterDonnees($donnees) {
-
 
24
 
-
 
25
		// ajout de l'url de l'appli
-
 
26
		$donnees['base_url'] = new Url(Config::get('base_url_application'));
-
 
27
				
-
 
28
		$donnees['base_url_styles'] = new Url(Config::get('base_url_styles'));
-
 
29
		
-
 
30
		$donnees['url_cette_page'] = $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
-
 
31
 
-
 
32
		//ajout des variables d'identification
-
 
33
		$donnees['est_admin'] = Registre::getInstance()->get('est_admin');
-
 
34
		$donnees['identification_id'] =	Registre::getInstance()->get('identification_id');
-
 
35
		$donnees['identification_mail']	= Registre::getInstance()->get('identification_mail');
-
 
36
 
-
 
Line 37... Line 14...
37
		return $donnees;
14
class AnnuaireControleur extends AppControleur {
38
	}
15
 
39
 
16
 
40
	/**
17
	/**
41
	 * 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
-
 
20
	 */
42
	 * @return String la vue contenant le menu
21
	public function index() {
43
	 */
22
		
Line 44... Line 23...
44
	public function index() {
23
		//$this->migrer();
45
		$data = array();
24
		$data = array();
-
 
25
		$index_annuaire = $this->getVue('index_annuaire', $data);
-
 
26
 
-
 
27
		return $index_annuaire;
-
 
28
	}
-
 
29
	
-
 
30
	/*private function migrer() {
-
 
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(isset($resultat['U_COUNTRY']) && trim($resultat['U_COUNTRY']) != '')	{
-
 
41
				$valeur = $this->MetadonneeModele->renvoyerCorrespondanceIdParAbreviation($resultat['U_COUNTRY'], '1074');  
-
 
42
				$id_utilisateur = $resultat['U_ID'];
-
 
43
				$id_champ = 12;  
-
 
44
				
-
 
45
				echo 'modif champ 12 pour id '.$id_utilisateur.' valeur '.$valeur.'  <br />';
-
 
46
		
-
 
47
				// les champs arrivent avec un identifiant sous la forme type_xxx_id
-
 
48
		
-
 
49
				if($this->MetadonneeModele->valeurExiste($id_champ,$id_utilisateur)) {
-
 
50
					// On se contente de la modifier
-
 
51
					$this->MetadonneeModele->modifierValeurMetadonnee($id_champ,$id_utilisateur,$valeur);
-
 
52
		
-
 
53
				} else {
-
 
54
					// S'il n'existe pas de valeur, on ajoute une nouvelle ligne à la table de valeurs de meta données
-
 
55
					if($this->MetadonneeModele->ajouterNouvelleValeurMetadonnee($id_champ,$id_utilisateur,$valeur)) {
-
 
56
						// Si l'insertion a réussi, on continue
-
 
57
					} else {
-
 
58
						return false;
-
 
59
					}
-
 
60
				}
-
 
61
			} else {
Line 46... Line 62...
46
		$index_annuaire = $this->getVue('index_annuaire', $data);
62
				echo 'pas de valeur pour l\'id '.$id_utilisateur;
47
 
63
			}
48
		return $index_annuaire;
64
		}
49
	}
65
	}*/
Line 85... Line 101...
85
	 */
101
	 */
86
	public function chargerAnnuaire($id) {
102
	public function chargerAnnuaire($id) {
87
		$this->chargerModele('AnnuaireModele');
103
		$this->chargerModele('AnnuaireModele');
88
		$this->chargerModele('MetadonneeModele');
104
		$this->chargerModele('MetadonneeModele');
89
		$data['erreurs'] = array();
105
		$data['erreurs'] = array();
90
		$data['champs_mappage'] = $this->AnnuaireModele->obtenirChampsMappageAnnuaire($id);
106
		$data['champs_mappage'] = $this->obtenirChampsMappageAnnuaire($id);
91
		$data['annuaire'] = $this->AnnuaireModele->chargerAnnuaire($id, true);
107
		$data['annuaire'] = $this->AnnuaireModele->chargerAnnuaire($id, true);
92
		$data['metadonnees'] = $this->MetadonneeModele->chargerListeMetadonneeAnnuaire($id);
108
		$data['metadonnees'] = $this->MetadonneeModele->chargerListeMetadonneeAnnuaire($id);
93
		$annuaire = $this->getVue(Config::get('dossier_squelettes_annuaires').'annuaire', $data);
109
		$annuaire = $this->getVue(Config::get('dossier_squelettes_annuaires').'annuaire', $data);
Line 94... Line 110...
94
 
110
 
Line 190... Line 206...
190
		}
206
		}
Line 191... Line 207...
191
 
207
 
192
		return $formulaire_inscription;
208
		return $formulaire_inscription;
Line 193... Line -...
193
	}
-
 
194
 
-
 
195
	/**
-
 
196
	 * Charge et affiche le champ correspondant à la modification ou l'ajout d'un champ de metadonnée
-
 
197
	 * @param int $id_champ l'identifiant du champ demandé
-
 
198
	 * @return string la vue contenant le champ de formulaire correspondant
-
 
199
	 */
-
 
200
	public function afficherFormulaireChampMetadonnees($id_champ, $donnees) {
-
 
201
 
-
 
202
		// si le champ est restreint à une valeur de liste
-
 
203
		if($donnees['amc_ce_ontologie'] != 0) {
-
 
204
				$this->chargerModele('OntologieModele');
-
 
205
				$donnees['liste_valeurs'] = $this->OntologieModele->chargerListeOntologie($donnees['amc_ce_ontologie']);
-
 
206
		}
-
 
207
 
-
 
208
		$donnees['amc_id_champ'] = $id_champ;
-
 
209
 
-
 
210
		if(isset($donnees['amc_ce_template_affichage'])) {
-
 
211
			$nom_type_champ = $donnees['amc_ce_template_affichage'];
-
 
212
		} else {
-
 
213
			$this->chargerModele('MetadonneeModele');
-
 
214
			$nom_type_champ = $this->MetadonneeModele->renvoyerTypeAffichageParId($donnees['amc_ce_type_affichage']);
-
 
215
		}
-
 
216
 
-
 
217
		return $this->getVue(Config::get('dossier_squelettes_champs').$nom_type_champ,$donnees);
-
 
218
	}
209
	}
Line 219... Line 210...
219
 
210
 
220
/**-------- Fonctions d'inscription -------------------------------------------------------------------------------*/
211
/**-------- Fonctions d'inscription -------------------------------------------------------------------------------*/
221
 
212
 
Line 256... Line 247...
256
		$code_confirmation = $this->DonneeTemporaireModele->stockerDonneeTemporaire($valeurs_a_inserer);
247
		$code_confirmation = $this->DonneeTemporaireModele->stockerDonneeTemporaire($valeurs_a_inserer);
Line 257... Line 248...
257
		
248
		
258
		$mail = $valeurs_mappees[$tableau_mappage[1]['champ_mail']]['valeur'];
249
		$mail = $valeurs_mappees[$tableau_mappage[1]['champ_mail']]['valeur'];
259
		$nom = $valeurs_mappees[$tableau_mappage[1]['champ_nom']]['valeur'];
250
		$nom = $valeurs_mappees[$tableau_mappage[1]['champ_nom']]['valeur'];
-
 
251
		$prenom = $valeurs_mappees[$tableau_mappage[1]['champ_prenom']]['valeur'];
Line -... Line 252...
-
 
252
		
260
		$prenom = $valeurs_mappees[$tableau_mappage[1]['champ_prenom']]['valeur'];
253
 
261
 
254
		$messagerie = new MessageControleur();
262
 
255
		
263
		$this->envoyerMailConfirmationInscription($mail,
256
		$messagerie->envoyerMailConfirmationInscription($mail,
264
													$nom,
257
													$nom,
265
													$prenom,
258
													$prenom,
266
													$code_confirmation);
259
													$code_confirmation);
Line 330... Line 323...
330
			} else {
323
			} else {
331
				$valeurs_metadonnees[$nom_champ] = $valeur;
324
				$valeurs_metadonnees[$nom_champ] = $valeur;
332
			}
325
			}
333
		}
326
		}
Line -... Line 327...
-
 
327
 
334
 
328
		// cas spécial du champ pays ou l'on fait un double stockage des données
335
		if(isset($valeurs_mappees[$tableau_mappage[0]['champ_pays']])) {
329
		if(isset($valeurs_mappees[$tableau_mappage[0]['champ_pays']])) {
336
			$pays = $valeurs_mappees[$tableau_mappage[0]['champ_pays']];
330
			$pays = $valeurs_mappees[$tableau_mappage[0]['champ_pays']];
337
			$valeurs_metadonnees[$tableau_mappage[1]['champ_pays']] = $pays;
331
			$valeurs_metadonnees[$tableau_mappage[1]['champ_pays']] = $pays;
338
			$pays = $this->MetadonneeModele->renvoyerCorrespondanceAbreviationId($pays);
332
			$pays = $this->MetadonneeModele->renvoyerCorrespondanceAbreviationId($pays);
Line 378... Line 372...
378
		// on crée un controleur qui appelle les webservice pour chaque application externe
372
		// on crée un controleur qui appelle les webservice pour chaque application externe
379
		$resumes_controleur = new ApplicationExterneControleur();
373
		$resumes_controleur = new ApplicationExterneControleur();
380
		$resumes_controleur->ajouterInscription($id_nouvel_inscrit, $params);
374
		$resumes_controleur->ajouterInscription($id_nouvel_inscrit, $params);
Line 381... Line 375...
381
 
375
 
382
		// Si tout a réussi on supprime les données d'inscription temporaire
376
		// Si tout a réussi on supprime les données d'inscription temporaire
Line 383... Line 377...
383
		$this->AnnuaireModele->supprimerDonneesInscriptionTemporaire($identifiant);
377
		$this->DonneeTemporaireModele->supprimerDonneeTemporaire($identifiant);
Line 384... Line 378...
384
 
378
 
385
		$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire, false);
379
		$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire, false);
Line 417... Line 411...
417
		
411
		
Line 418... Line 412...
418
		$verificateur = new VerificationControleur();
412
		$verificateur = new VerificationControleur();
Line 419... Line -...
419
		
-
 
420
		$champs = $this->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur);
-
 
421
 
-
 
422
		foreach($champs as $cle => $champ) {
-
 
423
 
-
 
424
			if(is_array($champ) && isset($champ['amc_ce_type_affichage'])) {
-
 
425
				$type = $champ['amc_ce_type_affichage'];
-
 
426
			} else {
-
 
427
				$type = false;
-
 
428
			}
-
 
429
			// on remplace les valeurs de certains champs pour l'affichage (ex: checkbox cochée de se transforme en oui )
-
 
430
			$champs[$cle] = $verificateur->verifierEtRemplacerValeurChampPourAffichage($type,$champ ,$id_annuaire);
413
		
Line 431... Line 414...
431
		}
414
		$champs = $this->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur);
432
 
415
 
433
		$donnees['champs'] = $champs;
416
		$donnees['champs'] = $champs;
Line 448... Line 431...
448
	 */
431
	 */
449
	public function afficherFicheResumeUtilisateur($id_annuaire, $id_utilisateur) {
432
	public function afficherFicheResumeUtilisateur($id_annuaire, $id_utilisateur) {
Line 450... Line 433...
450
 
433
 
451
		$this->chargerModele('AnnuaireModele');
434
		$this->chargerModele('AnnuaireModele');
452
		$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire);
-
 
453
		$tableau_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
-
 
454
		$tableau_valeurs = $this->AnnuaireModele->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur,$tableau_mappage[0]);
435
		$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire);
455
 
-
 
456
		$this->chargerModele('MetadonneeModele');
436
		
457
		$champs_metadonnees= $this->MetadonneeModele->chargerListeValeursMetadonneesUtilisateur($id_annuaire, $id_utilisateur);
-
 
458
 
-
 
459
		$verificateur = new VerificationControleur();
-
 
460
 
-
 
461
		// on vérifie s'il existe un type d'affichage particulier pour les colonnes de l'annuaire mappé
-
 
462
		foreach($tableau_mappage[0] as $cle => $nom_champ) {
-
 
463
 
-
 
464
			$valeur = $tableau_valeurs[$nom_champ] ;
-
 
465
			if(isset($tableau_mappage[1][$cle])) {
-
 
466
 
-
 
467
				$tableau_valeurs[$cle] = array('amv_valeur' => $valeur,'amc_id_champ' => $tableau_mappage[1][$cle]);
-
 
468
				$type_affichage = $this->MetadonneeModele->renvoyerTypeAffichagePourColonne($tableau_mappage[1][$cle]);
-
 
469
				if($type_affichage) {
-
 
470
					$tableau_valeurs[$cle]['amc_ce_type_affichage'] = $type_affichage;
-
 
471
				}
-
 
472
 
-
 
473
			} else {
-
 
474
				$tableau_valeurs[$cle] = $valeur;
-
 
475
			}
-
 
476
			unset($tableau_valeurs[$nom_champ]);
-
 
477
		}
-
 
478
 
437
		$champs = $this->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur);
Line 479... Line 438...
479
		$mail_utilisateur = $this->AnnuaireModele->obtenirMailParId($id_annuaire,$id_utilisateur);
438
		$mail_utilisateur = $this->AnnuaireModele->obtenirMailParId($id_annuaire,$id_utilisateur);
480
 
439
 
481
		$donnees['id_annuaire'] = $id_annuaire;
440
		$donnees['id_annuaire'] = $id_annuaire;
482
		$donnees['id_utilisateur'] = $id_utilisateur;
-
 
483
		$donnees['mail_utilisateur'] = $mail_utilisateur;
-
 
484
		$champs =  array_merge($tableau_valeurs, $champs_metadonnees);
-
 
485
 
-
 
486
		foreach($champs as $cle => $champ) {
-
 
487
 
-
 
488
			if(is_array($champ) && isset($champ['amc_ce_type_affichage'])) {
-
 
489
				$type = $champ['amc_ce_type_affichage'];
-
 
490
			} else {
-
 
491
				$type = false;
-
 
492
			}
-
 
Line 493... Line 441...
493
			$champs[$cle] = $verificateur->verifierEtRemplacerValeurChampPourAffichage($type,$champ ,$id_annuaire);
441
		$donnees['id_utilisateur'] = $id_utilisateur;
494
		}
442
		$donnees['mail_utilisateur'] = $mail_utilisateur;
495
 
443
 
496
		$url_modification_profil = new Url(Config::get('base_url_application'));
444
		$url_modification_profil = new Url(Config::get('base_url_application'));
Line 521... Line 469...
521
	}
469
	}
Line 522... Line 470...
522
 
470
 
Line 523... Line 471...
523
	public function gererInscriptionExterne($id_annuaire, $id_utilisateur) {
471
	public function gererInscriptionExterne($id_annuaire, $id_utilisateur) {
524
 
-
 
525
		$this->chargerModele('AnnuaireModele');
-
 
526
		$tableau_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
-
 
527
		$tableau_valeurs = $this->AnnuaireModele->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur,$tableau_mappage[0]);
-
 
528
 
-
 
529
		$this->chargerModele('MetadonneeModele');
-
 
530
		$champs_metadonnees= $this->MetadonneeModele->chargerListeValeursMetadonneesUtilisateur($id_annuaire, $id_utilisateur);
-
 
531
 
-
 
532
		$verificateur = new VerificationControleur();
-
 
533
 
-
 
534
		// on vérifie s'il existe un type d'affichage particulier pour les colonnes de l'annuaire mappé
-
 
535
		foreach($tableau_mappage[0] as $cle => $nom_champ) {
-
 
536
 
-
 
537
			$valeur = $tableau_valeurs[$nom_champ] ;
-
 
538
			if(isset($tableau_mappage[1][$cle])) {
-
 
539
 
-
 
540
				$tableau_valeurs[$cle] = array('amv_valeur' => $valeur,'amc_id_champ' => $tableau_mappage[1][$cle]);
-
 
541
				$type_affichage = $this->MetadonneeModele->renvoyerTypeAffichagePourColonne($tableau_mappage[1][$cle]);
-
 
542
				if($type_affichage) {
-
 
543
					$tableau_valeurs[$cle]['amc_ce_type_affichage'] = $type_affichage;
-
 
544
				}
-
 
545
 
-
 
546
			} else {
-
 
547
				$tableau_valeurs[$cle] = $valeur;
-
 
548
			}
-
 
549
			unset($tableau_valeurs[$nom_champ]);
-
 
550
		}
472
 
Line 551... Line 473...
551
 
473
		$this->chargerModele('AnnuaireModele');
552
		$mail_utilisateur = $this->AnnuaireModele->obtenirMailParId($id_annuaire,$id_utilisateur);
474
		$mail_utilisateur = $this->AnnuaireModele->obtenirMailParId($id_annuaire,$id_utilisateur);
553
 
-
 
554
		$donnees['id_annuaire'] = $id_annuaire;
-
 
555
		$donnees['id_utilisateur'] = $id_utilisateur;
-
 
556
		$champs =  array_merge($tableau_valeurs, $champs_metadonnees);
-
 
557
 
-
 
558
		foreach($champs as $cle => $champ) {
-
 
559
 
-
 
560
			if(is_array($champ) && isset($champ['amc_ce_type_affichage'])) {
-
 
561
				$type = $champ['amc_ce_type_affichage'];
-
 
562
			} else {
-
 
563
				$type = false;
-
 
564
			}
-
 
565
			$champs[$cle] = $verificateur->verifierEtRemplacerValeurChampPourAffichage($type,$champ ,$id_annuaire);
-
 
Line 566... Line 475...
566
		}
475
 
567
 
476
		$donnees['id_annuaire'] = $id_annuaire;
Line -... Line 477...
-
 
477
		$donnees['id_utilisateur'] = $id_utilisateur;
-
 
478
 
568
		$mail_utilisateur = $this->AnnuaireModele->obtenirMailParId($id_annuaire,$id_utilisateur);
479
		// on crée un controleur appelle les hooks de résumé pour chaque application externe
569
 
480
		$resumes_controleur = new ApplicationExterneControleur();
570
		// on crée un controleur appelle les hooks de résumé pour chaque application externe
481
 
Line 571... Line 482...
571
		$resumes_controleur = new ApplicationExterneControleur();
482
		$donnees['champs'] = $this->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur);
Line 806... Line 717...
806
		}
717
		}
Line 807... Line 718...
807
 
718
 
808
		return $this->afficherFicheUtilisateur($id_annuaire, $id_utilisateur);
719
		return $this->afficherFicheUtilisateur($id_annuaire, $id_utilisateur);
Line 809... Line -...
809
	}
-
 
810
 
-
 
811
	public function estAbonneLettreActualite($id_annuaire, $id_utilisateur) {
-
 
812
 
-
 
813
		$annuaire_modele = $this->getModele('AnnuaireModele');
-
 
814
		$champs_description = $annuaire_modele->obtenirChampsDescriptionAnnuaire($id_annuaire);
-
 
815
 
-
 
816
		$valeur = $annuaire_modele->obtenirValeurChampAnnuaireMappe($id_annuaire, $id_utilisateur, 'champ_lettre');
-
 
817
 
-
 
818
		return $valeur;
-
 
819
	}
-
 
820
 
-
 
821
	public function abonnerDesabonnerLettreActualite($id_annuaire, $id_utilisateur, $abonner = true) {
-
 
822
 
-
 
823
		$annuaire_modele = $this->getModele('AnnuaireModele');
-
 
824
		$champs_description = $annuaire_modele->obtenirChampsDescriptionAnnuaire($id_annuaire);
-
 
825
 
-
 
826
		$mail_utilisateur = $annuaire_modele->obtenirMailParId($id_annuaire, $id_utilisateur);
-
 
827
 
-
 
828
		$champ_lettre = $champs_description[0]['champ_lettre'];
-
 
829
 
-
 
830
		if($abonner) {
-
 
831
			$valeur = 'on';
-
 
832
		} else {
-
 
833
			$valeur = '0';
-
 
834
		}
-
 
835
 
-
 
836
		$verificateur = new VerificationControleur();
-
 
837
		$valeur_modif = $verificateur->remplacerValeurChampPourModification($id_annuaire, $id_utilisateur, 'lettre', $valeur, $mail_utilisateur);
-
 
838
 
-
 
839
 
-
 
840
		$annuaire_modele = $this->getModele('AnnuaireModele');
-
 
841
		$valeur_modif = $annuaire_modele->modifierValeurChampAnnuaireMappe($id_annuaire, $id_utilisateur, $champ_lettre, $valeur_modif);
-
 
842
		//$this->chargerModele('MetadonneeModele');
-
 
843
		//$this->MetadonneeModele->modifierValeurMetadonnee($champ_lettre,$id_utilisateur,$valeur_modif);
-
 
844
 
-
 
845
		return $valeur_modif;
-
 
846
	}
720
	}
Line 847... Line 721...
847
 
721
 
848
	public function bloquerDebloquerUtilisateur($id_annuaire, $id_utilisateur, $bloquer = true) {
722
	public function bloquerDebloquerUtilisateur($id_annuaire, $id_utilisateur, $bloquer = true) {
Line 881... Line 755...
881
	 *
755
	 *
882
	 */
756
	 */
883
	public function reinitialiserMotDePasse($id_annuaire, $mail) {
757
	public function reinitialiserMotDePasse($id_annuaire, $mail) {
Line 884... Line 758...
884
 
758
 
885
		$this->chargerModele('AnnuaireModele');
759
		$this->chargerModele('AnnuaireModele');
-
 
760
		$verificateur = new VerificationControleur();
Line 886... Line 761...
886
		$verificateur = new VerificationControleur('VerificationControleur');
761
		$messagerie = new MessageControleur();
Line 887... Line 762...
887
 
762
 
888
		$donnees = array();
763
		$donnees = array();
889
 
764
 
890
		if(!$verificateur->mailValide($mail) || !$this->AnnuaireModele->utilisateurExisteParMail($id_annuaire,$mail)) {
765
		if(!$verificateur->mailValide($mail) || !$this->AnnuaireModele->utilisateurExisteParMail($id_annuaire,$mail)) {
891
			$donnees['erreurs']['mail'] = 'Cet utilisateur n\'existe pas';
766
			$donnees['erreurs']['mail'] = 'Cet utilisateur n\'existe pas';
892
			$donnees['aa_id_annuaire'] = $id_annuaire;
767
			$donnees['aa_id_annuaire'] = $id_annuaire;
-
 
768
			return $this->getVue(Config::get('dossier_squelettes_formulaires').'oubli_mdp',$donnees);
-
 
769
		}
-
 
770
		
893
			return $this->getVue(Config::get('dossier_squelettes_formulaires').'oubli_mdp',$donnees);
771
		$nouveau_mdp = $verificateur->genererMotDePasse();
894
		}
772
		$nouveau_mdp_encrypte = $verificateur->encrypterMotDePasse($nouveau_mdp);
895
 
773
		
896
		$nouveau_mdp = $this->AnnuaireModele->reinitialiserMotDePasse($id_annuaire, $mail);
774
		$modif_mdp = $this->AnnuaireModele->reinitialiserMotDePasse($id_annuaire, $mail, $nouveau_mdp_encrypte);
897
 
775
		
898
		if(!$nouveau_mdp) {
776
		if(!$modif_mdp) {
899
			$donnees['erreurs']['mdp'] = 'Impossible de générer un nouveau mot de passe';
777
			$donnees['erreurs']['mdp'] = 'Impossible de générer un nouveau mot de passe';
Line -... Line 778...
-
 
778
			$donnees['aa_id_annuaire'] = $id_annuaire;
900
			$donnees['aa_id_annuaire'] = $id_annuaire;
779
			return $this->getVue(Config::get('dossier_squelettes_formulaires').'oubli_mdp',$donnees);
-
 
780
		}
-
 
781
 
-
 
782
		if($messagerie->envoyerMailOubliMdp($id_annuaire, $mail, $nouveau_mdp)) {
-
 
783
			$donnees['titre'] = 'Mot de passe envoyé';
-
 
784
			$donnees['message'] = 'Votre nouveau mot de passe a été envoyé à l\'adresse '.$mail;
901
			return $this->getVue('oubli_mdp',$donnees);
785
		} else {
902
		}
786
			$donnees['titre'] = 'Impossible de renvoyer le nouveau mot de passe';
903
 
787
			$donnees['message'] = 'Votre nouveau mot de passe n\'a pas pu être envoyé à l\'adresse indiquée ';
Line 904... Line 788...
904
		$donnees['nouveau_mdp'] = $nouveau_mdp;
788
		}
Line 905... Line 789...
905
 
789
		
Line 1043... Line 927...
1043
		$tableau_mappage = $this->AnnuaireModele->obtenirChampsMappageAnnuaire($id_annuaire);
927
		$tableau_mappage = $this->AnnuaireModele->obtenirChampsMappageAnnuaire($id_annuaire);
Line 1044... Line 928...
1044
 
928
 
1045
		$valeurs_mappees = array();
929
		$valeurs_mappees = array();
Line -... Line 930...
-
 
930
		$valeurs = array();
-
 
931
 
-
 
932
		//TODO: faire une fonction qui factorise ce principe !!!!
-
 
933
		//
-
 
934
		//
-
 
935
		//
-
 
936
		//
-
 
937
		//
1046
		$valeurs = array();
938
		//
1047
 
939
		//
Line 1048... Line 940...
1048
		// on itère sur le tableau de valeur pour récupérer les métadonnées;
940
		// on itère sur le tableau de valeur pour récupérer les métadonnées;
1049
		foreach($valeurs_recherchees as $nom_champ => $valeur) {
941
		foreach($valeurs_recherchees as $nom_champ => $valeur) {
Line 1073... Line 965...
1073
			}
965
			}
Line 1074... Line 966...
1074
 
966
 
1075
			unset($valeurs_recherchees[$nom_champ]);
967
			unset($valeurs_recherchees[$nom_champ]);
Line 1076... Line -...
1076
		}
-
 
1077
		
-
 
1078
		//Debug::printr($valeurs_recherchees);
968
		}
Line 1079... Line 969...
1079
 
969
		
1080
		$admin = Registre::getInstance()->get('est_admin');
970
		$admin = Registre::getInstance()->get('est_admin');
1081
 
971
 
Line 1156... Line 1046...
1156
		}
1046
		}
Line 1157... Line 1047...
1157
 
1047
 
1158
		$this->chargerModele('AnnuaireModele');
1048
		$this->chargerModele('AnnuaireModele');
Line 1159... Line 1049...
1159
		$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire, true);
1049
		$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire, true);
Line 1160... Line 1050...
1160
 
1050
 
Line 1161... Line 1051...
1161
		$tableau_mappage = $this->AnnuaireModele->obtenirChampsMappageAnnuaire($id_annuaire);
1051
		$tableau_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
1162
 
1052
 
Line 1216... Line 1106...
1216
		
1106
		
1217
		return $vue_resultat_recherche;
1107
		return $vue_resultat_recherche;
Line 1218... Line -...
1218
	}
-
 
1219
 
-
 
1220
 
-
 
1221
/** ---------------------------------    Fonction d'extraction d'informations utilisées par les web services -------------------------------------------*/
-
 
1222
 
-
 
1223
	public function obtenirIdParMail($id_annuaire, $mail_utilisateur) {
-
 
1224
		
-
 
1225
		$this->chargerModele('AnnuaireModele');
-
 
1226
		$id = $this->AnnuaireModele->obtenirIdParMail('1',$mail_utilisateur);
-
 
1227
		
-
 
1228
		return $id;
-
 
1229
	}
-
 
1230
	
-
 
1231
	public function utilisateurExiste($id_annuaire,$id, $utilise_mail = true) {
-
 
1232
 
-
 
1233
		$this->chargerModele('AnnuaireModele');
-
 
1234
 
-
 
1235
		if($utilise_mail) {
-
 
1236
			$existe = $this->AnnuaireModele->utilisateurExisteParMail($id_annuaire,$id);
-
 
1237
		} else {
-
 
1238
			$existe = $this->AnnuaireModele->utilisateurExisteParId($id_annuaire,$id);
-
 
1239
		}
-
 
1240
 
-
 
1241
		return $existe;
-
 
1242
	}
-
 
1243
 
-
 
1244
	public function obtenirInfosUtilisateurOpenId($id_annuaire,$id, $mail = true) {
-
 
1245
 
-
 
1246
		$this->chargerModele('AnnuaireModele');
-
 
1247
 
-
 
1248
		if($mail) {
-
 
1249
			$id = $this->AnnuaireModele->obtenirIdParMail($id_annuaire,$id);
-
 
1250
		}
-
 
1251
 
-
 
1252
		$champs_mappage = $this->AnnuaireModele->obtenirChampsMappageAnnuaire($id_annuaire);
-
 
1253
 
-
 
1254
		$valeurs = $this->AnnuaireModele->obtenirValeursUtilisateur($id_annuaire,$id, $champs_mappage[0]);
-
 
1255
 
-
 
1256
		// TODO: valeurs incomplètes, voir ce qu'on renvoie obligatoirement
-
 
1257
		// et ce qu'on ne renvoie pas
-
 
1258
		$valeurs_open_id = array('fullname' => $valeurs[$champs_mappage[0]['champ_nom']].' '.$valeurs[$champs_mappage[0]['champ_prenom']],
-
 
1259
                           'nickname' => $valeurs[$champs_mappage[0]['champ_nom']],
-
 
1260
                           'dob' => '25/10/1984',
-
 
1261
                           'email' => $valeurs[$champs_mappage[0]['champ_mail']],
-
 
1262
                           'gender' => 'M',
-
 
1263
                           'postcode' => $valeurs[$champs_mappage[0]['champ_code_postal']],
-
 
1264
                           'country' => 'FR',
-
 
1265
                           'language' => 'fr',
-
 
1266
                           'timezone' => 'Europe/Paris');
-
 
1267
 
-
 
1268
		return $valeurs_open_id;
-
 
1269
	}
-
 
1270
 
-
 
1271
	public function comparerIdentifiantMotDePasse($id_annuaire,$id_utilisateur,$mot_de_passe, $utilise_mail = true, $mdp_deja_crypte = true) {
-
 
1272
 
-
 
1273
		$this->chargerModele('AnnuaireModele');
-
 
1274
 
-
 
1275
		if($utilise_mail) {
-
 
1276
			$id_utilisateur = $this->AnnuaireModele->obtenirIdParMail($id_annuaire,$id_utilisateur);
-
 
1277
		}
-
 
1278
 
-
 
1279
		if(!$mdp_deja_crypte) {
-
 
1280
			$mot_de_passe = VerificationControleur::encrypterMotDePasseStatic($mot_de_passe);
-
 
1281
		}
-
 
1282
 
-
 
1283
		return $this->AnnuaireModele->comparerIdentifiantMotDePasse($id_annuaire,$id_utilisateur,$mot_de_passe);
-
 
1284
	}
-
 
1285
 
-
 
1286
 
-
 
1287
/** ---------------------------------    Fonction privées -------------------------------------------*/
-
 
1288
 
-
 
1289
	/**
-
 
1290
	 * En cas de tentative d'inscription, envoie un mail contenant un lien de confirmation à l'utilisateur
-
 
1291
	 * @param string $adresse_mail adresse mail
-
 
1292
	 * @param string $nom nom
-
 
1293
	 * @param string $prenom prénom
-
 
1294
	 * @param string $code_confirmation_inscription code de confirmation à inclure dans le mail
-
 
1295
	 *
-
 
1296
	 * @return boolean le succès ou l'échec de l'envoi du mail
-
 
1297
	 */
-
 
1298
	private function envoyerMailConfirmationInscription($adresse_mail, $nom, $prenom, $code_confirmation_inscription) {
-
 
1299
 
-
 
1300
		$url_cette_page = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
-
 
1301
		$base_url = new URL($url_cette_page);
-
 
1302
		$base_url->setVariablesRequete(array());
-
 
1303
		$base_url->setVariableRequete('m','annuaire_inscription_confirmation');
-
 
1304
		$base_url->setVariableRequete('id',$code_confirmation_inscription);
-
 
1305
 
-
 
1306
		$donnees = array('nom' => $nom, 'prenom' => $prenom, 'lien_confirmation_inscription' => $base_url->getURL());
-
 
1307
		$contenu_mail = $this->getVue(Config::get('dossier_squelettes_mails').'mail_confirmation_inscription',$donnees);
-
 
1308
 
-
 
1309
		 // Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
-
 
1310
	     $entetes  = 'MIME-Version: 1.0' . "\r\n";
-
 
1311
	     $entetes .= 'Content-type: text/html; charset='.Config::get('appli_encodage'). "\r\n";
-
 
1312
	     // En-têtes additionnels
-
 
1313
	     $entetes .= 'To: '.$adresse_mail."\r\n";
-
 
1314
	     $entetes .= 'From: '.Config::get('adresse_mail_annuaire')."\r\n";
-
 
1315
 
-
 
1316
		return mail($adresse_mail,'Inscription à l\'annuaire',$contenu_mail, $entetes);
-
 
1317
 
-
 
1318
	}
-
 
1319
 
-
 
1320
	 /** En cas d'oubli de mot de passe, régénère le mot de passe et envoie un mail à l'utilisateur
-
 
1321
	 * @param int $id_annuaire l'identifiant d'annuaire
-
 
1322
	 * @param string $adresse_mail adresse mail
-
 
1323
	 * @return boolean le succès ou l'échec de l'envoi du mail
-
 
1324
	 */
-
 
1325
	private function envoyerMailOubliMdp($id_annuaire,$mail, $nouveau_mdp) {
-
 
1326
 
-
 
1327
		$base_url = clone(Registre::getInstance()->get('base_url_application'));
-
 
1328
 
-
 
1329
		$base_url->setVariableRequete('m','annuaire_fiche_utilisateur_consultation');
-
 
1330
		$base_url->setVariableRequete('id',1);
-
 
1331
 
-
 
1332
		$donnees['nouveau_mdp'] = $nouveau_mdp;
-
 
1333
		$donnees['lien_profil'] = $base_url;
-
 
1334
 
-
 
1335
		$contenu_mail = $this->getVue(Config::get('dossier_squelettes_mails').'mail_oubli_mdp',$donnees);
-
 
1336
 
-
 
1337
		 // Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
-
 
1338
	     $entetes  = 'MIME-Version: 1.0' . "\r\n";
-
 
1339
	     $entetes .= 'Content-type: text/html; charset='.Config::get('appli_encodage'). "\r\n";
-
 
1340
	     // En-têtes additionnels
-
 
1341
	     $entetes .= 'To: '.$mail."\r\n";
-
 
1342
	     $entetes .= 'From: '.Config::get('adresse_mail_annuaire')."\r\n";
-
 
1343
 
-
 
1344
		 return mail($mail,'Inscription à l\'annuaire',$contenu_mail, $entetes);
-
 
1345
 
-
 
1346
	}
1108
	}
Line 1347... Line -...
1347
 
-
 
1348
 
-
 
1349
/**--------------------------- Fonctions de vérification et de correspondance des champs --------------------*/
-
 
1350
 
-
 
1351
	/**
-
 
1352
	 * Renvoie les champs de mappage correspondant à un annuaire donné
-
 
1353
	 * @param int $id_annuaire l'indentifant de l'annuaire pour lequel on veut ces informations
-
 
1354
	 * @return Array un tableau de mappage des champs
-
 
1355
	 *
-
 
1356
	 */
-
 
1357
	private function obtenirChampsMappageAnnuaire($id_annuaire) {
-
 
1358
 
-
 
1359
		$this->chargerModele('AnnuaireModele');
-
 
1360
		$tableau_mappage = $this->AnnuaireModele->obtenirChampsMappageAnnuaire($id_annuaire);
-
 
1361
 
-
 
1362
		return $tableau_mappage;
-
 
1363
	}
-
 
1364
 
-
 
1365
	/**
-
 
1366
	 * Renvoie le formulaire demandé s'il existe, sinon faux
-
 
1367
	 * @param string $nom_formulaire le nom du formulaire demandé (qui est normalement le code d'un annuaire)
-
 
1368
	 * @return boolean true si le formulaire existe, false sinon
-
 
1369
	 */
-
 
1370
	private function formulaireExiste($nom_formulaire) {
-
 
1371
 
-
 
1372
		return $this->templateExiste($nom_formulaire.'_inscription', Config::get('dossier_squelettes_formulaires'));
-
 
1373
	}
-
 
1374
 
-
 
1375
	/**
-
 
1376
	 * Renvoie le template demandé s'il existe, sinon faux
-
 
1377
	 * @param string $nom_formulaire le nom du formulaire demandé (qui est normalement le code d'un annuaire)
-
 
1378
	 * @param string $dossier le nom du dossier sous dossier demandé
-
 
1379
	 * @return boolean true si le formulaire existe, false sinon
-
 
1380
	 */
-
 
1381
	private function templateExiste($nom_template, $dossier = '/') {
-
 
1382
 
-
 
1383
		return file_exists(Config::get('chemin_squelettes').$dossier.$nom_template.'.tpl.html');
-
 
1384
	}
-
 
1385
 
-
 
1386
	/**
-
 
1387
	 * Renvoie un formulaire d'inscription minimal auto-généré
-
 
1388
	 * @param string $donnees les donnée à inclure dans le formulaire
-
 
1389
	 * @return string la vue contenant le formulaire généré
-
 
1390
	 */
-
 
1391
	private function genererFormulaireInscription($donnees) {
-
 
1392
 
-
 
1393
		$formulaire_modele = $this->getVue(Config::get('dossier_squelettes_formulaires').'inscription',$donnees);
-
 
1394
 
-
 
1395
		if($formulaire_modele) {
-
 
1396
			return $formulaire_modele;
-
 
1397
		} else {
-
 
1398
			trigger_error("impossible de trouver le squelette de référence pour le formulaire");
-
 
1399
		}
-
 
1400
 
-
 
1401
		return false;
-
 
1402
	}
-
 
1403
 
-
 
1404
	/**
-
 
1405
	 * Renvoie un formulaire d'inscription minimal auto-généré
-
 
1406
	 * @param string $donnees les donnée à inclure dans le formulaire
-
 
1407
	 * @return string la vue contenant le formulaire généré
-
 
1408
	 */
-
 
1409
	private function genererFormulaireRecherche($donnees) {
-
 
1410
 
-
 
1411
		$formulaire_modele = $this->getVue(Config::get('dossier_squelettes_formulaires').'recherche',$donnees);
-
 
1412
 
-
 
1413
		if($formulaire_modele) {
-
 
1414
			return $formulaire_modele;
-
 
1415
		} else {
-
 
1416
			trigger_error("impossible de trouver le squelette de référence pour le formulaire");
-
 
1417
		}
-
 
1418
 
-
 
1419
		return false;
-
 
1420
	}
-
 
1421
 
-
 
1422
	/**
-
 
1423
	 * Renvoie le template de pagination, considérant des éléments donnés en paramètre
-
 
1424
	 * @param int $numero_page le numéro de page en cours
-
 
1425
	 * @param int $taille_page la taille de page
-
 
1426
	 * @param int $total le nombre total de pages
-
 
1427
	 * @param object $url_base l'url de base de la page
-
 
1428
	 * @param array $valeurs les valeurs à concatener à l'url
-
 
1429
	 * @return string le html contenu la template de pagination rempli avec les infos
-
 
1430
	 */
-
 
1431
	private function paginer($numero_page = 1, $taille_page = 50, $total, $url_base, $valeurs) {
-
 
1432
 
-
 
1433
		// TODO, faire plus complexe, tri alphabétique etc...
-
 
1434
		$page_precedente = $numero_page-1;
-
 
1435
		$page_suivante = $numero_page+1;
-
 
1436
 
-
 
1437
		if($taille_page <= 0) {
-
 
1438
			$taille_page = 1;
-
 
1439
		}
-
 
1440
 
-
 
1441
		$nombre_pages = round($total/$taille_page,'PHP_ROUND_HALF_DOWN') ;
-
 
1442
 
-
 
1443
		foreach($valeurs as $cle => $variable) {
-
 
1444
			$url_base->setVariableRequete($cle,$variable);
-
 
1445
		}
-
 
1446
 
-
 
1447
		if($numero_page < 2) {
-
 
1448
			$page_precedente = false;
-
 
1449
			$url_page_precedente = '';
-
 
1450
		} else {
-
 
1451
			$url_page_prec = clone($url_base);
-
 
1452
				$url_page_prec->setVariableRequete('numero_page',($page_precedente));
-
 
1453
				$url_page_prec->setVariableRequete('taille_page',($taille_page));
-
 
1454
				$url_page_precedente = $url_page_prec->getUrl();
-
 
1455
		}
-
 
1456
 
-
 
1457
		if($taille_page*($numero_page) >= $total) {
-
 
1458
			$page_suivante = false;
-
 
1459
			$url_page_suivante = '';
-
 
1460
		} else {
-
 
1461
			$url_page_suiv = clone($url_base);
-
 
1462
				$url_page_suiv->setVariableRequete('numero_page',($page_suivante));
-
 
1463
				$url_page_suiv->setVariableRequete('taille_page',($taille_page));
-
 
1464
				$url_page_suivante = $url_page_suiv->getUrl();
-
 
1465
		}
-
 
1466
 
-
 
1467
		$url_pages = array();
-
 
1468
 
-
 
1469
		for($i = 1; $i <= $nombre_pages ; $i++) {
-
 
1470
 
-
 
1471
				$url_page_prev = clone($url_base);
-
 
1472
				$url_page_prev->setVariableRequete('numero_page',($i));
-
 
1473
				$url_page_prev->setVariableRequete('taille_page',($taille_page));
-
 
1474
				$url_pages[$i] = $url_page_prev->getUrl();
-
 
1475
		}
-
 
1476
 
-
 
1477
		$donnees = array('url_pages' => $url_pages, 'numero_page' => $numero_page,
-
 
1478
							'page_precedente' => $page_precedente, 'page_suivante' => $page_suivante,
-
 
1479
							'url_page_precedente' => $url_page_precedente, 'url_page_suivante' => $url_page_suivante,
-
 
1480
							'nombre_pages' => $nombre_pages, 'taille_page' => $taille_page);
-
 
1481
		$donnees['base_url_pagination'] = $url_base;
-
 
Line 1482... Line 1109...
1482
 
1109
 
Line 1483... Line 1110...
1483
		return $this->getVue(Config::get('dossier_squelettes_elements').'pagination',$donnees);
1110
 
Line 1567... Line 1194...
1567
		} else {
1194
		} else {
1568
			return $this->afficherFicheUtilisateur($id_annuaire, $id_utilisateur) ;
1195
			return $this->afficherFicheUtilisateur($id_annuaire, $id_utilisateur) ;
1569
		}
1196
		}
1570
	}
1197
	}
Line 1571... Line -...
1571
	
-
 
1572
	public function obtenirValeursUtilisateur($id_annuaire, $id_utilisateur) {
-
 
1573
		
-
 
1574
		$this->chargerModele('AnnuaireModele');
-
 
1575
		$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire, false);
-
 
1576
 
-
 
1577
		$this->chargerModele('MetadonneeModele');
-
 
1578
 
-
 
1579
		$metadonnees = $this->MetadonneeModele->chargerListeMetadonneeAnnuaire($id_annuaire);
-
 
1580
		$tableau_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
-
 
1581
 
-
 
1582
		$valeurs_annuaire = $this->AnnuaireModele->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur,$tableau_mappage[0]);
-
 
1583
		$valeurs_metadonnees= $this->MetadonneeModele->chargerListeValeursMetadonneesUtilisateur($id_annuaire, $id_utilisateur);
-
 
1584
 
-
 
1585
		foreach($tableau_mappage[0] as $cle => $nom_champ) {
-
 
1586
 
-
 
1587
			if($cle != 'champ_id') {
-
 
1588
 
-
 
1589
				$nom_champ_formulaire = $metadonnees[$tableau_mappage[1][$cle]]['amc_abreviation'];
-
 
1590
				$valeur = $valeurs_annuaire[$nom_champ] ;
-
 
1591
				
-
 
1592
				if(isset($valeurs_metadonnees[$nom_champ_formulaire])) {
-
 
1593
					if(isset($valeurs_metadonnees[$nom_champ_formulaire]['amv_valeur']) && $valeurs_metadonnees[$nom_champ_formulaire]['amv_valeur'] != '') {
-
 
1594
						$valeur = $valeurs_metadonnees[$nom_champ_formulaire]['amv_valeur'];
-
 
1595
					} 
-
 
1596
					$informations_champ = array('amv_valeur' => $valeur,'amc_id_champ' => $tableau_mappage[1][$cle]) ;
-
 
1597
					$valeurs_metadonnees[$nom_champ_formulaire] = array_merge($valeurs_metadonnees[$nom_champ_formulaire],$informations_champ);
-
 
1598
				} else {
-
 
1599
					$informations_champ = array('amv_valeur' => $valeur,'amc_id_champ' => $tableau_mappage[1][$cle]) ;
-
 
1600
					$valeurs_metadonnees[$nom_champ_formulaire] = $informations_champ;
-
 
1601
				}
-
 
1602
				
-
 
1603
				$verificateur = new VerificationControleur();
-
 
1604
				$valeurs_metadonnees[$nom_champ_formulaire] = $verificateur->verifierEtRemplacerValeurChampPourAffichage($valeurs_metadonnees[$nom_champ_formulaire]['amc_ce_type_affichage'],$valeurs_metadonnees[$nom_champ_formulaire], 1);
-
 
1605
			}
-
 
1606
		}
-
 
1607
		
-
 
1608
		return $valeurs_metadonnees;
-
 
1609
	}
-
 
1610
	
1198
	
Line 1611... Line 1199...
1611
	public function obtenirTableauDerniersInscrits($id_annuaire, $limite = '20') {
1199
	public function obtenirTableauDerniersInscrits($id_annuaire, $limite = '20') {
1612
		
1200
		
1613
		// Chargement des informations de l'utilisateur dans la table annuaire principale
1201
		// Chargement des informations de l'utilisateur dans la table annuaire principale