Subversion Repositories Applications.annuaire

Rev

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

Rev 392 Rev 411
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
 * Modèle d'accès à la base de données des listes
4
 * Modèle d'accès à la base de données des listes
5
 * d'ontologies
5
 * d'ontologies
6
 *
6
 *
7
 * PHP Version 5
7
 * PHP Version 5
8
 *
8
 *
9
 * @package   Framework
9
 * @package   Framework
10
 * @category  Class
10
 * @category  Class
11
 * @author	aurelien <aurelien@tela-botanica.org>
11
 * @author	aurelien <aurelien@tela-botanica.org>
12
 * @copyright 2009 Tela-Botanica
12
 * @copyright 2009 Tela-Botanica
13
 * @license   http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
13
 * @license   http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
14
 * @license   http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
14
 * @license   http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
15
 * @version   SVN: $$Id: ListeAdmin.php 128 2009-09-02 12:20:55Z aurelien $$
15
 * @version   SVN: $$Id: ListeAdmin.php 128 2009-09-02 12:20:55Z aurelien $$
16
 * @link	  /doc/framework/
16
 * @link	  /doc/framework/
17
 *
17
 *
18
 */
18
 */
19
class AnnuaireModele extends Modele {
19
class AnnuaireModele extends Modele {
20
 
20
 
21
	private $config = array();
21
	private $config = array();
22
 
22
 
23
	/**
23
	/**
24
	 * Charge la liste complète des annuaires gérés par l'application
24
	 * Charge la liste complète des annuaires gérés par l'application
25
	 * @return array un tableau contenant des informations sur les annuaires gérés par l'application
25
	 * @return array un tableau contenant des informations sur les annuaires gérés par l'application
26
	 */
26
	 */
27
   	public function chargerListeAnnuaire() {
27
   	public function chargerListeAnnuaire() {
28
		$requete = 	'SELECT * '.
28
		$requete = 	'SELECT * '.
29
					'FROM  annu_annuaire '.
29
					'FROM  annu_annuaire '.
30
					'ORDER BY aa_id_annuaire';
30
					'ORDER BY aa_id_annuaire';
31
		$resultat = $this->requeteTous($requete);
31
		$resultat = $this->requeteTous($requete);
32
		$annuaires = array();
32
		$annuaires = array();
33
		foreach ($resultat as $ligne) {
33
		foreach ($resultat as $ligne) {
34
			$annuaires[] = $ligne;
34
			$annuaires[] = $ligne;
35
		}
35
		}
36
		return $annuaires;
36
		return $annuaires;
37
	}
37
	}
38
 
38
 
39
	/**
39
	/**
40
	 * Charge la liste complète des champs d'un annuaire
40
	 * Charge la liste complète des champs d'un annuaire
41
	 * @param int $identifiant l'identifiant de l'annuaire demandé
41
	 * @param int $identifiant l'identifiant de l'annuaire demandé
42
	 * @param boolean $charger_liste_champs indique si l'on doit ou non charger la liste des noms des champs
42
	 * @param boolean $charger_liste_champs indique si l'on doit ou non charger la liste des noms des champs
43
	 * @return array un tableau contenant des objets d'informations sur les annuaires
43
	 * @return array un tableau contenant des objets d'informations sur les annuaires
44
	 */
44
	 */
45
   	public function chargerAnnuaire($identifiant, $charger_liste_champs = true) {
45
   	public function chargerAnnuaire($identifiant, $charger_liste_champs = true) {
46
 
46
 
47
		$requete = 	'SELECT * '.
47
		$requete = 	'SELECT * '.
48
					'FROM  annu_annuaire '.
48
					'FROM  annu_annuaire '.
49
					'WHERE aa_id_annuaire = '.$identifiant.' ';
49
					'WHERE aa_id_annuaire = '.$identifiant.' ';
50
		$resultat = $this->requeteTous($requete);
50
		$resultat = $this->requeteTous($requete);
51
		$annuaire = array();
51
		$annuaire = array();
52
		foreach ($resultat as $ligne) {
52
		foreach ($resultat as $ligne) {
53
			$annuaire['informations'] = $ligne;
53
			$annuaire['informations'] = $ligne;
54
		}
54
		}
55
 
55
 
56
		if($charger_liste_champs) {
56
		if($charger_liste_champs) {
57
			$requete = 'DESCRIBE '.$annuaire['informations']['aa_bdd'].'.'.$annuaire['informations']['aa_table'];
57
			$requete = 'DESCRIBE '.$annuaire['informations']['aa_bdd'].'.'.$annuaire['informations']['aa_table'];
58
			$resultat = $this->requeteTous($requete);
58
			$resultat = $this->requeteTous($requete);
59
			foreach ($resultat as $colonne) {
59
			foreach ($resultat as $colonne) {
60
				$annuaire['colonnes'][] = $colonne;
60
				$annuaire['colonnes'][] = $colonne;
61
			}
61
			}
62
		}
62
		}
63
 
63
 
64
		return $annuaire;
64
		return $annuaire;
65
	}
65
	}
66
 
66
 
67
	/**
67
	/**
68
	 * Charge les champs de mappage d'un annuaire, c'est à dire les champs de metadonnées qui correspondent à un champ
68
	 * Charge les champs de mappage d'un annuaire, c'est à dire les champs de metadonnées qui correspondent à un champ
69
	 * déjà présent dans la table mappée
69
	 * déjà présent dans la table mappée
70
	 * @param int $id_annuaire l'identifiant de l'annuaire
70
	 * @param int $id_annuaire l'identifiant de l'annuaire
71
	 * @return array un tableau contenant les noms de champs mappés et les ids des champs métadonnées correspondants
71
	 * @return array un tableau contenant les noms de champs mappés et les ids des champs métadonnées correspondants
72
	 */
72
	 */
73
	public function obtenirChampsMappageAnnuaire($id_annuaire) {
73
	public function obtenirChampsMappageAnnuaire($id_annuaire) {
74
 
-
 
75
		$tableau_mappage = array();
74
		$requete = 'SELECT * '.
76
 
-
 
-
 
75
			'FROM annu_triples '.
77
		$requete_champs_mappage = 'SELECT * FROM annu_triples WHERE at_ce_annuaire = '.$this->proteger($id_annuaire).' '.
76
			"WHERE at_ce_annuaire = {$this->proteger($id_annuaire)} ".
78
		"AND at_action IN ('champ_id', 'champ_mail', 'champ_nom', 'champ_prenom', 'champ_pass', 'champ_lettre','champ_pays', 'champ_code_postal', 'champ_ville', 'champ_adresse', 'champ_adresse_comp', 'champ_date_inscription')";
77
			"	AND at_action IN ('champ_id', 'champ_mail', 'champ_nom', 'champ_prenom', 'champ_pass', ".
79
 
-
 
80
		$resultat_champs_mappage = $this->requeteTous($requete_champs_mappage);
78
			"		'champ_lettre','champ_pays', 'champ_code_postal', 'champ_ville', 'champ_adresse', ".
81
 
-
 
-
 
79
			"		'champ_adresse_comp', 'champ_date_inscription') ";
82
		$tableau_mappage = array();
80
		$resultat_champs_mappage = $this->requeteTous($requete);
83
 
-
 
84
		if(!$resultat_champs_mappage) {
81
		if (!$resultat_champs_mappage) {
85
			trigger_error('impossible de récupérer les champs de mappage de l\'annuaire '.$id_annuaire);
82
			trigger_error('impossible de récupérer les champs de mappage de l\'annuaire '.$id_annuaire);
86
		}
83
		}
-
 
84
 
87
 
85
		$tableau_mappage = array();
88
		foreach ($resultat_champs_mappage as  $champ) {
86
		foreach ($resultat_champs_mappage as  $champ) {
89
			$tableau_mappage[0][$champ['at_action']] = $champ['at_ressource'];
87
			$tableau_mappage[0][$champ['at_action']] = $champ['at_ressource'];
90
			$tableau_mappage[1][$champ['at_action']] = $champ['at_valeur'];
88
			$tableau_mappage[1][$champ['at_action']] = $champ['at_valeur'];
91
		}
89
		}
92
 
-
 
93
		return $tableau_mappage ;
90
		return $tableau_mappage;
94
	}
91
	}
95
 
92
 
96
	/**
93
	/**
97
	 * Charge les champs obligatoire d'un annuaire, c'est à dire les champs qui doivent être présents et remplis dans le
94
	 * Charge les champs obligatoire d'un annuaire, c'est à dire les champs qui doivent être présents et remplis dans le
98
	 * formulaire
95
	 * formulaire
99
	 * @param int $id_annuaire l'identifiant de l'annuaire
96
	 * @param int $id_annuaire l'identifiant de l'annuaire
100
	 * @return un tableau contenant les ids des champs obligatoire
97
	 * @return un tableau contenant les ids des champs obligatoire
101
	 */
98
	 */
102
	public function obtenirChampsObligatoires($id_annuaire) {
99
	public function obtenirChampsObligatoires($id_annuaire) {
-
 
100
		$requete = 'SELECT * '.
-
 
101
			'FROM annu_triples '.
-
 
102
			"WHERE at_ce_annuaire = {$this->proteger($id_annuaire)} ".
-
 
103
			"	AND at_action = 'champ_obligatoire' ";
-
 
104
		$resultat_champs_obligatoire = $this->requeteTous($requete);
103
 
105
 
104
		$tableau_mappage = array();
-
 
105
 
-
 
106
		$requete_champs_obligatoire = 'SELECT * FROM annu_triples WHERE at_ce_annuaire = '.$this->proteger($id_annuaire).' '.
-
 
107
		"AND at_action = 'champ_obligatoire'";
-
 
108
 
-
 
109
		$resultat_champs_obligatoire = $this->requeteTous($requete_champs_obligatoire);
-
 
110
 
-
 
111
		$tableau_mappage = array();
-
 
112
 
106
		$tableau_mappage = array();
113
		if(!$resultat_champs_obligatoire) {
107
		if (!$resultat_champs_obligatoire) {
114
			return $tableau_mappage;
108
			return $tableau_mappage;
115
		}
109
		}
116
 
110
 
117
		foreach ($resultat_champs_obligatoire as  $champ) {
111
		foreach ($resultat_champs_obligatoire as  $champ) {
118
			// le tableau des champs obligatoires se présente sous la forme nom_champ_metadonnee => nom_champ_annuaire
112
			// le tableau des champs obligatoires se présente sous la forme nom_champ_metadonnee => nom_champ_annuaire
119
			$tableau_obligatoire[$champ['at_valeur']] = $champ['at_ressource'];
113
			$tableau_obligatoire[$champ['at_valeur']] = $champ['at_ressource'];
120
		}
114
		}
121
 
115
 
122
		// TODO faire une interface de gestion des champs obligatoires
116
		// TODO faire une interface de gestion des champs obligatoires
123
		return $tableau_obligatoire ;
117
		return $tableau_obligatoire ;
124
	}
118
	}
125
 
119
 
126
	/**
120
	/**
127
	 * Charge les champs de cartographie d'un annuaire, c'est à dire les champs utilisées pour générer la carte des inscrits
121
	 * Charge les champs de cartographie d'un annuaire, c'est à dire les champs utilisées pour générer la carte des inscrits
128
	 * @param int $id_annuaire l'identifiant de l'annuaire
122
	 * @param int $id_annuaire l'identifiant de l'annuaire
129
	 * @return array un tableau contenant les identifiants ou les noms des champs cartographiques
123
	 * @return array un tableau contenant les identifiants ou les noms des champs cartographiques
130
	 */
124
	 */
131
	public function obtenirChampsCartographie($id_annuaire) {
125
	public function obtenirChampsCartographie($id_annuaire) {
132
 
126
 
133
		// TODO rendre les noms de champs plus générique
127
		// TODO rendre les noms de champs plus générique
134
		$requete_champs_carto = 'SELECT * FROM annu_triples WHERE at_ce_annuaire = '.$this->proteger($id_annuaire).' '.
128
		$requete_champs_carto = 'SELECT * FROM annu_triples WHERE at_ce_annuaire = '.$this->proteger($id_annuaire).' '.
135
		"AND at_action IN ('champ_pays', 'champ_code_postal')";
129
		"AND at_action IN ('champ_pays', 'champ_code_postal')";
136
 
130
 
137
		$resultat_champs_carto = $this->requeteTous($requete_champs_carto);
131
		$resultat_champs_carto = $this->requeteTous($requete_champs_carto);
138
 
132
 
139
		$tableau_carto = array();
133
		$tableau_carto = array();
140
 
134
 
141
		if(!$resultat_champs_carto) {
135
		if(!$resultat_champs_carto) {
142
			trigger_error('impossible de récupérer les champs cartographiques de l\'annuaire '.$id_annuaire);
136
			trigger_error('impossible de récupérer les champs cartographiques de l\'annuaire '.$id_annuaire);
143
		}
137
		}
144
 
138
 
145
		foreach ($resultat_champs_carto as  $champ) {
139
		foreach ($resultat_champs_carto as  $champ) {
146
			// le tableau des champs carto se présente sous la forme type de champ => [0] nom_champ_annuaire [1] nomù champ metadonnées
140
			// le tableau des champs carto se présente sous la forme type de champ => [0] nom_champ_annuaire [1] nomù champ metadonnées
147
			$tableau_carto[$champ['at_action']][0] = $champ['at_ressource'];
141
			$tableau_carto[$champ['at_action']][0] = $champ['at_ressource'];
148
			$tableau_carto[$champ['at_action']][1] = $champ['at_valeur'];
142
			$tableau_carto[$champ['at_action']][1] = $champ['at_valeur'];
149
		}
143
		}
150
 
144
 
151
		// TODO faire une interface de gestion des champs de mappage
145
		// TODO faire une interface de gestion des champs de mappage
152
		return $tableau_carto ;
146
		return $tableau_carto ;
153
	}
147
	}
154
 
148
 
155
	/**
149
	/**
156
	 * Renvoie l'identifiant du champ associé à l'image de profil (Avatar) dans un annuaire donné
150
	 * Renvoie l'identifiant du champ associé à l'image de profil (Avatar) dans un annuaire donné
157
	 * @param int $id_annuaire l'identifiant de l'annuaire
151
	 * @param int $id_annuaire l'identifiant de l'annuaire
158
	 * @return string l'identifiant du champ avatar dans l'annuaire donné ou false s'il n'en existe pas
152
	 * @return string l'identifiant du champ avatar dans l'annuaire donné ou false s'il n'en existe pas
159
	 */
153
	 */
160
	public function obtenirChampAvatar($id_annuaire) {
154
	public function obtenirChampAvatar($id_annuaire) {
161
 
155
 
162
		$requete_champs_avatar = 'SELECT * FROM annu_triples WHERE at_ce_annuaire = '.$this->proteger($id_annuaire).' '.
156
		$requete_champs_avatar = 'SELECT * FROM annu_triples WHERE at_ce_annuaire = '.$this->proteger($id_annuaire).' '.
163
		"AND at_action = 'champ_avatar'";
157
		"AND at_action = 'champ_avatar'";
164
 
158
 
165
		$resultat_champs_avatar = $this->requeteUn($requete_champs_avatar);
159
		$resultat_champs_avatar = $this->requeteUn($requete_champs_avatar);
166
 
160
 
167
		$champ_avatar = false;
161
		$champ_avatar = false;
168
 
162
 
169
		if(!$resultat_champs_avatar) {
163
		if(!$resultat_champs_avatar) {
170
			trigger_error('impossible de récupérer le champ avatar de l\'annuaire '.$id_annuaire);
164
			trigger_error('impossible de récupérer le champ avatar de l\'annuaire '.$id_annuaire);
171
		}
165
		}
172
 
166
 
173
		$champ_avatar = $resultat_champs_avatar['at_valeur'];
167
		$champ_avatar = $resultat_champs_avatar['at_valeur'];
174
 
168
 
175
		// TODO faire une interface de gestion des champs de mappage
169
		// TODO faire une interface de gestion des champs de mappage
176
		return $champ_avatar ;
170
		return $champ_avatar ;
177
	}
171
	}
178
 
172
 
179
	 /** Renvoie l'identifiant du champ associé à l'image de profil (Avatar) dans un annuaire donné
173
	 /** Renvoie l'identifiant du champ associé à l'image de profil (Avatar) dans un annuaire donné
180
	 * @param int $id_annuaire l'identifiant de l'annuaire
174
	 * @param int $id_annuaire l'identifiant de l'annuaire
181
	 * @return string l'identifiant du champ date inscription dans l'annuaire donné ou false s'il n'en existe pas
175
	 * @return string l'identifiant du champ date inscription dans l'annuaire donné ou false s'il n'en existe pas
182
	 */
176
	 */
183
	public function obtenirChampDateEtValidite($id_annuaire) {
177
	public function obtenirChampDateEtValidite($id_annuaire) {
184
 
178
 
185
		$requete_champs_date_validite = 'SELECT * FROM annu_triples WHERE at_ce_annuaire = '.$this->proteger($id_annuaire).' '.
179
		$requete_champs_date_validite = 'SELECT * FROM annu_triples WHERE at_ce_annuaire = '.$this->proteger($id_annuaire).' '.
186
		"AND at_action IN ('champ_date_inscription', 'champ_date_desinscription', 'champ_validite_inscription')";
180
		"AND at_action IN ('champ_date_inscription', 'champ_date_desinscription', 'champ_validite_inscription')";
187
 
181
 
188
		$resultat_champs_date_validite = $this->requeteTous($requete_champs_date_validite);
182
		$resultat_champs_date_validite = $this->requeteTous($requete_champs_date_validite);
189
 
183
 
190
		$champs_date_validite = array();
184
		$champs_date_validite = array();
191
		foreach ($resultat_champs_date_validite as $champ) {
185
		foreach ($resultat_champs_date_validite as $champ) {
192
     		$resultat_champs_date_validite[$champ['at_action']] = $champ['at_ressource'];
186
     		$resultat_champs_date_validite[$champ['at_action']] = $champ['at_ressource'];
193
		}
187
		}
194
 
188
 
195
		// TODO faire une interface de gestion des champs de mappage
189
		// TODO faire une interface de gestion des champs de mappage
196
		return $resultat_champs_date_validite ;
190
		return $resultat_champs_date_validite ;
197
	}
191
	}
198
 
192
 
199
	/**
193
	/**
200
	 * Charge tous les champs de description de l'annuaire
194
	 * Charge tous les champs de description de l'annuaire
201
	 * @param int $id_annuaire l'identifiant de l'annuaire
195
	 * @param int $id_annuaire l'identifiant de l'annuaire
202
	 * @return array un tableau contenant les noms de champs mappés et les ids des champs métadonnées correspondants
196
	 * @return array un tableau contenant les noms de champs mappés et les ids des champs métadonnées correspondants
203
	 */
197
	 */
204
	public function obtenirChampsDescriptionAnnuaire($id_annuaire) {
198
	public function obtenirChampsDescriptionAnnuaire($id_annuaire) {
205
 
199
 
206
		$tableau_mappage = array();
200
		$tableau_mappage = array();
207
 
201
 
208
		$requete_champs_mappage = 'SELECT * FROM annu_triples WHERE at_ce_annuaire = '.$this->proteger($id_annuaire);
202
		$requete_champs_mappage = 'SELECT * FROM annu_triples WHERE at_ce_annuaire = '.$this->proteger($id_annuaire);
209
 
203
 
210
		$resultat_champs_mappage = $this->requeteTous($requete_champs_mappage);
204
		$resultat_champs_mappage = $this->requeteTous($requete_champs_mappage);
211
 
205
 
212
		$tableau_mappage = array();
206
		$tableau_mappage = array();
213
 
207
 
214
		if(!$resultat_champs_mappage) {
208
		if(!$resultat_champs_mappage) {
215
			trigger_error('impossible de récupérer les champs décrivant l\'annuaire '.$id_annuaire);
209
			trigger_error('impossible de récupérer les champs décrivant l\'annuaire '.$id_annuaire);
216
		}
210
		}
217
 
211
 
218
		foreach ($resultat_champs_mappage as  $champ) {
212
		foreach ($resultat_champs_mappage as  $champ) {
219
			$tableau_mappage[0][$champ['at_action']] = $champ['at_ressource'];
213
			$tableau_mappage[0][$champ['at_action']] = $champ['at_ressource'];
220
			$tableau_mappage[1][$champ['at_action']] = $champ['at_valeur'];
214
			$tableau_mappage[1][$champ['at_action']] = $champ['at_valeur'];
221
		}
215
		}
222
 
216
 
223
		return $tableau_mappage ;
217
		return $tableau_mappage ;
224
	}
218
	}
225
 
219
 
226
	/** Charge le nombre d'inscrits d'une table annuaire mappée
220
	/** Charge le nombre d'inscrits d'une table annuaire mappée
227
	 * @param int $identifiant l'identifiant de l'annuaire mappé
221
	 * @param int $identifiant l'identifiant de l'annuaire mappé
228
	 */
222
	 */
229
	public function chargerNombreAnnuaireListeInscrits($identifiant) {
223
	public function chargerNombreAnnuaireListeInscrits($identifiant) {
230
 
224
 
231
			$requete_informations_annuaire = 	'SELECT aa_bdd, aa_table '.
225
			$requete_informations_annuaire = 	'SELECT aa_bdd, aa_table '.
232
					'FROM  annu_annuaire '.
226
					'FROM  annu_annuaire '.
233
					'WHERE aa_id_annuaire = '.$identifiant.' ';
227
					'WHERE aa_id_annuaire = '.$identifiant.' ';
234
		$resultat_informations_annuaire = $this->requeteUn($requete_informations_annuaire);
228
		$resultat_informations_annuaire = $this->requeteUn($requete_informations_annuaire);
235
 
229
 
236
		if(!$resultat_informations_annuaire) {
230
		if(!$resultat_informations_annuaire) {
237
			trigger_error('impossible de récupérer les informations de la table '.$identifiant);
231
			trigger_error('impossible de récupérer les informations de la table '.$identifiant);
238
		}
232
		}
239
 
233
 
240
		$requete_nombre_inscrits = 'SELECT COUNT(*) as nb '.
234
		$requete_nombre_inscrits = 'SELECT COUNT(*) as nb '.
241
									'FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'];
235
									'FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'];
242
 
236
 
243
		// Récupération des résultats
237
		// Récupération des résultats
244
		try {
238
		try {
245
			$resultat_nb_inscrits = $this->requeteUn($requete_nombre_inscrits);
239
			$resultat_nb_inscrits = $this->requeteUn($requete_nombre_inscrits);
246
			if ($donnees === false) {
240
			if ($donnees === false) {
247
				$this->messages[] = "La requête n'a retourné aucun résultat.";
241
				$this->messages[] = "La requête n'a retourné aucun résultat.";
248
			} else {
242
			} else {
249
				$nb_inscrits = $resultat_nb_inscrits['nb'];
243
				$nb_inscrits = $resultat_nb_inscrits['nb'];
250
			}
244
			}
251
		} catch (Exception $e) {
245
		} catch (Exception $e) {
252
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
246
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
253
		}
247
		}
254
 
248
 
255
		return $nb_inscrits;
249
		return $nb_inscrits;
256
	}
250
	}
