Subversion Repositories Applications.annuaire

Rev

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

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