257
 
251
 
258
	/** Charge le nombre d'inscrits d'une table annuaire mappée en les groupant par départements
252
	/** Charge le nombre d'inscrits d'une table annuaire mappée en les groupant par départements
259
	 * @param int $identifiant l'identifiant de l'annuaire mappé
253
	 * @param int $identifiant l'identifiant de l'annuaire mappé
260
	 * @return array un tableau indexé par les numéros de departement contenant le nombre d'inscrits à chacun
254
	 * @return array un tableau indexé par les numéros de departement contenant le nombre d'inscrits à chacun
261
	 *
255
	 *
262
	 */
256
	 */
263
	public function chargerNombreAnnuaireListeInscritsParDepartement($identifiant) {
257
	public function chargerNombreAnnuaireListeInscritsParDepartement($identifiant) {
264
 
258
 
265
		$requete_informations_annuaire = 	'SELECT aa_bdd, aa_table '.
259
		$requete_informations_annuaire = 	'SELECT aa_bdd, aa_table '.
266
					'FROM  annu_annuaire '.
260
					'FROM  annu_annuaire '.
267
					'WHERE aa_id_annuaire = '.$identifiant.' ';
261
					'WHERE aa_id_annuaire = '.$identifiant.' ';
268
		$resultat_informations_annuaire = $this->requeteUn($requete_informations_annuaire);
262
		$resultat_informations_annuaire = $this->requeteUn($requete_informations_annuaire);
269
 
263
 
270
		if(!$resultat_informations_annuaire) {
264
		if(!$resultat_informations_annuaire) {
271
			trigger_error('impossible de récupérer les informations de la table '.$identifiant);
265
			trigger_error('impossible de récupérer les informations de la table '.$identifiant);
272
		}
266
		}
273
 
267
 
274
		$tableau_mappage = $this->obtenirChampsMappageAnnuaire($identifiant);
268
		$tableau_mappage = $this->obtenirChampsMappageAnnuaire($identifiant);
275
		$champ_code_postal = $tableau_mappage[0]['champ_code_postal'];
269
		$champ_code_postal = $tableau_mappage[0]['champ_code_postal'];
276
		$champ_pays = $tableau_mappage[0]['champ_pays'];
270
		$champ_pays = $tableau_mappage[0]['champ_pays'];
277
 
271
 
278
		$requete_nombre_inscrits = 'SELECT IF ( SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 2 ) >= 96, '.
272
		$requete_nombre_inscrits = 'SELECT IF ( SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 2 ) >= 96, '.
279
						'		SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 3 ), '.
273
						'		SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 3 ), '.
280
						'		SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 2 ) ) AS id, '.
274
						'		SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 2 ) ) AS id, '.
281
						'	COUNT(*) AS nbre '.
275
						'	COUNT(*) AS nbre '.
282
						'FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].' '.
276
						'FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].' '.
283
						'WHERE '.$champ_pays.' = "FR" '.
277
						'WHERE '.$champ_pays.' = "FR" '.
284
						'GROUP BY IF ( SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 2 ) >= 96, '.
278
						'GROUP BY IF ( SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 2 ) >= 96, '.
285
						'	SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 3 ), '.
279
						'	SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 3 ), '.
286
						'	SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 2 ) ) '.
280
						'	SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 2 ) ) '.
287
						'ORDER BY id ASC ';
281
						'ORDER BY id ASC ';
288
 
282
 
289
			// Récupération des résultats
283
			// Récupération des résultats
290
			try {
284
			try {
291
				$donnees = $this->requeteTous($requete_nombre_inscrits);
285
				$donnees = $this->requeteTous($requete_nombre_inscrits);
292
				if ($donnees === false) {
286
				if ($donnees === false) {
293
					$this->messages[] = "La requête n'a retourné aucun résultat.";
287
					$this->messages[] = "La requête n'a retourné aucun résultat.";
294
				} else {
288
				} else {
295
					foreach ($donnees as $donnee) {
289
					foreach ($donnees as $donnee) {
296
						$resultat_nombre_inscrits[$donnee['id']] = $donnee['nbre'];
290
						$resultat_nombre_inscrits[$donnee['id']] = $donnee['nbre'];
297
					}
291
					}
298
				}
292
				}
299
			} catch (Exception $e) {
293
			} catch (Exception $e) {
300
				$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
294
				$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
301
			}
295
			}
302
 
296
 
303
		if(!$resultat_informations_annuaire) {
297
		if(!$resultat_informations_annuaire) {
304
			trigger_error('impossible de récupérer le nombre d\'inscrits de la table '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table']);
298
			trigger_error('impossible de récupérer le nombre d\'inscrits de la table '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table']);
305
		}
299
		}
306
 
300
 
307
		return $resultat_nombre_inscrits;
301
		return $resultat_nombre_inscrits;
308
	}
302
	}
309
 
303
 
310
	/** Charge le nombre d'inscrits d'une table annuaire mappée en les groupant par pays
304
	/** Charge le nombre d'inscrits d'une table annuaire mappée en les groupant par pays
311
	 * @param int $identifiant l'identifiant de l'annuaire mappé
305
	 * @param int $identifiant l'identifiant de l'annuaire mappé
312
	 * @param array $id_recherchees un tableau contenant les codes de pays à rechercher
306
	 * @param array $id_recherchees un tableau contenant les codes de pays à rechercher
313
	 * @return array un tableau indexé par les numéros de pays contenant le nombre d'inscrits à chacun
307
	 * @return array un tableau indexé par les numéros de pays contenant le nombre d'inscrits à chacun
314
	 *
308
	 *
315
	 */
309
	 */
316
	public function chargerNombreAnnuaireListeInscritsParPays($id_annuaire, $ids_recherchees) {
310
	public function chargerNombreAnnuaireListeInscritsParPays($id_annuaire, $ids_recherchees) {
317
 
311
 
318
		$requete_informations_annuaire = 	'SELECT aa_bdd, aa_table '.
312
		$requete_informations_annuaire = 	'SELECT aa_bdd, aa_table '.
319
					'FROM  annu_annuaire '.
313
					'FROM  annu_annuaire '.
320
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
314
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
321
		$resultat_informations_annuaire = $this->requeteUn($requete_informations_annuaire);
315
		$resultat_informations_annuaire = $this->requeteUn($requete_informations_annuaire);
322
 
316
 
323
		if(!$resultat_informations_annuaire) {
317
		if(!$resultat_informations_annuaire) {
324
			trigger_error('impossible de récupérer les informations de la table '.$id_annuaire);
318
			trigger_error('impossible de récupérer les informations de la table '.$id_annuaire);
325
		}
319
		}
326
 
320
 
327
		$tableau_mappage = $this->obtenirChampsCartographie($id_annuaire);
321
		$tableau_mappage = $this->obtenirChampsCartographie($id_annuaire);
328
		$champ_pays = $tableau_mappage['champ_pays'][0];
322
		$champ_pays = $tableau_mappage['champ_pays'][0];
329
 
323
 
330
		//$ids_recherchees = array_map(array($this,'formaterAbreviationPaysPourRecherche'), $ids_recherchees);
324
		//$ids_recherchees = array_map(array($this,'formaterAbreviationPaysPourRecherche'), $ids_recherchees);
331
 
325
 
332
		$resultat_nombre_inscrits = array();
326
		$resultat_nombre_inscrits = array();
333
 
327
 
334
		$requete_nombre_inscrits = 'SELECT '.$champ_pays.', COUNT(*) AS nbre '.
328
		$requete_nombre_inscrits = 'SELECT '.$champ_pays.', COUNT(*) AS nbre '.
335
						'FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].' '.
329
						'FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].' '.
336
						' WHERE '.$champ_pays.' IN '.
330
						' WHERE '.$champ_pays.' IN '.
337
						'('.implode(',',$ids_recherchees).') '.
331
						'('.implode(',',$ids_recherchees).') '.
338
						'GROUP BY '.$champ_pays.' '.
332
						'GROUP BY '.$champ_pays.' '.
339
						'ORDER BY '.$champ_pays.' ASC ';
333
						'ORDER BY '.$champ_pays.' ASC ';
340
 
334
 
341
		// Récupération des résultats
335
		// Récupération des résultats
342
		try {
336
		try {
343
			$donnees = $this->requeteTous($requete_nombre_inscrits);
337
			$donnees = $this->requeteTous($requete_nombre_inscrits);
344
			if ($donnees === false) {
338
			if ($donnees === false) {
345
				$this->messages[] = "La requête n'a retourné aucun résultat.";
339
				$this->messages[] = "La requête n'a retourné aucun résultat.";
346
			} else {
340
			} else {
347
				foreach ($donnees as $donnee) {
341
				foreach ($donnees as $donnee) {
348
					$resultat_nombre_inscrits[$donnee[$champ_pays]] = $donnee['nbre'];
342
					$resultat_nombre_inscrits[$donnee[$champ_pays]] = $donnee['nbre'];
349
				}
343
				}
350
			}
344
			}
351
		} catch (Exception $e) {
345
		} catch (Exception $e) {
352
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
346
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
353
		}
347
		}
354
 
348
 
355
		if(!$resultat_informations_annuaire) {
349
		if(!$resultat_informations_annuaire) {
356
			trigger_error('impossible de récupérer le nombre d\'inscrits de la table '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table']);
350
			trigger_error('impossible de récupérer le nombre d\'inscrits de la table '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table']);
357
		}
351
		}
358
 
352
 
359
		return $resultat_nombre_inscrits;
353
		return $resultat_nombre_inscrits;
360
	}
354
	}
361
 
355
 
362
	private function formaterAbreviationPaysPourRecherche($chaine) {
356
	private function formaterAbreviationPaysPourRecherche($chaine) {
363
		return $this->proteger(strtoupper($chaine));
357
		return $this->proteger(strtoupper($chaine));
364
	}
358
	}
365
 
359
 
366
	/**
360
	/**
367
	 * Recherche selon une valeur d'un champ qui peut être une valeur approximative (avec des %) dans un champ d'annuaire donné
361
	 * Recherche selon une valeur d'un champ qui peut être une valeur approximative (avec des %) dans un champ d'annuaire donné
368
	 * @param int $id_annuaire l'identifiant de l'annuaire
362
	 * @param int $id_annuaire l'identifiant de l'annuaire
369
	 * @param string $champ_critere le champ qui servira de filtre
363
	 * @param string $champ_critere le champ qui servira de filtre
370
	 * @param string $valeur la valeur à rechercher
364
	 * @param string $valeur la valeur à rechercher
371
	 * @param boolean $modele indique si l'on veut recherche la valeur exacte ou non
365
	 * @param boolean $modele indique si l'on veut recherche la valeur exacte ou non
372
	 * @return array un tableau contenant la liste des inscrits dans l'annuaire donné, correspondants à ce critère
366
	 * @return array un tableau contenant la liste des inscrits dans l'annuaire donné, correspondants à ce critère
373
	 */
367
	 */
374
	public function rechercherInscritDansAnnuaireMappeParTableauChamps($id_annuaire, $criteres, $modele = false, $numero_page = 1, $taille_page = 50) {
368
	public function rechercherInscritDansAnnuaireMappeParTableauChamps($id_annuaire, $criteres, $modele = false, $numero_page = 1, $taille_page = 50) {
375
 
369
 
376
		$sep = '';
370
		$sep = '';
377
 
371
 
378
		if($modele) {
372
		if($modele) {
379
			$sep = '%';
373
			$sep = '%';
380
		}
374
		}
381
 
375
 
382
		foreach($criteres as $champ => $valeur) {
376
		foreach($criteres as $champ => $valeur) {
383
			$criteres[$champ] = $valeur.$sep;
377
			$criteres[$champ] = $valeur.$sep;
384
		}
378
		}
385
 
379
 
386
		return $this->rechercherInscritDansAnnuaireMappe($id_annuaire, $criteres, array(), true, $numero_page, $taille_page);
380
		return $this->rechercherInscritDansAnnuaireMappe($id_annuaire, $criteres, array(), true, $numero_page, $taille_page);
387
	}
381
	}
388
 
382
 
389
	/**
383
	/**
390
	 * Charge les inscrits d'une table annuaire mappée, en ne conservant que les champs de mappage indiqués
384
	 * Charge les inscrits d'une table annuaire mappée, en ne conservant que les champs de mappage indiqués
391
	 * @param int $identifiant l'identifiant de l'annuaire mappé
385
	 * @param int $identifiant l'identifiant de l'annuaire mappé
392
	 * @param Array $champs_mappage les champs de mappage à retenir
386
	 * @param Array $champs_mappage les champs de mappage à retenir
393
	 * @param int $numero_page le numéro de la page demandée
387
	 * @param int $numero_page le numéro de la page demandée
394
	 * @param int $taille_page la taille de la page demandée
388
	 * @param int $taille_page la taille de la page demandée
395
	 *
389
	 *
396
	 */
390
	 */
397
   	public function chargerAnnuaireListeInscrits($id_annuaire, $numero_page = 1, $taille_page = 50) {
391
   	public function chargerAnnuaireListeInscrits($id_annuaire, $numero_page = 1, $taille_page = 50) {
398
 
392
 
399
		$requete_informations_annuaire = 	'SELECT aa_bdd, aa_table '.
393
		$requete_informations_annuaire = 	'SELECT aa_bdd, aa_table '.
400
					'FROM  annu_annuaire '.
394
					'FROM  annu_annuaire '.
401
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
395
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
402
 
396
 
403
		$resultat_informations_annuaire = $this->requeteUn($requete_informations_annuaire);
397
		$resultat_informations_annuaire = $this->requeteUn($requete_informations_annuaire);
404
 
398
 
405
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
399
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
406
 
400
 
407
		$requete_nb_inscrits = 'SELECT COUNT( * ) as nb '.' FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'];
401
		$requete_nb_inscrits = 'SELECT COUNT( * ) as nb '.' FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'];
408
 
402
 
409
		$resultat_nb_inscrits = $this->requeteUn($requete_nb_inscrits);
403
		$resultat_nb_inscrits = $this->requeteUn($requete_nb_inscrits);
410
 
404
 
411
		$nb_inscrits = 0;
405
		$nb_inscrits = 0;
412
		if($resultat_nb_inscrits) {
406
		if($resultat_nb_inscrits) {
413
			$nb_inscrits = $resultat_nb_inscrits['nb'];
407
			$nb_inscrits = $resultat_nb_inscrits['nb'];
414
		}
408
		}
415
 
409
 
416
		$requete_recherche_inscrits = 'SELECT '.$champs_mappage[0]['champ_id'].' FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'];
410
		$requete_recherche_inscrits = 'SELECT '.$champs_mappage[0]['champ_id'].' FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'];
417
 
411
 
418
   		if($taille_page != 0) {
412
   		if($taille_page != 0) {
419
			$requete_recherche_inscrits .= ' LIMIT '.(($numero_page-1)*$taille_page).','.($taille_page);
413
			$requete_recherche_inscrits .= ' LIMIT '.(($numero_page-1)*$taille_page).','.($taille_page);
420
		}
414
		}
421
 
415
 
422
		$resultat_recherche_inscrits = $this->requeteTous($requete_recherche_inscrits);
416
		$resultat_recherche_inscrits = $this->requeteTous($requete_recherche_inscrits);
423
 
417
 
424
		if(!$resultat_recherche_inscrits) {
418
		if(!$resultat_recherche_inscrits) {
425
			$resultat_recherche_inscrits = array();
419
			$resultat_recherche_inscrits = array();
426
		}
420
		}
427
 
421
 
428
		return array('total' => $nb_inscrits, 'resultat' => $resultat_recherche_inscrits) ;
422
		return array('total' => $nb_inscrits, 'resultat' => $resultat_recherche_inscrits) ;
429
	}
423
	}
430
 
424
 
431
	/**
425
	/**
432
	 * Ajoute les valeurs données dans l'annuaire indiqué
426
	 * Ajoute les valeurs données dans l'annuaire indiqué
433
	 * @param int $id_annuaire	l'identifiant de l'annuaire dans lequel on va travailler
427
	 * @param int $id_annuaire	l'identifiant de l'annuaire dans lequel on va travailler
434
	 * @param Array $valeurs_mappees un tableau de valeurs à ajouter
428
	 * @param Array $valeurs_mappees un tableau de valeurs à ajouter
435
	 * @param string $nom_champs les noms des champs dans lesquels on va ajouter les données
429
	 * @param string $nom_champs les noms des champs dans lesquels on va ajouter les données
436
	 * @return int l'identifiant du nouvel enregistrement
430
	 * @return int l'identifiant du nouvel enregistrement
437
	 */
431
	 */
438
	public function ajouterInscriptionDansAnnuaireMappe($id_annuaire, $valeurs_mappees, $nom_champs) {
432
	public function ajouterInscriptionDansAnnuaireMappe($id_annuaire, $valeurs_mappees, $nom_champs) {
439
 
433
 
440
		$requete_infos_annuaire = 'SELECT * '.
434
		$requete_infos_annuaire = 'SELECT * '.
441
					'FROM  annu_annuaire '.
435
					'FROM  annu_annuaire '.
442
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
436
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
443
 
437
 
444
		$resultat = $this->requeteUn($requete_infos_annuaire);
438
		$resultat = $this->requeteUn($requete_infos_annuaire);
445
		$annuaire = array();
439
		$annuaire = array();
446
 
440
 
447
		//en cas d'erreur on renvoie false
441
		//en cas d'erreur on renvoie false
448
		//TODO: lever une exception
442
		//TODO: lever une exception
449
		if(!$resultat) {
443
		if(!$resultat) {
450
			return false;
444
			return false;
451
		}
445
		}
452
 
446
 
453
		$annuaire = $resultat;
447
		$annuaire = $resultat;
454
 
448
 
455
		$champs_date = $this->obtenirChampDateEtValidite($id_annuaire);
449
		$champs_date = $this->obtenirChampDateEtValidite($id_annuaire);
456
 
450
 
457
		// si l'on fonctionne sur un modele de type champ inscription valide = 1
451
		// si l'on fonctionne sur un modele de type champ inscription valide = 1
458
		// puis valide = 0 lors de la desinscrption sans suppression
452
		// puis valide = 0 lors de la desinscrption sans suppression
459
		// on l'indique
453
		// on l'indique
460
		if(isset($champs_date['champ_validite_inscription'])) {
454
		if(isset($champs_date['champ_validite_inscription'])) {
461
			$valeurs_mappees[$champs_date['champ_validite_inscription']] = '1';
455
			$valeurs_mappees[$champs_date['champ_validite_inscription']] = '1';
462
		}
456
		}
463
 
457
 
464
		$valeurs_prot = array_map(array($this,'proteger'),$valeurs_mappees);
458
		$valeurs_prot = array_map(array($this,'proteger'),$valeurs_mappees);
465
 
459
 
466
		// si on a défini un champ date d'inscription, on l'ajoute à la liste des champs insérer
460
		// si on a défini un champ date d'inscription, on l'ajoute à la liste des champs insérer
467
		// avec la valeur NOW
461
		// avec la valeur NOW
468
		if(isset($champs_date['champ_date_inscription'])) {
462
		if(isset($champs_date['champ_date_inscription'])) {
469
			$valeurs_mappees[$champs_date['champ_date_inscription']] = 'NOW()';
463
			$valeurs_mappees[$champs_date['champ_date_inscription']] = 'NOW()';
470
			$valeurs_prot[$champs_date['champ_date_inscription']] = 'NOW()';
464
			$valeurs_prot[$champs_date['champ_date_inscription']] = 'NOW()';
471
		}
465
		}
472
 
466
 
473
		$valeurs = implode(',',$valeurs_prot);
467
		$valeurs = implode(',',$valeurs_prot);
474
		$champs = implode(',',array_keys($valeurs_mappees));
468
		$champs = implode(',',array_keys($valeurs_mappees));
475
 
469
 
476
		$requete_insertion_annuaire = 'INSERT INTO '.$annuaire['aa_bdd'].'.'.$annuaire['aa_table'].' '.
470
		$requete_insertion_annuaire = 'INSERT INTO '.$annuaire['aa_bdd'].'.'.$annuaire['aa_table'].' '.
477
			'('.$champs.') '.
471
			'('.$champs.') '.
478
			'VALUES ('.$valeurs.')';
472
			'VALUES ('.$valeurs.')';
479
 
473
 
480
		$id_nouvel_enregistrement = false;
474
		$id_nouvel_enregistrement = false;
481
 
475
 
482
		//en cas d'erreur on renvoie false
476
		//en cas d'erreur on renvoie false
483
		//TODO: lever une exception
477
		//TODO: lever une exception
484
		if(!$this->requete($requete_insertion_annuaire)) {
478
		if(!$this->requete($requete_insertion_annuaire)) {
485
			return $id_nouvel_enregistrement;
479
			return $id_nouvel_enregistrement;
486
		}
480
		}
487
 
481
 
488
		// le mail est censé être unique donc on l'utilise pour faire une selection pour retrouver l'enregistrement
482
		// le mail est censé être unique donc on l'utilise pour faire une selection pour retrouver l'enregistrement
489
		// (Les requetes du style SELECT MAX(id)... ne garantissent pas qu'on récupère le bon id
483
		// (Les requetes du style SELECT MAX(id)... ne garantissent pas qu'on récupère le bon id
490
		// si une autre insertion a eu lieu entre temps)
484
		// si une autre insertion a eu lieu entre temps)
491
		// TODO utiliser du PDO pur et utiliser les fonctions last_insert_id générique
485
		// TODO utiliser du PDO pur et utiliser les fonctions last_insert_id générique
492
		$requete_nouvel_id = 	'SELECT '.$nom_champs['champ_id'].' '.
486
		$requete_nouvel_id = 	'SELECT '.$nom_champs['champ_id'].' '.
493
								'FROM '.$annuaire['aa_bdd'].'.'.$annuaire['aa_table'].' '.
487
								'FROM '.$annuaire['aa_bdd'].'.'.$annuaire['aa_table'].' '.
494
								'WHERE '.
488
								'WHERE '.
495
								$nom_champs['champ_mail'].' = '.$this->proteger($valeurs_mappees[$nom_champs['champ_mail']]);
489
								$nom_champs['champ_mail'].' = '.$this->proteger($valeurs_mappees[$nom_champs['champ_mail']]);
496
 
490
 
497
		$resultat_nouvel_id = $this->requeteUn($requete_nouvel_id);
491
		$resultat_nouvel_id = $this->requeteUn($requete_nouvel_id);
498
 
492
 
499
 
493
 
500
 
494
 
501
		if(!$resultat_nouvel_id) {
495
		if(!$resultat_nouvel_id) {
502
			return $id_nouvel_enregistrement;
496
			return $id_nouvel_enregistrement;
503
		}
497
		}
504
 
498
 
505
		$id_nouvel_enregistrement = $resultat_nouvel_id[$nom_champs['champ_id']];
499
		$id_nouvel_enregistrement = $resultat_nouvel_id[$nom_champs['champ_id']];
506
 
500
 
507
		return $id_nouvel_enregistrement;
501
		return $id_nouvel_enregistrement;
508
	}
502
	}
509
 
503
 
510
	/**
504
	/**
511
	 * Modifie les valeurs données dans l'annuaire indiqué
505
	 * Modifie les valeurs données dans l'annuaire indiqué
512
	 * @param int $id_annuaire	l'identifiant de l'annuaire dans lequel on va travailler
506
	 * @param int $id_annuaire	l'identifiant de l'annuaire dans lequel on va travailler
513
	 * @param int $id_annuaire	l'identifiant de l'utilisateur à qui à modifier
507
	 * @param int $id_annuaire	l'identifiant de l'utilisateur à qui à modifier
514
	 * @param Array $valeurs_mappees un tableau de valeurs à modifier
508
	 * @param Array $valeurs_mappees un tableau de valeurs à modifier
515
	 * @param string $nom_champs les noms des champs dans lesquels on va modifier les données
509
	 * @param string $nom_champs les noms des champs dans lesquels on va modifier les données
516
	 * @return boolean true ou false suivant le succès de l'operation
510
	 * @return boolean true ou false suivant le succès de l'operation
517
	 */
511
	 */
518
	public function modifierInscriptionDansAnnuaireMappe($id_annuaire, $id_utilisateur, $valeurs_mappees, $champs_mappage) {
512
	public function modifierInscriptionDansAnnuaireMappe($id_annuaire, $id_utilisateur, $valeurs_mappees, $champs_mappage) {
519
 
513
 
520
		$requete_infos_annuaire = 'SELECT * '.
514
		$requete_infos_annuaire = 'SELECT * '.
521
					'FROM  annu_annuaire '.
515
					'FROM  annu_annuaire '.
522
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
516
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
523
 
517
 
524
		$resultat = $this->requeteUn($requete_infos_annuaire);
518
		$resultat = $this->requeteUn($requete_infos_annuaire);
525
		$annuaire = array();
519
		$annuaire = array();
526
 
520
 
527
		unset($valeurs_mappees[$champs_mappage['champ_id']]);
521
		unset($valeurs_mappees[$champs_mappage['champ_id']]);
528
 
522
 
529
		//en cas d'erreur on renvoie false
523
		//en cas d'erreur on renvoie false
530
		//TODO: lever une exception
524
		//TODO: lever une exception
531
		if(!$resultat) {
525
		if(!$resultat) {
532
			return false;
526
			return false;
533
		}
527
		}
534
 
528
 
535
		$annuaire = $resultat;
529
		$annuaire = $resultat;
536
 
530
 
537
		$requete_modification_annuaire = 'UPDATE '.$annuaire['aa_bdd'].'.'.$annuaire['aa_table'].' '.
531
		$requete_modification_annuaire = 'UPDATE '.$annuaire['aa_bdd'].'.'.$annuaire['aa_table'].' '.
538
		'SET ';
532
		'SET ';
539
		foreach($valeurs_mappees as $cle => $valeur) {
533
		foreach($valeurs_mappees as $cle => $valeur) {
540
			$requete_modification_annuaire .= $cle.' = '.$this->proteger($valeur).', ';
534
			$requete_modification_annuaire .= $cle.' = '.$this->proteger($valeur).', ';
541
		}
535
		}
542
 
536
 
543
		$requete_modification_annuaire = rtrim($requete_modification_annuaire,', ').' ' ;
537
		$requete_modification_annuaire = rtrim($requete_modification_annuaire,', ').' ' ;
544
 
538
 
545
		$requete_modification_annuaire .= 'WHERE '.$champs_mappage['champ_id'].' = '.$id_utilisateur ;
539
		$requete_modification_annuaire .= 'WHERE '.$champs_mappage['champ_id'].' = '.$id_utilisateur ;
546
 
540
 
547
		//en cas d'erreur on renvoie false
541
		//en cas d'erreur on renvoie false
548
		//TODO: lever une exception
542
		//TODO: lever une exception
549
		if(!$this->requete($requete_modification_annuaire)) {
543
		if(!$this->requete($requete_modification_annuaire)) {
550
			return false;
544
			return false;
551
		} else {
545
		} else {
552
			return true;
546
			return true;
553
		}
547
		}
554
 
548
 
555
	}
549
	}
556
 
550
 
557
	public function obtenirValeurChampAnnuaireMappe($id_annuaire, $id_utilisateur, $champ) {
551
	public function obtenirValeurChampAnnuaireMappe($id_annuaire, $id_utilisateur, $champ) {
558
 
552
 
559
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
553
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
560
		// on ne garde que les champs de mappage correspondant au champ de l'annuaire principal
554
		// on ne garde que les champs de mappage correspondant au champ de l'annuaire principal
561
		$champs_mappage = $champs_mappage[0];
555
		$champs_mappage = $champs_mappage[0];
562
 
556
 
563
		$requete_infos_annuaire = 'SELECT * '.
557
		$requete_infos_annuaire = 'SELECT * '.
564
					'FROM annu_annuaire '.
558
					'FROM annu_annuaire '.
565
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
559
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
566
 
560
 
567
		$resultat_infos_annuaire = $this->requeteUn($requete_infos_annuaire);
561
		$resultat_infos_annuaire = $this->requeteUn($requete_infos_annuaire);
568
 
562
 
569
 
563
 
570
 
564
 
571
		if(!$resultat_infos_annuaire) {
565
		if(!$resultat_infos_annuaire) {
572
			return false;
566
			return false;
573
		}
567
		}
574
 
568
 
575
		$champs_mappage_str = implode(',',$champs_mappage);
569
		$champs_mappage_str = implode(',',$champs_mappage);
576
		$id_utilisateur = $this->proteger($id_utilisateur);
570
		$id_utilisateur = $this->proteger($id_utilisateur);
577
 
571
 
578
		$requete_selection_valeur = 'SELECT '.$champs_mappage[$champ].' as '.$champ.' '.
572
		$requete_selection_valeur = 'SELECT '.$champs_mappage[$champ].' as '.$champ.' '.
579
										 'FROM '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '.
573
										 'FROM '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '.
580
										 'WHERE '.$champs_mappage['champ_id'].' = '.$id_utilisateur;
574
										 'WHERE '.$champs_mappage['champ_id'].' = '.$id_utilisateur;
581
 
575
 
582
		$resultat_selection_valeur = $this->requeteUn($requete_selection_valeur);
576
		$resultat_selection_valeur = $this->requeteUn($requete_selection_valeur);
583
 
577
 
584
 
578
 
585
 
579
 
586
		if(!$resultat_selection_valeur) {
580
		if(!$resultat_selection_valeur) {
587
			return false;
581
			return false;
588
		} else {
582
		} else {
589
			return $resultat_selection_valeur[$champ];
583
			return $resultat_selection_valeur[$champ];
590
		}
584
		}
591
	}
585
	}
592
 
586
 
593
	public function modifierValeurChampAnnuaireMappe($id_annuaire, $id_utilisateur, $champ, $valeur) {
587
	public function modifierValeurChampAnnuaireMappe($id_annuaire, $id_utilisateur, $champ, $valeur) {
594
 
588
 
595
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
589
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
596
		// on ne garde que les champs de mappage correspondant au champ de l'annuaire principal
590
		// on ne garde que les champs de mappage correspondant au champ de l'annuaire principal
597
		$champs_mappage = $champs_mappage[0];
591
		$champs_mappage = $champs_mappage[0];
598
 
592
 
599
		$requete_infos_annuaire = 'SELECT * '.
593
		$requete_infos_annuaire = 'SELECT * '.
600
					'FROM annu_annuaire '.
594
					'FROM annu_annuaire '.
601
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
595
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
602
 
596
 
603
		$resultat_infos_annuaire = $this->requeteUn($requete_infos_annuaire);
597
		$resultat_infos_annuaire = $this->requeteUn($requete_infos_annuaire);
604
 
598
 
605
 
599
 
606
 
600
 
607
		if(!$resultat_infos_annuaire) {
601
		if(!$resultat_infos_annuaire) {
608
			return false;
602
			return false;
609
		}
603
		}
610
 
604
 
611
		$champs_mappage_str = implode(',',$champs_mappage);
605
		$champs_mappage_str = implode(',',$champs_mappage);
612
		$id_utilisateur = $this->proteger($id_utilisateur);
606
		$id_utilisateur = $this->proteger($id_utilisateur);
613
		$valeur = $this->proteger($valeur);
607
		$valeur = $this->proteger($valeur);
614
 
608
 
615
		$requete_modification_valeur = 'UPDATE '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '.
609
		$requete_modification_valeur = 'UPDATE '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '.
616
										 'SET '.$champ.' = '.$valeur.' '.
610
										 'SET '.$champ.' = '.$valeur.' '.
617
										 'WHERE '.$champs_mappage['champ_id'].' = '.$id_utilisateur;
611
										 'WHERE '.$champs_mappage['champ_id'].' = '.$id_utilisateur;
618
 
612
 
619
 
613
 
620
		$resultat_modification_valeur = $this->requeteUn($requete_modification_valeur);
614
		$resultat_modification_valeur = $this->requeteUn($requete_modification_valeur);
621
 
615
 
622
 
616
 
623
 
617
 
624
		return $resultat_modification_valeur;
618
		return $resultat_modification_valeur;
625
	}
619
	}
626
 
620
 
627
	/**
621
	/**
628
	 * Renvoie le mail associé à l'identifiant d'un utilisateur dans un annuaire donné
622
	 * Renvoie le mail associé à l'identifiant d'un utilisateur dans un annuaire donné
629
	 * @param int $id_annuair l'identifiant de l'annuaire
623
	 * @param int $id_annuair l'identifiant de l'annuaire
630
	 * @param int $id_utilisateur l'identifiant de l'utilisateur
624
	 * @param int $id_utilisateur l'identifiant de l'utilisateur
631
	 * @return string le mail associé à cet identifiant ou false si l'utilisateur n'existe pas
625
	 * @return string le mail associé à cet identifiant ou false si l'utilisateur n'existe pas
632
	 */
626
	 */
633
	public function obtenirMailParId($id_annuaire, $id_utilisateur) {
627
	public function obtenirMailParId($id_annuaire, $id_utilisateur) {
634
 
628
 
635
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
629
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
636
		// on ne garde que les champs de mappage correspondant au champ de l'annuaire principal
630
		// on ne garde que les champs de mappage correspondant au champ de l'annuaire principal
637
		$champs_mappage = $champs_mappage[0];
631
		$champs_mappage = $champs_mappage[0];
638
 
632
 
639
		$requete_infos_annuaire = 'SELECT * '.
633
		$requete_infos_annuaire = 'SELECT * '.
640
					'FROM annu_annuaire '.
634
					'FROM annu_annuaire '.
641
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
635
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
642
 
636
 
643
		$resultat_infos_annuaire = $this->requeteUn($requete_infos_annuaire);
637
		$resultat_infos_annuaire = $this->requeteUn($requete_infos_annuaire);
644
 
638
 
645
 
639
 
646
 
640
 
647
		if(!$resultat_infos_annuaire) {
641
		if(!$resultat_infos_annuaire) {
648
			return false;
642
			return false;
649
		}
643
		}
650
 
644
 
651
		$champs_mappage_str = implode(',',$champs_mappage);
645
		$champs_mappage_str = implode(',',$champs_mappage);
652
		$id_utilisateur = $this->proteger($id_utilisateur);
646
		$id_utilisateur = $this->proteger($id_utilisateur);
653
 
647
 
654
		$requete_selection_utilisateur = 'SELECT '.$champs_mappage['champ_mail'].' '.
648
		$requete_selection_utilisateur = 'SELECT '.$champs_mappage['champ_mail'].' '.
655
										 'FROM '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '.
649
										 'FROM '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '.
656
										 'WHERE '.$champs_mappage['champ_id'].' = '.$id_utilisateur;
650
										 'WHERE '.$champs_mappage['champ_id'].' = '.$id_utilisateur;
657
 
651
 
658
 
652
 
659
 
653
 
660
		//echo $requete_selection_utilisateur;
654
		//echo $requete_selection_utilisateur;
661
		$resultat_selection_utilisateur = $this->requeteUn($requete_selection_utilisateur);
655
		$resultat_selection_utilisateur = $this->requeteUn($requete_selection_utilisateur);
662
 
656
 
663
 
657
 
664
 
658
 
665
		if(!$resultat_selection_utilisateur) {
659
		if(!$resultat_selection_utilisateur) {
666
			return false;
660
			return false;
667
		} else {
661
		} else {
668
			return $resultat_selection_utilisateur[$champs_mappage['champ_mail']];
662
			return $resultat_selection_utilisateur[$champs_mappage['champ_mail']];
669
		}
663
		}
670
 
664
 
671
	}
665
	}
672
 
666
 
673
	/**
667
	/**
674
	 * Renvoie les mail associés des identifiants d'utilisateur dans un annuaire donné
668
	 * Renvoie les mail associés des identifiants d'utilisateur dans un annuaire donné
675
	 * @param int $id_annuair l'identifiant de l'annuaire
669
	 * @param int $id_annuair l'identifiant de l'annuaire
676
	 * @param array $ids_utilisateurs les identifiants des l'utilisateur
670
	 * @param array $ids_utilisateurs les identifiants des l'utilisateur
677
	 * @return array un tableau contenant les mails associés à ces identifiant ou false si les utilisateurs n'existent pas
671
	 * @return array un tableau contenant les mails associés à ces identifiant ou false si les utilisateurs n'existent pas
678
	 */
672
	 */
679
	public function obtenirMailParTableauId($id_annuaire, $tableau_ids_utilisateurs) {
673
	public function obtenirMailParTableauId($id_annuaire, $tableau_ids_utilisateurs) {
680
 
674
 
681
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
675
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
682
		// on ne garde que les champs de mappage correspondant au champ de l'annuaire principal
676
		// on ne garde que les champs de mappage correspondant au champ de l'annuaire principal
683
		$champs_mappage = $champs_mappage[0];
677
		$champs_mappage = $champs_mappage[0];
684
 
678
 
685
		$requete_infos_annuaire = 'SELECT * '.
679
		$requete_infos_annuaire = 'SELECT * '.
686
					'FROM annu_annuaire '.
680
					'FROM annu_annuaire '.
687
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
681
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
688
 
682
 
689
		$resultat_infos_annuaire = $this->requeteUn($requete_infos_annuaire);
683
		$resultat_infos_annuaire = $this->requeteUn($requete_infos_annuaire);
690
 
684
 
691
 
685
 
692
 
686
 
693
		if(!$resultat_infos_annuaire) {
687
		if(!$resultat_infos_annuaire) {
694
			return false;
688
			return false;
695
		}
689
		}
696
 
690
 
697
		$champs_mappage_str = implode(',',$champs_mappage);
691
		$champs_mappage_str = implode(',',$champs_mappage);
698
 
692
 
699
		$tableau_ids_utilisateurs_p = array_map(array($this, 'proteger'), $tableau_ids_utilisateurs);
693
		$tableau_ids_utilisateurs_p = array_map(array($this, 'proteger'), $tableau_ids_utilisateurs);
700
		$str_ids_utilisateurs = implode(',',$tableau_ids_utilisateurs_p);
694
		$str_ids_utilisateurs = implode(',',$tableau_ids_utilisateurs_p);
701
 
695
 
702
		$requete_selection_utilisateurs = 'SELECT '.$champs_mappage['champ_mail'].' '.
696
		$requete_selection_utilisateurs = 'SELECT '.$champs_mappage['champ_mail'].' '.
703
										 'FROM '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '.
697
										 'FROM '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '.
704
										 'WHERE '.$champs_mappage['champ_id'].' IN ('.$str_ids_utilisateurs.')';
698
										 'WHERE '.$champs_mappage['champ_id'].' IN ('.$str_ids_utilisateurs.')';
705
 
699
 
706
		$resultat_selection_utilisateurs = $this->requeteTous($requete_selection_utilisateurs);
700
		$resultat_selection_utilisateurs = $this->requeteTous($requete_selection_utilisateurs);
707
 
701
 
708
		$resultat_utilisateurs = array();
702
		$resultat_utilisateurs = array();
709
 
703
 
710
		foreach($resultat_selection_utilisateurs as $utilisateur) {
704
		foreach($resultat_selection_utilisateurs as $utilisateur) {
711
			 $resultat_utilisateurs[] = $utilisateur[$champs_mappage['champ_mail']];
705
			 $resultat_utilisateurs[] = $utilisateur[$champs_mappage['champ_mail']];
712
		}
706
		}
713
 
707
 
714
 
708
 
715
 
709
 
716
		if(!$resultat_selection_utilisateurs) {
710
		if(!$resultat_selection_utilisateurs) {
717
			return false;
711
			return false;
718
		} else {
712
		} else {
719
			return $resultat_utilisateurs;
713
			return $resultat_utilisateurs;
720
		}
714
		}
721
 
715
 
722
	}
716
	}
723
 
717
 
724
	/**
718
	/**
725
	 * Renvoie l'id associé au mail d'un utilisateur dans un annuaire donné
719
	 * Renvoie l'id associé au mail d'un utilisateur dans un annuaire donné
726
	 * @param int $id_annuair l'identifiant de l'annuaire
720
	 * @param int $id_annuair l'identifiant de l'annuaire
727
	 * @param int $mail_utilisateur le mail de l'utilisateur
721
	 * @param int $mail_utilisateur le mail de l'utilisateur
728
	 * @return string l'id associé à ce mail ou false si l'utilisateur n'existe pas
722
	 * @return string l'id associé à ce mail ou false si l'utilisateur n'existe pas
729
	 */
723
	 */
730
	public function obtenirIdParMail($id_annuaire, $mail_utilisateur) {
724
	public function obtenirIdParMail($id_annuaire, $mail_utilisateur) {
731
 
725
 
732
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
726
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
733
		// on ne garde que les champs de mappage correspondant au champ de l'annuaire principal
727
		// on ne garde que les champs de mappage correspondant au champ de l'annuaire principal
734
		$champs_mappage = $champs_mappage[0];
728
		$champs_mappage = $champs_mappage[0];
735
 
729
 
736
		$requete_infos_annuaire = 'SELECT * '.
730
		$requete_infos_annuaire = 'SELECT * '.
737
					'FROM annu_annuaire '.
731
					'FROM annu_annuaire '.
738
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
732
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
739
 
733
 
740
		$resultat_infos_annuaire = $this->requeteUn($requete_infos_annuaire);
734
		$resultat_infos_annuaire = $this->requeteUn($requete_infos_annuaire);
741
 
735
 
742
 
736
 
743
 
737
 
744
		if(!$resultat_infos_annuaire) {
738
		if(!$resultat_infos_annuaire) {
745
			return false;
739
			return false;
746
		}
740
		}
747
 
741
 
748
		$requete_selection_utilisateur = 'SELECT '.$champs_mappage['champ_id'].' '.
742
		$requete_selection_utilisateur = 'SELECT '.$champs_mappage['champ_id'].' '.
749
										 'FROM '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '.
743
										 'FROM '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '.
750
										 'WHERE '.$champs_mappage['champ_mail'].' = '.$this->proteger($mail_utilisateur);
744
										 'WHERE '.$champs_mappage['champ_mail'].' = '.$this->proteger($mail_utilisateur);
751
 
745
 
752
		$resultat_selection_utilisateur = $this->requeteUn($requete_selection_utilisateur);
746
		$resultat_selection_utilisateur = $this->requeteUn($requete_selection_utilisateur);
753
		if(!$resultat_selection_utilisateur) {
747
		if(!$resultat_selection_utilisateur) {
754
			return false;
748
			return false;
755
		} else {
749
		} else {
756
			return $resultat_selection_utilisateur[$champs_mappage['champ_id']];
750
			return $resultat_selection_utilisateur[$champs_mappage['champ_id']];
757
		}
751
		}
758
 
752
 
759
	}
753
	}
760
 
754
 
761
	/**
755
	/**
762
	 * Renvoie le nom et prénom associé au mail d'un utilisateur dans un annuaire donné
756
	 * Renvoie le nom et prénom associé au mail d'un utilisateur dans un annuaire donné
763
	 * @param int $id_annuair l'identifiant de l'annuaire
757
	 * @param int $id_annuair l'identifiant de l'annuaire
764
	 * @param array $courriels un tableau de courriel d'utilisateur
758
	 * @param array $courriels un tableau de courriel d'utilisateur
765
	 * @return array un tableau contenant en clé le courriel et en valeur un tableau avec le prénom dans le champ 'prenom' et le nom dans le champ 'nom'.
759
	 * @return array un tableau contenant en clé le courriel et en valeur un tableau avec le prénom dans le champ 'prenom' et le nom dans le champ 'nom'.
766
	 */
760
	 */
767
	public function obtenirPrenomNomParCourriel($id_annuaire, $courriels) {
761
	public function obtenirPrenomNomParCourriel($id_annuaire, $courriels) {
768
		$mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
762
		$mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
769
		// on ne garde que les champs de mappage correspondant au champ de l'annuaire principal
763
		// on ne garde que les champs de mappage correspondant au champ de l'annuaire principal
770
		$mappage = $mappage[0];
764
		$mappage = $mappage[0];
771
 
765
 
772
		$requete = 	'SELECT * '.
766
		$requete = 	'SELECT * '.
773
					'FROM annu_annuaire '.
767
					'FROM annu_annuaire '.
774
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
768
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
775
 
-
 
776
		$annuaire = $this->requeteUn($requete);
769
		$annuaire = $this->requeteUn($requete);
777
		if (!$annuaire) {
770
		if (!$annuaire) {
778
			return false;
771
			return false;
779
		}
772
		}
780
 
773
 
781
		foreach ($courriels as $id => $courriel) {
774
		foreach ($courriels as $id => $courriel) {
782
			$courriels[$id] = $this->proteger($courriel);
775
			$courriels[$id] = $this->proteger($courriel);
783
		}
776
		}
784
 
777
 
785
		$requete = 	'SELECT '.$mappage['champ_id'].', '.$mappage['champ_mail'].', '.$mappage['champ_prenom'].', '.$mappage['champ_nom'].' '.
778
		$requete = 	'SELECT '.$mappage['champ_id'].', '.$mappage['champ_mail'].', '.$mappage['champ_prenom'].', '.$mappage['champ_nom'].' '.
786
					'FROM '.$annuaire['aa_bdd'].'.'.$annuaire['aa_table'].' '.
779
					'FROM '.$annuaire['aa_bdd'].'.'.$annuaire['aa_table'].' '.
787
					'WHERE '.$mappage['champ_mail'].' IN ('.implode(',', $courriels).')';
780
					'WHERE '.$mappage['champ_mail'].' IN ('.implode(',', $courriels).')';
788
		$resultats = $this->requeteTous($requete);
781
		$resultats = $this->requeteTous($requete);
789
 
782
 
790
		if (!$resultats) {
783
		if (!$resultats) {
791
			return false;
784
			return false;
792
		} else {
785
		} else {
793
			$infos = array();
786
			$infos = array();
794
			foreach ($resultats as $resultat) {
787
			foreach ($resultats as $resultat) {
795
				$id = $resultat[$mappage['champ_id']];
788
				$id = $resultat[$mappage['champ_id']];
796
				$prenom = AppControleur::formaterMotPremiereLettreChaqueMotEnMajuscule($resultat[$mappage['champ_prenom']]);
789
				$prenom = AppControleur::formaterMotPremiereLettreChaqueMotEnMajuscule($resultat[$mappage['champ_prenom']]);
797
				$nom = AppControleur::formaterMotEnMajuscule($resultat[$mappage['champ_nom']]);
790
				$nom = AppControleur::formaterMotEnMajuscule($resultat[$mappage['champ_nom']]);
798
 
791
 
799
				$infos[$resultat[$mappage['champ_mail']]] = array('id' => $id, 'prenom' => $prenom, 'nom' => $nom);
792
				$infos[$resultat[$mappage['champ_mail']]] = array('id' => $id, 'prenom' => $prenom, 'nom' => $nom);
800
			}
793
			}
801
			return $infos;
794
			return $infos;
802
		}
795
		}
803
 
796
 
804
	}
797
	}
805
 
798
 
806
	// TODO: commenter
799
	// TODO: commenter
807
	public function comparerIdentifiantMotDePasse($id_annuaire, $id_utilisateur, $mot_de_passe) {
800
	public function comparerIdentifiantMotDePasse($id_annuaire, $id_utilisateur, $mot_de_passe) {
808
 
801
 
809
		$requete_infos_annuaire = 'SELECT * '.
802
		$requete_infos_annuaire = 'SELECT * '.
810
					'FROM annu_annuaire '.
803
					'FROM annu_annuaire '.
811
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
804
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
812
 
805
 
813
		$resultat_infos_annuaire = $this->requeteUn($requete_infos_annuaire);
806
		$resultat_infos_annuaire = $this->requeteUn($requete_infos_annuaire);
814
 
807
 
815
 
808
 
816
 
809
 
817
		if(!$resultat_infos_annuaire) {
810
		if(!$resultat_infos_annuaire) {
818
			return false;
811
			return false;
819
		}
812
		}
820
 
813
 
821
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
814
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
822
		// on ne garde que les champs de mappage correspondant au champ de l'annuaire principal
815
		// on ne garde que les champs de mappage correspondant au champ de l'annuaire principal
823
		$champs_mappage = $champs_mappage[0];
816
		$champs_mappage = $champs_mappage[0];
824
 
817
 
825
		$mot_de_passe = $this->proteger($mot_de_passe);
818
		$mot_de_passe = $this->proteger($mot_de_passe);
826
		$id_utilisateur = $this->proteger($id_utilisateur);
819
		$id_utilisateur = $this->proteger($id_utilisateur);
827
 
820
 
828
		$requete_selection_utilisateur = 'SELECT COUNT(*) as match_login_mdp '.
821
		$requete_selection_utilisateur = 'SELECT COUNT(*) as match_login_mdp '.
829
										 'FROM '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '.
822
										 'FROM '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '.
830
										 'WHERE '.$champs_mappage['champ_id'].' = '.$id_utilisateur.' '.
823
										 'WHERE '.$champs_mappage['champ_id'].' = '.$id_utilisateur.' '.
831
										 'AND '.$champs_mappage['champ_pass'].' = '.$mot_de_passe;
824
										 'AND '.$champs_mappage['champ_pass'].' = '.$mot_de_passe;
832
 
825
 
833
		$resultat_selection_utilisateur = $this->requeteUn($requete_selection_utilisateur);
826
		$resultat_selection_utilisateur = $this->requeteUn($requete_selection_utilisateur);
834
 
827
 
835
		// en cas d'erreur ou bien si le login ne matche pas le mot de passe
828
		// en cas d'erreur ou bien si le login ne matche pas le mot de passe
836
		// on renvoie false
829
		// on renvoie false
837
		if(!$resultat_selection_utilisateur || $resultat_selection_utilisateur['match_login_mdp'] <= 0) {
830
		if(!$resultat_selection_utilisateur || $resultat_selection_utilisateur['match_login_mdp'] <= 0) {
838
			return false;
831
			return false;
839
		} else {
832
		} else {
840
			return true;
833
			return true;
841
		}
834
		}
842
	}
835
	}
843
 
836
 
844
	/**
837
	/**
845
	 * Récupère les champs demandé dans l'annuaire indiqué
838
	 * Récupère les champs demandé dans l'annuaire indiqué
846
	 * @param int $id_annuaire	l'identifiant de l'annuaire dans lequel on va travailler
839
	 * @param int $id_annuaire	l'identifiant de l'annuaire dans lequel on va travailler
847
	 * @param int $id_utilisateur l'identifiant de l'utilisateur dont on veut les informations
840
	 * @param int $id_utilisateur l'identifiant de l'utilisateur dont on veut les informations
848
	 * @param Array $champs_mappage les noms des champs que l'on veut récupérer
841
	 * @param Array $champs_mappage les noms des champs que l'on veut récupérer
849
	 * @return Array les informations demandées
842
	 * @return Array les informations demandées
850
	 */
843
	 */
851
	public function obtenirValeursUtilisateur($id_annuaire, $id_utilisateur, $champs_mappage) {
844
	public function obtenirValeursUtilisateur($id_annuaire, $id_utilisateur, $champs_mappage) {
852
 
845
 
853
		$requete_infos_annuaire = 'SELECT * '.
846
		$requete_infos_annuaire = 'SELECT * '.
854
					'FROM annu_annuaire '.
847
					'FROM annu_annuaire '.
855
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
848
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
856
 
849
 
857
		$resultat_infos_annuaire = $this->requeteUn($requete_infos_annuaire);
850
		$resultat_infos_annuaire = $this->requeteUn($requete_infos_annuaire);
858
 
851
 
859
 
852
 
860
 
853
 
861
		if(!$resultat_infos_annuaire) {
854
		if(!$resultat_infos_annuaire) {
862
			return false;
855
			return false;
863
		}
856
		}
864
 
857
 
865
		$champs_mappage_str = implode(',',$champs_mappage);
858
		$champs_mappage_str = implode(',',$champs_mappage);
866
		$id_utilisateur = $this->proteger($id_utilisateur);
859
		$id_utilisateur = $this->proteger($id_utilisateur);
867
 
860
 
868
		$requete_selection_utilisateur = 'SELECT '.$champs_mappage_str.' '.
861
		$requete_selection_utilisateur = 'SELECT '.$champs_mappage_str.' '.
869
										 'FROM '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '.
862
										 'FROM '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '.
870
										 'WHERE '.$champs_mappage['champ_id'].' = '.$id_utilisateur;
863
										 'WHERE '.$champs_mappage['champ_id'].' = '.$id_utilisateur;
871
 
864
 
872
		$resultat_selection_utilisateur = $this->requeteUn($requete_selection_utilisateur);
865
		$resultat_selection_utilisateur = $this->requeteUn($requete_selection_utilisateur);
873
 
866
 
874
 
867
 
875
 
868
 
876
		if(!$resultat_selection_utilisateur) {
869
		if(!$resultat_selection_utilisateur) {
877
			return false;
870
			return false;
878
		} else {
871
		} else {
879
			return $resultat_selection_utilisateur;
872
			return $resultat_selection_utilisateur;
880
		}
873
		}
881
	}
874
	}
882
 
875
 
883
	/**
876
	/**
884
	 * Récupère les valeurs utilisateur dans l'annuaire indiqué en les ordonnant par le champ demandé
877
	 * Récupère les valeurs utilisateur dans l'annuaire indiqué en les ordonnant par le champ demandé
885
	 * @param int $id_annuaire	l'identifiant de l'annuaire dans lequel on va travailler
878
	 * @param int $id_annuaire	l'identifiant de l'annuaire dans lequel on va travailler
886
	 * @param Array $champs_mappage les noms des champs que l'on veut récupérer
879
	 * @param Array $champs_mappage les noms des champs que l'on veut récupérer
887
	 * @param string order_by le champ par lequel on ordonne les résultats
880
	 * @param string order_by le champ par lequel on ordonne les résultats
888
	 * @param limit la limite au nombre de résultats
881
	 * @param limit la limite au nombre de résultats
889
	 * @return Array les informations demandées
882
	 * @return Array les informations demandées
890
	 */
883
	 */
891
	public function obtenirTableauValeursUtilisateurs($id_annuaire, $champs_mappage, $order_by = 'champ_id', $dir= 'DESC', $limit = '20') {
884
	public function obtenirTableauValeursUtilisateurs($id_annuaire, $champs_mappage, $order_by = 'champ_id', $dir= 'DESC', $limit = '20') {
892
 
885
 
893
		$requete_infos_annuaire = 'SELECT * '.
886
		$requete_infos_annuaire = 'SELECT * '.
894
					'FROM annu_annuaire '.
887
					'FROM annu_annuaire '.
895
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
888
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
896
 
889
 
897
		$resultat_infos_annuaire = $this->requeteUn($requete_infos_annuaire);
890
		$resultat_infos_annuaire = $this->requeteUn($requete_infos_annuaire);
898
 
891
 
899
 
892
 
900
 
893
 
901
		if(!$resultat_infos_annuaire) {
894
		if(!$resultat_infos_annuaire) {
902
			return false;
895
			return false;
903
		}
896
		}
904
 
897
 
905
		$champ_order_by = $champs_mappage[$order_by];
898
		$champ_order_by = $champs_mappage[$order_by];
906
 
899
 
907
		$champs_mappage_str = implode(',',$champs_mappage);
900
		$champs_mappage_str = implode(',',$champs_mappage);
908
		$id_utilisateur = $this->proteger($id_utilisateur);
901
		$id_utilisateur = $this->proteger($id_utilisateur);
909
 
902
 
910
		$requete_selection_utilisateur = 'SELECT '.$champs_mappage_str.' '.
903
		$requete_selection_utilisateur = 'SELECT '.$champs_mappage_str.' '.
911
										 'FROM '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '.
904
										 'FROM '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '.
912
										 'ORDER BY '.$champ_order_by.' '.$dir.' LIMIT '.$limit;
905
										 'ORDER BY '.$champ_order_by.' '.$dir.' LIMIT '.$limit;
913
 
906
 
914
		$resultat_selection_utilisateur = $this->requeteTous($requete_selection_utilisateur);
907
		$resultat_selection_utilisateur = $this->requeteTous($requete_selection_utilisateur);
915
 
908
 
916
 
909
 
917
 
910
 
918
		if(!$resultat_selection_utilisateur) {
911
		if(!$resultat_selection_utilisateur) {
919
			return false;
912
			return false;
920
		} else {
913
		} else {
921
			return $resultat_selection_utilisateur;
914
			return $resultat_selection_utilisateur;
922
		}
915
		}
923
	}
916
	}
924
 
917
 
925
/**
918
	/**
926
	 * Récupère les valeurs utilisateur dans l'annuaire indiqué en les ordonnant par le champ demandé
919
	 * Récupère les valeurs utilisateur dans l'annuaire indiqué en les ordonnant par le champ demandé
927
	 * @param int $id_annuaire	l'identifiant de l'annuaire dans lequel on va travailler
920
	 * @param int $id_annuaire	l'identifiant de l'annuaire dans lequel on va travailler
928
	 * @param Array $champs_mappage les noms des champs que l'on veut récupérer
921
	 * @param Array $champs_mappage les noms des champs que l'on veut récupérer
929
	 * @param string order_by le champ par lequel on ordonne les résultats
922
	 * @param string order_by le champ par lequel on ordonne les résultats
930
	 * @param limit la limite au nombre de résultats
923
	 * @param limit la limite au nombre de résultats
931
	 * @return Array les informations demandées
924
	 * @return Array les informations demandées
932
	 */
925
	 */
933
	public function obtenirTableauIdsUtilisateurs($id_annuaire, $champs_mappage, $order_by = 'champ_id', $dir= 'DESC', $limit = '20') {
926
	public function obtenirTableauIdsUtilisateurs($id_annuaire, $champs_mappage, $order_by = 'champ_id', $dir= 'DESC', $limit = '20') {
934
 
927
 
935
		$requete_infos_annuaire = 'SELECT * '.
928
		$requete_infos_annuaire = 'SELECT * '.
936
					'FROM annu_annuaire '.
929
					'FROM annu_annuaire '.
937
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
930
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
938
 
931
 
939
		$resultat_infos_annuaire = $this->requeteUn($requete_infos_annuaire);
932
		$resultat_infos_annuaire = $this->requeteUn($requete_infos_annuaire);
940
 
933
 
941
 
934
 
942
 
935
 
943
		if(!$resultat_infos_annuaire) {
936
		if(!$resultat_infos_annuaire) {
944
			return false;
937
			return false;
945
		}
938
		}
946
 
939
 
947
		$champ_order_by = $champs_mappage[$order_by];
940
		$champ_order_by = $champs_mappage[$order_by];
948
 
941
 
949
		$requete_selection_utilisateur = 'SELECT '.$champs_mappage['champ_id'].' '.
942
		$requete_selection_utilisateur = 'SELECT '.$champs_mappage['champ_id'].' '.
950
										 'FROM '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '.
943
										 'FROM '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '.
951
										 'ORDER BY '.$champ_order_by.' '.$dir.' LIMIT '.$limit;
944
										 'ORDER BY '.$champ_order_by.' '.$dir.' LIMIT '.$limit;
952
 
945
 
953
		$resultat_selection_utilisateur = $this->requeteTous($requete_selection_utilisateur);
946
		$resultat_selection_utilisateur = $this->requeteTous($requete_selection_utilisateur);
954
 
947
 
955
 
948
 
956
 
949
 
957
		if(!$resultat_selection_utilisateur) {
950
		if(!$resultat_selection_utilisateur) {
958
			return false;
951
			return false;
959
		} else {
952
		} else {
960
			return $resultat_selection_utilisateur;
953
			return $resultat_selection_utilisateur;
961
		}
954
		}
962
	}
955
	}
963
 
956
 
964
	public function obtenirNombreInscriptionsDansIntervalleDate($id_annuaire, $date_debut, $date_fin) {
957
	public function obtenirNombreInscriptionsDansIntervalleDate($id_annuaire, $date_debut, $date_fin) {
965
 
958
 
966
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
959
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
967
 
960
 
968
		$requete_infos_annuaire = 'SELECT * '.
961
		$requete_infos_annuaire = 'SELECT * '.
969
			'FROM annu_annuaire '.
962
			'FROM annu_annuaire '.
970
			'WHERE aa_id_annuaire = '.$id_annuaire.' ';
963
			'WHERE aa_id_annuaire = '.$id_annuaire.' ';
971
 
964
 
972
		$resultat_infos_annuaire = $this->requeteUn($requete_infos_annuaire);
965
		$resultat_infos_annuaire = $this->requeteUn($requete_infos_annuaire);
973
 
966
 
974
 
967
 
975
 
968
 
976
		if(!$resultat_infos_annuaire) {
969
		if(!$resultat_infos_annuaire) {
977
			return false;
970
			return false;
978
		}
971
		}
979
 
972
 
980
		//$supprimer_donnes = false;
973
		//$supprimer_donnes = false;
981
		$valeurs_mappees = array();
974
		$valeurs_mappees = array();
982
 
975
 
983
		$champs_date = $this->obtenirChampDateEtValidite($id_annuaire);
976
		$champs_date = $this->obtenirChampDateEtValidite($id_annuaire);
984
 
977
 
985
		$date_inscription = $champs_date['champ_date_inscription'];
978
		$date_inscription = $champs_date['champ_date_inscription'];
986
 
979
 
987
		$requete_nb_inscrits_intervalle = 'SELECT COUNT(*) as nb '.
980
		$requete_nb_inscrits_intervalle = 'SELECT COUNT(*) as nb '.
988
						'FROM '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '.
981
						'FROM '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '.
989
						'WHERE '.$date_inscription.' >= "'.date('Y-m-d H:i:s', $date_debut).'" '.
982
						'WHERE '.$date_inscription.' >= "'.date('Y-m-d H:i:s', $date_debut).'" '.
990
						'AND '.$date_inscription.' < "'.date('Y-m-d H:i:s', $date_fin).'" ';
983
						'AND '.$date_inscription.' < "'.date('Y-m-d H:i:s', $date_fin).'" ';
991
 
984
 
992
		$resultat_nb_inscrits_intervalle = $this->requeteUn($requete_nb_inscrits_intervalle);
985
		$resultat_nb_inscrits_intervalle = $this->requeteUn($requete_nb_inscrits_intervalle);
993
 
986
 
994
		if(!$resultat_nb_inscrits_intervalle) {
987
		if(!$resultat_nb_inscrits_intervalle) {
995
			return 0;
988
			return 0;
996
		}
989
		}
997
 
990
 
998
		return $resultat_nb_inscrits_intervalle['nb'];
991
		return $resultat_nb_inscrits_intervalle['nb'];
999
 
992
 
1000
	}
993
	}
1001
 
994
 
1002
 
995
 
1003
 
996
 
1004
	/**
997
	/**
1005
	 * Supprime une inscription dans une table annuaire
998
	 * Supprime une inscription dans une table annuaire
1006
	 * @param int $id_annuaire l'identifiant de l'annuaire dans lequel on supprime les données
999
	 * @param int $id_annuaire l'identifiant de l'annuaire dans lequel on supprime les données
1007
	 * @param int $id_utilisateur l'identifiant de l'utilisateur à supprimer
1000
	 * @param int $id_utilisateur l'identifiant de l'utilisateur à supprimer
1008
	 * @return boolean true si la suppression a réussi, false sinon
1001
	 * @return boolean true si la suppression a réussi, false sinon
1009
	 */
1002
	 */
1010
	public function supprimerInscriptionDansAnnuaireMappe($id_annuaire, $id_utilisateur) {
1003
	public function supprimerInscriptionDansAnnuaireMappe($id_annuaire, $id_utilisateur) {
1011
 
1004
 
1012
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
1005
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
1013
 
1006
 
1014
		$requete_infos_annuaire = 'SELECT * '.
1007
		$requete_infos_annuaire = 'SELECT * '.
1015
			'FROM annu_annuaire '.
1008
			'FROM annu_annuaire '.
1016
			'WHERE aa_id_annuaire = '.$id_annuaire.' ';
1009
			'WHERE aa_id_annuaire = '.$id_annuaire.' ';
1017
 
1010
 
1018
		$resultat_infos_annuaire = $this->requeteUn($requete_infos_annuaire);
1011
		$resultat_infos_annuaire = $this->requeteUn($requete_infos_annuaire);
1019
 
1012
 
1020
 
1013
 
1021
 
1014
 
1022
		if(!$resultat_infos_annuaire) {
1015
		if(!$resultat_infos_annuaire) {
1023
			return false;
1016
			return false;
1024
		}
1017
		}
1025
 
1018
 
1026
		//$supprimer_donnes = false;
1019
		//$supprimer_donnes = false;
1027
		$valeurs_mappees = array();
1020
		$valeurs_mappees = array();
1028
 
1021
 
1029
		$champs_date = $this->obtenirChampDateEtValidite($id_annuaire);
1022
		$champs_date = $this->obtenirChampDateEtValidite($id_annuaire);
1030
 
1023
 
1031
		// si on a défini un champ de validite d'inscription, on ne supprime pas l'enregistrement
1024
		// si on a défini un champ de validite d'inscription, on ne supprime pas l'enregistrement
1032
		// mais on remplace cette valeur par 0
1025
		// mais on remplace cette valeur par 0
1033
		/*if(isset($champs_date['champ_validite_inscription'])) {
1026
		/*if(isset($champs_date['champ_validite_inscription'])) {
1034
			$valeurs_mappees[$champs_date['champ_validite_inscription']] = '1';
1027
			$valeurs_mappees[$champs_date['champ_validite_inscription']] = '1';
1035
			$supprimer_donnees = true;
1028
			$supprimer_donnees = true;
1036
		}
1029
		}
1037
 
1030
 
1038
		// si on a défini un champ date de desinscription, on met à jour avec la valeur NOW
1031
		// si on a défini un champ date de desinscription, on met à jour avec la valeur NOW
1039
		// avec la valeur NOW
1032
		// avec la valeur NOW
1040
		if(isset($champs_date['champ_date_desinscription'])) {
1033
		if(isset($champs_date['champ_date_desinscription'])) {
1041
			$valeurs_mappees[$champs_date['champ_date_desinscription']] = 'NOW()';
1034
			$valeurs_mappees[$champs_date['champ_date_desinscription']] = 'NOW()';
1042
		}*/
1035
		}*/
1043
 
1036
 
1044
		//if($supprimer_donnees) {
1037
		//if($supprimer_donnees) {
1045
		$requete_suppression_utilisateur = 'DELETE FROM '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '.
1038
		$requete_suppression_utilisateur = 'DELETE FROM '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '.
1046
											 'WHERE '.$champs_mappage[0]['champ_id'].' = '.$this->proteger($id_utilisateur);
1039
											 'WHERE '.$champs_mappage[0]['champ_id'].' = '.$this->proteger($id_utilisateur);
1047
 
1040
 
1048
		/*} else {
1041
		/*} else {
1049
 
1042
 
1050
			$champs_valeurs = '';
1043
			$champs_valeurs = '';
1051
			foreach($valeurs_mappees as $cle => $valeur) {
1044
			foreach($valeurs_mappees as $cle => $valeur) {
1052
				$champs_valeurs .= $cle.' = '.$valeur.', ';
1045
				$champs_valeurs .= $cle.' = '.$valeur.', ';
1053
			}
1046
			}
1054
 
1047
 
1055
			$requete_suppression_utilisateur = 'UPDATE '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '.
1048
			$requete_suppression_utilisateur = 'UPDATE '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '.
1056
											 	'SET '.$champs_valeurs.' '.
1049
											 	'SET '.$champs_valeurs.' '.
1057
												'WHERE '.$champs_mappage[0]['champ_id'].' = '.$this->proteger($id_utilisateur);
1050
												'WHERE '.$champs_mappage[0]['champ_id'].' = '.$this->proteger($id_utilisateur);
1058
		}*/
1051
		}*/
1059
 
1052
 
1060
		$resultat_suppression_utilisateur = $this->requeteUn($requete_suppression_utilisateur);
1053
		$resultat_suppression_utilisateur = $this->requeteUn($requete_suppression_utilisateur);
1061
 
1054
 
1062
 
1055
 
1063
 
1056
 
1064
		if($this->utilisateurExisteParId($id_annuaire, $id_utilisateur, $champs_mappage)) {
1057
		if($this->utilisateurExisteParId($id_annuaire, $id_utilisateur, $champs_mappage)) {
1065
			return false;
1058
			return false;
1066
		}
1059
		}
1067
 
1060
 
1068
		return true;
1061
		return true;
1069
	}
1062
	}
1070
 
1063
 
1071
	/**
1064
	/**
1072
	 * Renvoie vrai si un utilisateur existe suivant un id donné
1065
	 * Renvoie vrai si un utilisateur existe suivant un id donné
1073
	 * @param int $id_annuaire l'identifiant de l'annuaire dans lequel on supprime les données
1066
	 * @param int $id_annuaire l'identifiant de l'annuaire dans lequel on supprime les données
1074
	 * @param int $id_utilisateur l'identifiant de l'utilisateur à supprimer
1067
	 * @param int $id_utilisateur l'identifiant de l'utilisateur à supprimer
1075
	 * @return boolean true si l'utilisateur existe, false sinon
1068
	 * @return boolean true si l'utilisateur existe, false sinon
1076
	 */
1069
	 */
1077
	public function utilisateurExisteParId($id_annuaire, $id_utilisateur) {
1070
	public function utilisateurExisteParId($id_annuaire, $id_utilisateur) {
1078
 
1071
 
1079
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
1072
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
1080
 
1073
 
1081
		$requete_informations_annuaire = 	'SELECT aa_bdd, aa_table '.
1074
		$requete_informations_annuaire = 	'SELECT aa_bdd, aa_table '.
1082
					'FROM  annu_annuaire '.
1075
					'FROM  annu_annuaire '.
1083
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
1076
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
1084
		$resultat_informations_annuaire = $this->requeteUn($requete_informations_annuaire);
1077
		$resultat_informations_annuaire = $this->requeteUn($requete_informations_annuaire);
1085
 
1078
 
1086
		if(!$resultat_informations_annuaire) {
1079
		if(!$resultat_informations_annuaire) {
1087
			trigger_error('impossible de récupérer les informations de la table '.$id_annuaire);
1080
			trigger_error('impossible de récupérer les informations de la table '.$id_annuaire);
1088
		}
1081
		}
1089
 
1082
 
1090
		$requete_nombre_inscrits = 'SELECT COUNT(*) AS est_inscrit'.
1083
		$requete_nombre_inscrits = 'SELECT COUNT(*) AS est_inscrit'.
1091
				' FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].
1084
				' FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].
1092
				' WHERE '.$champs_mappage[0]['champ_id'].' = '.$this->proteger($id_utilisateur);
1085
				' WHERE '.$champs_mappage[0]['champ_id'].' = '.$this->proteger($id_utilisateur);
1093
 
1086
 
1094
		$resultat_nombre_inscrits = $this->requeteUn($requete_nombre_inscrits);
1087
		$resultat_nombre_inscrits = $this->requeteUn($requete_nombre_inscrits);
1095
 
1088
 
1096
		if(!$resultat_nombre_inscrits) {
1089
		if(!$resultat_nombre_inscrits) {
1097
			trigger_error('impossible de vérifier l\'existence de cet utilisateur ');
1090
			trigger_error('impossible de vérifier l\'existence de cet utilisateur ');
1098
		}
1091
		}
1099
 
1092
 
1100
		return ($resultat_nombre_inscrits['est_inscrit'] > 0) ;
1093
		return ($resultat_nombre_inscrits['est_inscrit'] > 0) ;
1101
 
1094
 
1102
	}
1095
	}
1103
 
1096
 
1104
	 /** Renvoie vrai si un utilisateur existe suivant un mail donné
1097
	 /** Renvoie vrai si un utilisateur existe suivant un mail donné
1105
	 * @param int $id_annuaire l'identifiant de l'annuaire dans lequel recherche
1098
	 * @param int $id_annuaire l'identifiant de l'annuaire dans lequel recherche
1106
	 * @param int $id_utilisateur le mail de l'utilisateur à chercher
1099
	 * @param int $id_utilisateur le mail de l'utilisateur à chercher
1107
	 * @return boolean true si l'utilisateur existe, false sinon
1100
	 * @return boolean true si l'utilisateur existe, false sinon
1108
	 */
1101
	 */
1109
	public function utilisateurExisteParMail($id_annuaire, $mail) {
1102
	public function utilisateurExisteParMail($id_annuaire, $mail) {
1110
 
1103
 
1111
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
1104
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
1112
 
1105
 
1113
		$requete_informations_annuaire = 	'SELECT aa_bdd, aa_table '.
1106
		$requete_informations_annuaire = 	'SELECT aa_bdd, aa_table '.
1114
					'FROM  annu_annuaire '.
1107
					'FROM  annu_annuaire '.
1115
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
1108
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
1116
		$resultat_informations_annuaire = $this->requeteUn($requete_informations_annuaire);
1109
		$resultat_informations_annuaire = $this->requeteUn($requete_informations_annuaire);
1117
 
1110
 
1118
		if(!$resultat_informations_annuaire) {
1111
		if(!$resultat_informations_annuaire) {
1119
			trigger_error('impossible de récupérer les informations de la table '.$id_annuaire);
1112
			trigger_error('impossible de récupérer les informations de la table '.$id_annuaire);
1120
		}
1113
		}
1121
 
1114
 
1122
		$requete_nombre_inscrits = 'SELECT COUNT(*) AS est_inscrit '.
1115
		$requete_nombre_inscrits = 'SELECT COUNT(*) AS est_inscrit '.
1123
				' FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].
1116
				' FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].
1124
				' WHERE '.$champs_mappage[0]['champ_mail'].' = '.$this->proteger($mail);
1117
				' WHERE '.$champs_mappage[0]['champ_mail'].' = '.$this->proteger($mail);
1125
 
1118
 
1126
		$resultat_nombre_inscrits = $this->requeteUn($requete_nombre_inscrits);
1119
		$resultat_nombre_inscrits = $this->requeteUn($requete_nombre_inscrits);
1127
 
1120
 
1128
		if(!$resultat_nombre_inscrits) {
1121
		if(!$resultat_nombre_inscrits) {
1129
			trigger_error('impossible de vérifier l\'existence de cet utilisateur ');
1122
			trigger_error('impossible de vérifier l\'existence de cet utilisateur ');
1130
		}
1123
		}
1131
 
1124
 
1132
		return ($resultat_nombre_inscrits['est_inscrit'] > 0) ;
1125
		return ($resultat_nombre_inscrits['est_inscrit'] > 0) ;
1133
 
1126
 
1134
	}
1127
	}
1135
 
1128
 
1136
	/**
1129
	/**
1137
	 * @param int $id_annuaire identifiant de l'annuaire dans lequel on recherche
1130
	 * @param int $id_annuaire identifiant de l'annuaire dans lequel on recherche
1138
	 * @param array $valeurs un tableau de valeurs à rechercher
1131
	 * @param array $valeurs un tableau de valeurs à rechercher
1139
	 * @param array $id_a_inclure un tableau d'identifiants à inclure (pour chainer des recherches)
1132
	 * @param array $id_a_inclure un tableau d'identifiants à inclure (pour chainer des recherches)
1140
	 * @param boolean $exclusive indique si l'on recherche effectue une recherche exclusive ou inclusive (AND, ou OR)
1133
	 * @param boolean $exclusive indique si l'on recherche effectue une recherche exclusive ou inclusive (AND, ou OR)
1141
	 */
1134
	 */
1142
	public function rechercherInscritDansAnnuaireMappe($id_annuaire, $valeurs, $id_a_inclure = array(), $exclusive = true, $numero_page = 1, $taille_page = 50, $ordre = 'champ_nom') {
1135
	public function rechercherInscritDansAnnuaireMappe($id_annuaire, $valeurs, $id_a_inclure = array(), $exclusive = true, $numero_page = 1, $taille_page = 50, $ordre = 'champ_nom') {
1143
 
1136
 
1144
		// Si la fonction est appelée et que tous les critères sont vides
1137
		// Si la fonction est appelée et que tous les critères sont vides
1145
		if(count($valeurs) == 0 && count($id_a_inclure) == 0) {
1138
		if(count($valeurs) == 0 && count($id_a_inclure) == 0) {
1146
			// on sort directement
1139
			// on sort directement
1147
			return array();
1140
			return array();
1148
		}
1141
		}
1149
 
1142
 
1150
		$requete_informations_annuaire = 	'SELECT aa_bdd, aa_table '.
1143
		$requete_informations_annuaire = 	'SELECT aa_bdd, aa_table '.
1151
					'FROM  annu_annuaire '.
1144
					'FROM  annu_annuaire '.
1152
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
1145
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
1153
 
1146
 
1154
		$resultat_informations_annuaire = $this->requeteUn($requete_informations_annuaire);
1147
		$resultat_informations_annuaire = $this->requeteUn($requete_informations_annuaire);
1155
 
1148
 
1156
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
1149
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
1157
 
1150
 
1158
		$requete_recherche_inscrits = 'SELECT '.$champs_mappage[0]['champ_id'].
1151
		$requete_recherche_inscrits = 'SELECT '.$champs_mappage[0]['champ_id'].
1159
				' FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].
1152
				' FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].
1160
				' WHERE ';
1153
				' WHERE ';
1161
 
1154
 
1162
		$requete_conditions_inscrits = '';
1155
		$requete_conditions_inscrits = '';
1163
 
1156
 
1164
		if($exclusive) {
1157
		if($exclusive) {
1165
			$separateur = ' AND ';
1158
			$separateur = ' AND ';
1166
		} else {
1159
		} else {
1167
			$separateur = ' OR ';
1160
			$separateur = ' OR ';
1168
		}
1161
		}
1169
 
1162
 
1170
		// on inclut les identifiants déjà trouvé par les critères de métadonnées
1163
		// on inclut les identifiants déjà trouvé par les critères de métadonnées
1171
		if(is_array($id_a_inclure) && count($id_a_inclure) != 0) {
1164
		if(is_array($id_a_inclure) && count($id_a_inclure) != 0) {
1172
 
1165
 
1173
			$id_inclus = implode(',',$id_a_inclure);
1166
			$id_inclus = implode(',',$id_a_inclure);
1174
 
1167
 
1175
			$requete_conditions_inscrits .= $champs_mappage[0]['champ_id'].' IN '.
1168
			$requete_conditions_inscrits .= $champs_mappage[0]['champ_id'].' IN '.
1176
			'('.$id_inclus.')'.$separateur ;
1169
			'('.$id_inclus.')'.$separateur ;
1177
		}
1170
		}
1178
 
1171
 
1179
		// si le champ contient un % alors on ne cherche pas une valeur exacte : on utilise LIKE
1172
		// si le champ contient un % alors on ne cherche pas une valeur exacte : on utilise LIKE
1180
		foreach($valeurs as $champ => $valeur) {
1173
		foreach($valeurs as $champ => $valeur) {
1181
			if(trim($valeur) != '') {
1174
			if(trim($valeur) != '') {
1182
 
1175
 
1183
				if($champ == $champs_mappage[0]['champ_nom'] || $champ == $champs_mappage[0]['champ_code_postal']) {
1176
				if($champ == $champs_mappage[0]['champ_nom'] || $champ == $champs_mappage[0]['champ_code_postal']) {
1184
					if(strpos($valeur,"%") === false) {
1177
					if(strpos($valeur,"%") === false) {
1185
						$valeur .= '%';
1178
						$valeur .= '%';
1186
					}
1179
					}
1187
				}
1180
				}
1188
 
1181
 
1189
				if($champ == $champs_mappage[0]['champ_mail']) {
1182
				if($champ == $champs_mappage[0]['champ_mail']) {
1190
					if(strpos($valeur,"%") === false) {
1183
					if(strpos($valeur,"%") === false) {
1191
						$valeur = '%'.$valeur.'%';
1184
						$valeur = '%'.$valeur.'%';
1192
					}
1185
					}
1193
				}
1186
				}
1194
 
1187
 
1195
				if(strpos($valeur,"%") === false) {
1188
				if(strpos($valeur,"%") === false) {
1196
					$operateur = ' = ';
1189
					$operateur = ' = ';
1197
				} else {
1190
				} else {
1198
					$operateur = ' LIKE ';
1191
					$operateur = ' LIKE ';
1199
				}
1192
				}
1200
 
1193
 
1201
				$requete_conditions_inscrits .= $champ.$operateur.$this->proteger($valeur).$separateur;
1194
				$requete_conditions_inscrits .= $champ.$operateur.$this->proteger($valeur).$separateur;
1202
			}
1195
			}
1203
		}
1196
		}
1204
 
1197
 
1205
		$requete_conditions_inscrits = rtrim($requete_conditions_inscrits, $separateur);
1198
		$requete_conditions_inscrits = rtrim($requete_conditions_inscrits, $separateur);
1206
 
1199
 
1207
		$requete_recherche_inscrits .= $requete_conditions_inscrits;
1200
		$requete_recherche_inscrits .= $requete_conditions_inscrits;
1208
 
1201
 
1209
		$requete_nb_inscrits = 'SELECT COUNT( * ) as nb '.' FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'];
1202
		$requete_nb_inscrits = 'SELECT COUNT( * ) as nb '.' FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'];
1210
 
1203
 
1211
		if(trim($requete_conditions_inscrits) != '') {
1204
		if(trim($requete_conditions_inscrits) != '') {
1212
			$requete_nb_inscrits .= ' WHERE '.$requete_conditions_inscrits;
1205
			$requete_nb_inscrits .= ' WHERE '.$requete_conditions_inscrits;
1213
		}
1206
		}
1214
 
1207
 
1215
		$resultat_nb_inscrits = $this->requeteUn($requete_nb_inscrits);
1208
		$resultat_nb_inscrits = $this->requeteUn($requete_nb_inscrits);
1216
 
1209
 
1217
		$nb_inscrits = 0;
1210
		$nb_inscrits = 0;
1218
		if($resultat_nb_inscrits) {
1211
		if($resultat_nb_inscrits) {
1219
			$nb_inscrits = $resultat_nb_inscrits['nb'];
1212
			$nb_inscrits = $resultat_nb_inscrits['nb'];
1220
		}
1213
		}
1221
 
1214
 
1222
		$requete_recherche_inscrits .= ' ORDER BY '.$champs_mappage[0]['champ_nom'];
1215
		$requete_recherche_inscrits .= ' ORDER BY '.$champs_mappage[0]['champ_nom'];
1223
 
1216
 
1224
		if($taille_page != 0) {
1217
		if($taille_page != 0) {
1225
			$requete_recherche_inscrits .= ' LIMIT '.(($numero_page-1)*$taille_page).','.($taille_page);
1218
			$requete_recherche_inscrits .= ' LIMIT '.(($numero_page-1)*$taille_page).','.($taille_page);
1226
		}
1219
		}
1227
 
1220
 
1228
		$resultat_recherche_inscrits = $this->requeteTous($requete_recherche_inscrits);
1221
		$resultat_recherche_inscrits = $this->requeteTous($requete_recherche_inscrits);
1229
 
1222
 
1230
		if(!$resultat_recherche_inscrits) {
1223
		if(!$resultat_recherche_inscrits) {
1231
			$resultat_recherche_inscrits = array();
1224
			$resultat_recherche_inscrits = array();
1232
		}
1225
		}
1233
 
1226
 
1234
		return array('total' => $nb_inscrits, 'resultat' => $resultat_recherche_inscrits) ;
1227
		return array('total' => $nb_inscrits, 'resultat' => $resultat_recherche_inscrits) ;
1235
	}
1228
	}
1236
 
1229
 
1237
 
1230
 
1238
 
1231
 
1239
	public function rechercherDoublonsDansAnnuaireMappe($id_annuaire, $numero_page = 1, $taille_page = 50) {
1232
	public function rechercherDoublonsDansAnnuaireMappe($id_annuaire, $numero_page = 1, $taille_page = 50) {
1240
 
1233
 
1241
		$requete_informations_annuaire = 'SELECT aa_bdd, aa_table '.
1234
		$requete_informations_annuaire = 'SELECT aa_bdd, aa_table '.
1242
					'FROM  annu_annuaire '.
1235
					'FROM  annu_annuaire '.
1243
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
1236
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
1244
 
1237
 
1245
		$resultat_informations_annuaire = $this->requeteUn($requete_informations_annuaire);
1238
		$resultat_informations_annuaire = $this->requeteUn($requete_informations_annuaire);
1246
 
1239
 
1247
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
1240
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
1248
 
1241
 
1249
		$champ_id = $champs_mappage[0]['champ_id'];
1242
		$champ_id = $champs_mappage[0]['champ_id'];
1250
		$champ_mail = $champs_mappage[0]['champ_mail'];
1243
		$champ_mail = $champs_mappage[0]['champ_mail'];
1251
		$champ_nom = $champs_mappage[0]['champ_nom'];
1244
		$champ_nom = $champs_mappage[0]['champ_nom'];
1252
		$champ_prenom = $champs_mappage[0]['champ_prenom'];
1245
		$champ_prenom = $champs_mappage[0]['champ_prenom'];
1253
		$champ_ville = $champs_mappage[0]['champ_ville'];
1246
		$champ_ville = $champs_mappage[0]['champ_ville'];
1254
 
1247
 
1255
		$requete_recherche_doublon = 'SELECT DISTINCT t2.'.$champ_id.
1248
		$requete_recherche_doublon = 'SELECT DISTINCT t2.'.$champ_id.
1256
									' FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].' t1 '.
1249
									' FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].' t1 '.
1257
									'LEFT JOIN '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].' t2 '.
1250
									'LEFT JOIN '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].' t2 '.
1258
									'USING ('.$champ_nom.','.$champ_prenom.','.$champ_ville.') '.
1251
									'USING ('.$champ_nom.','.$champ_prenom.','.$champ_ville.') '.
1259
									'WHERE t1.'.$champ_id.' != t2.'.$champ_id.' '.
1252
									'WHERE t1.'.$champ_id.' != t2.'.$champ_id.' '.
1260
									'ORDER BY '.$champ_nom.', '.$champ_prenom.' ';
1253
									'ORDER BY '.$champ_nom.', '.$champ_prenom.' ';
1261
 
1254
 
1262
 
1255
 
1263
 
1256
 
1264
		$requete_nb_doublons = 'SELECT COUNT(DISTINCT t2.'.$champs_mappage[0]['champ_id'].') as nb'.
1257
		$requete_nb_doublons = 'SELECT COUNT(DISTINCT t2.'.$champs_mappage[0]['champ_id'].') as nb'.
1265
									' FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].' t1 '.
1258
									' FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].' t1 '.
1266
									'LEFT JOIN '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].' t2 '.
1259
									'LEFT JOIN '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].' t2 '.
1267
									'USING ('.$champ_nom.','.$champ_prenom.','.$champ_ville.') '.
1260
									'USING ('.$champ_nom.','.$champ_prenom.','.$champ_ville.') '.
1268
									'WHERE t1.'.$champ_id.' != t2.'.$champ_id;
1261
									'WHERE t1.'.$champ_id.' != t2.'.$champ_id;
1269
 
1262
 
1270
		$resultat_nb_doublons = $this->requeteUn($requete_nb_doublons);
1263
		$resultat_nb_doublons = $this->requeteUn($requete_nb_doublons);
1271
 
1264
 
1272
		$nb_doublons = 0;
1265
		$nb_doublons = 0;
1273
		if($resultat_nb_doublons) {
1266
		if($resultat_nb_doublons) {
1274
			$nb_doublons = $resultat_nb_doublons['nb'];
1267
			$nb_doublons = $resultat_nb_doublons['nb'];
1275
		}
1268
		}
1276
 
1269
 
1277
		$resultat_recherche_doublons = $this->requeteTous($requete_recherche_doublon);
1270
		$resultat_recherche_doublons = $this->requeteTous($requete_recherche_doublon);
1278
 
1271
 
1279
		if(!$resultat_recherche_doublons) {
1272
		if(!$resultat_recherche_doublons) {
1280
			$resultat_recherche_doublons = array();
1273
			$resultat_recherche_doublons = array();
1281
		} else {
1274
		} else {
1282
			if($taille_page != 0) {
1275
			if($taille_page != 0) {
1283
				$resultat_recherche_doublons = array_slice($resultat_recherche_doublons,($numero_page-1)*$taille_page,$taille_page);
1276
				$resultat_recherche_doublons = array_slice($resultat_recherche_doublons,($numero_page-1)*$taille_page,$taille_page);
1284
			}
1277
			}
1285
		}
1278
		}
1286
 
1279
 
1287
		return array('total' => $nb_doublons, 'resultat' => $resultat_recherche_doublons) ;
1280
		return array('total' => $nb_doublons, 'resultat' => $resultat_recherche_doublons) ;
1288
	}
1281
	}
1289
 
1282
 
1290
	/**
1283
	/**
1291
	 * Reinitialise un mot de passe associé à un mail donné et en renvoie un nouveau,
1284
	 * Reinitialise un mot de passe associé à un mail donné et en renvoie un nouveau,
1292
	 * généré aléatoirement
1285
	 * généré aléatoirement
1293
	 * @param int $id_annuaire l'identifiant de l'annuaire
1286
	 * @param int $id_annuaire l'identifiant de l'annuaire
1294
	 * @param string $mail le mail dont on doit réinitialiser le mot de passe
1287
	 * @param string $mail le mail dont on doit réinitialiser le mot de passe
1295
	 * @return string le nouveau mot de passe ou false si l'utilisateur n'existe pas
1288
	 * @return string le nouveau mot de passe ou false si l'utilisateur n'existe pas
1296
	 */
1289
	 */
1297
	public function reinitialiserMotDePasse($id_annuaire, $mail, $pass) {
1290
	public function reinitialiserMotDePasse($id_annuaire, $mail, $pass) {
1298
 
1291
 
1299
		$nouveau_mdp = $pass;
1292
		$nouveau_mdp = $pass;
1300
 
1293
 
1301
		$requete_informations_annuaire = 	'SELECT aa_bdd, aa_table '.
1294
		$requete_informations_annuaire = 	'SELECT aa_bdd, aa_table '.
1302
					'FROM  annu_annuaire '.
1295
					'FROM  annu_annuaire '.
1303
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
1296
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
1304
		$resultat_informations_annuaire = $this->requeteUn($requete_informations_annuaire);
1297
		$resultat_informations_annuaire = $this->requeteUn($requete_informations_annuaire);
1305
 
1298
 
1306
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
1299
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
1307
 
1300
 
1308
		$requete_modification_mdp = 'UPDATE '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].
1301
		$requete_modification_mdp = 'UPDATE '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].
1309
				' SET '.$champs_mappage[0]['champ_pass'].' = '.$this->proteger($nouveau_mdp).
1302
				' SET '.$champs_mappage[0]['champ_pass'].' = '.$this->proteger($nouveau_mdp).
1310
				' WHERE '.$champs_mappage[0]['champ_mail'].' = '.$this->proteger($mail);
1303
				' WHERE '.$champs_mappage[0]['champ_mail'].' = '.$this->proteger($mail);
1311
 
1304
 
1312
		$resultat_modification_mdp = $this->requete($requete_modification_mdp);
1305
		$resultat_modification_mdp = $this->requete($requete_modification_mdp);
1313
 
1306
 
1314
		if($resultat_modification_mdp) {
1307
		if($resultat_modification_mdp) {
1315
			return $nouveau_mdp;
1308
			return $nouveau_mdp;
1316
		}
1309
		}
1317
 
1310
 
1318
		return false;
1311
		return false;
1319
	}
1312
	}
1320
 
1313
 
1321
}
1314
}
1322
?>
1315
?>