Subversion Repositories Applications.annuaire

Rev

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

Rev 38 Rev 50
Line 87... Line 87...
87
		// TODO faire une interface de gestion des champs de mappage
87
		// TODO faire une interface de gestion des champs de mappage
Line 88... Line 88...
88
 
88
 
89
		return $tableau_mappage ;
89
		return $tableau_mappage ;
Line -... Line 90...
-
 
90
	}
-
 
91
 
-
 
92
	public function obtenirChampsObligatoires($id_annuaire) {
-
 
93
 
-
 
94
		$tableau_mappage = array();
-
 
95
 
-
 
96
		$requete_champs_obligatoire = 'SELECT * FROM annu_triples WHERE at_ce_annuaire = '.$this->proteger($id_annuaire).' '.
-
 
97
		"AND at_action = 'champ_obligatoire'";
-
 
98
 
-
 
99
		$resultat_champs_obligatoire = $this->requeteTous($requete_champs_obligatoire);
-
 
100
 
-
 
101
		$tableau_mappage = array();
-
 
102
 
-
 
103
		if(!$resultat_champs_obligatoire) {
-
 
104
			trigger_error('impossible de récupérer les champs de obligatoire de l\'annuaire '.$id_annuaire);
-
 
105
		}
-
 
106
 
-
 
107
		foreach ($resultat_champs_obligatoire as  $champ) {
-
 
108
			// le tableau des champs obligatoires se présente sous la forme nom_champ_metadonnee => nom_champ_annuaire
-
 
109
			$tableau_obligatoire[$champ['at_valeur']] = $champ['at_ressource'];
-
 
110
		}
-
 
111
 
-
 
112
		// TODO faire une interface de gestion des champs de mappage
-
 
113
		return $tableau_obligatoire ;
-
 
114
	}
-
 
115
 
-
 
116
	/*public function obtenirChampAvatar($id_annuaire) {
-
 
117
		$tableau_mappage = array();
-
 
118
 
-
 
119
		$requete_champs_obligatoire = 'SELECT * FROM annu_triples WHERE at_ce_annuaire = '.$this->proteger($id_annuaire).' '.
-
 
120
		"AND at_action = 'champ_avatar'";
-
 
121
 
-
 
122
		$resultat_champs_obligatoire = $this->requeteUn($requete_champs_obligatoire);
-
 
123
 
-
 
124
		$tableau_mappage = array();
-
 
125
 
-
 
126
		if(!$resultat_champs_obligatoire) {
-
 
127
			trigger_error('impossible de récupérer les champs de obligatoire de l\'annuaire '.$id_annuaire);
-
 
128
		}
-
 
129
 
-
 
130
		foreach ($resultat_champs_obligatoire as  $champ) {
-
 
131
			// le tableau des champs obligatoires se présente sous la forme nom_champ_metadonnee => nom_champ_annuaire
-
 
132
			$tableau_obligatoire[$champ['at_valeur']] = $champ['at_ressource'];
-
 
133
		}
-
 
134
 
-
 
135
		// TODO faire une interface de gestion des champs de mappage
-
 
136
		return $tableau_obligatoire ;
90
	}
137
	}*/
91
 
138
 
92
	/** Charge le nombre d'inscrits d'une table annuaire mappée
139
	/** Charge le nombre d'inscrits d'une table annuaire mappée
93
	 * @param int $identifiant l'identifiant de l'annuaire mappé
140
	 * @param int $identifiant l'identifiant de l'annuaire mappé
94
	 *
141
	 *
Line 158... Line 205...
158
		}
205
		}
Line 159... Line 206...
159
 
206
 
160
		return $resultat_nombre_inscrits;
207
		return $resultat_nombre_inscrits;
Line -... Line 208...
-
 
208
	}
-
 
209
 
-
 
210
	public function chargerNombreAnnuaireListeInscritsParPays($id_annuaire, $ids_recherchees) {
-
 
211
 
-
 
212
		$requete_informations_annuaire = 	'SELECT aa_bdd, aa_table '.
-
 
213
					'FROM  annu_annuaire '.
-
 
214
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
-
 
215
		$resultat_informations_annuaire = $this->requeteUn($requete_informations_annuaire);
-
 
216
 
-
 
217
		if(!$resultat_informations_annuaire) {
-
 
218
			trigger_error('impossible de récupérer les informations de la table '.$id_annuaire);
-
 
219
		}
-
 
220
 
-
 
221
		$tableau_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
-
 
222
		$champ_pays = 'U_COUNTRY';
-
 
223
 
-
 
224
		$resultat_nombre_inscrits = array();
-
 
225
 
-
 
226
		$requete_nombre_inscrits = 'SELECT '.$champ_pays.', COUNT(*) AS nbre '.
-
 
227
						'FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].' '.
-
 
228
						' WHERE '.$champ_pays.' IN '.
-
 
229
						'('.implode(',',$ids_recherchees).') '.
-
 
230
						'GROUP BY '.$champ_pays.' '.
-
 
231
						'ORDER BY '.$champ_pays.' ASC ';
-
 
232
 
-
 
233
		// Récupération des résultats
-
 
234
		try {
-
 
235
			$donnees = $this->requeteTous($requete_nombre_inscrits);
-
 
236
			if ($donnees === false) {
-
 
237
				$this->messages[] = "La requête n'a retourné aucun résultat.";
-
 
238
			} else {
-
 
239
				foreach ($donnees as $donnee) {
-
 
240
					$resultat_nombre_inscrits[$donnee[$champ_pays]] = $donnee['nbre'];
-
 
241
				}
-
 
242
			}
-
 
243
		} catch (Exception $e) {
-
 
244
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
-
 
245
		}
-
 
246
 
-
 
247
		if(!$resultat_informations_annuaire) {
-
 
248
			trigger_error('impossible de récupérer le nombre d\'inscrits de la table '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table']);
-
 
249
		}
-
 
250
 
-
 
251
		return $resultat_nombre_inscrits;
161
	}
252
	}
Line 162... Line 253...
162
 
253
 
Line 163... Line 254...
163
	public function rechercherInscritDansAnnuaireMappeParChamp($id_annuaire, $champ_critere, $valeur, $modele = false) {
254
	public function rechercherInscritDansAnnuaireMappeParChamp($id_annuaire, $champ_critere, $valeur, $modele = false) {
Line 268... Line 359...
268
 
359
 
269
		$requete = 	'DELETE FROM annu_inscription_temp '.
360
		$requete = 	'DELETE FROM annu_inscription_temp '.
270
					'WHERE '.
361
					'WHERE '.
Line 271... Line 362...
271
					'ait_id = '.$identifiant;
362
					'ait_id = '.$identifiant;
Line 272... Line 363...
272
 
363
 
273
		//return $this->requete($requete);
364
		return $this->requete($requete);
Line 274... Line 365...
274
 
365
 
275
		return true;
366
		//return true;
276
	}
367
	}
Line 414... Line 505...
414
			return $resultat_selection_utilisateur[$champs_mappage['champ_mail']];
505
			return $resultat_selection_utilisateur[$champs_mappage['champ_mail']];
415
		}
506
		}
Line 416... Line 507...
416
 
507
 
Line -... Line 508...
-
 
508
	}
-
 
509
 
-
 
510
	public function obtenirMailParTableauId($id_annuaire, $tableau_ids_utilisateurs) {
-
 
511
 
-
 
512
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
-
 
513
		// on ne garde que les champs de mappage correspondant au champ de l'annuaire principal
-
 
514
		$champs_mappage = $champs_mappage[0];
-
 
515
 
-
 
516
		$requete_infos_annuaire = 'SELECT * '.
-
 
517
					'FROM annu_annuaire '.
-
 
518
					'WHERE aa_id_annuaire = '.$id_annuaire.' ';
-
 
519
 
-
 
520
		$resultat_infos_annuaire = $this->requeteUn($requete_infos_annuaire);
-
 
521
 
-
 
522
		// en cas d'erreur on renvoie false
-
 
523
		// TODO: lever une exception
-
 
524
		if(!$resultat_infos_annuaire) {
-
 
525
			return false;
-
 
526
		}
-
 
527
 
-
 
528
		$champs_mappage_str = implode(',',$champs_mappage);
-
 
529
 
-
 
530
		$tableau_ids_utilisateurs_p = array_map(array($this, 'proteger'), $tableau_ids_utilisateurs);
-
 
531
		$str_ids_utilisateurs = implode(',',$tableau_ids_utilisateurs_p);
-
 
532
 
-
 
533
		$requete_selection_utilisateurs = 'SELECT '.$champs_mappage['champ_mail'].' '.
-
 
534
										 'FROM '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '.
-
 
535
										 'WHERE '.$champs_mappage['champ_id'].' IN ('.$str_ids_utilisateurs.')';
-
 
536
 
-
 
537
		$resultat_selection_utilisateurs = $this->requeteTous($requete_selection_utilisateurs);
-
 
538
 
-
 
539
		$resultat_utilisateurs = array();
-
 
540
 
-
 
541
		foreach($resultat_selection_utilisateurs as $utilisateur) {
-
 
542
			 $resultat_utilisateurs[] = $utilisateur[$champs_mappage['champ_mail']];
-
 
543
		}
-
 
544
 
-
 
545
		// en cas d'erreur on renvoie false
-
 
546
		// TODO: lever une exception
-
 
547
		if(!$resultat_selection_utilisateurs) {
-
 
548
			return false;
-
 
549
		} else {
-
 
550
			return $resultat_utilisateurs;
-
 
551
		}
-
 
552
 
417
	}
553
	}
Line 418... Line 554...
418
 
554
 
419
	public function obtenirIdParMail($id_annuaire, $mail_utilisateur) {
555
	public function obtenirIdParMail($id_annuaire, $mail_utilisateur) {
420
 
556
 
Line 433... Line 569...
433
		if(!$resultat_infos_annuaire) {
569
		if(!$resultat_infos_annuaire) {
434
			return false;
570
			return false;
435
		}
571
		}
Line 436... Line 572...
436
 
572
 
437
		$champs_mappage_str = implode(',',$champs_mappage);
-
 
Line 438... Line 573...
438
		$id_utilisateur = $this->proteger($id_utilisateur);
573
		$champs_mappage_str = implode(',',$champs_mappage);
439
 
574
 
440
		$requete_selection_utilisateur = 'SELECT '.$champs_mappage['champ_id'].' '.
575
		$requete_selection_utilisateur = 'SELECT '.$champs_mappage['champ_id'].' '.
Line 600... Line 735...
600
	 * @param int $id_annuaire identifiant de l'annuaire dans lequel on recherche
735
	 * @param int $id_annuaire identifiant de l'annuaire dans lequel on recherche
601
	 * @param array $valeurs un tableau de valeurs à rechercher
736
	 * @param array $valeurs un tableau de valeurs à rechercher
602
	 * @param array $id_a_inclure un tableau d'identifiants à inclure (pour chainer des recherches)
737
	 * @param array $id_a_inclure un tableau d'identifiants à inclure (pour chainer des recherches)
603
	 * @param boolean $exclusive indique si l'on recherche effectue une recherche exclusive ou inclusive (AND, ou OR)
738
	 * @param boolean $exclusive indique si l'on recherche effectue une recherche exclusive ou inclusive (AND, ou OR)
604
	 */
739
	 */
605
	public function rechercherInscritDansAnnuaireMappe($id_annuaire, $valeurs, $id_a_inclure = array(), $exclusive = true) {
740
	public function rechercherInscritDansAnnuaireMappe($id_annuaire, $valeurs, $id_a_inclure = array(), $exclusive = true, $numero_page = 1, $taille_page = 50) {
Line 606... Line 741...
606
 
741
 
607
		// Si la fonction est appelée et que tous les critères sont vides
742
		// Si la fonction est appelée et que tous les critères sont vides
608
		if(count($valeurs) == 0 && count($id_a_inclure) == 0) {
743
		if(count($valeurs) == 0 && count($id_a_inclure) == 0) {
609
			// on sort directement
744
			// on sort directement
Line 619... Line 754...
619
				' FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].
754
				' FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].
620
				' WHERE ';
755
				' WHERE ';
Line 621... Line 756...
621
 
756
 
Line -... Line 757...
-
 
757
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
-
 
758
 
622
		$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
759
		$requete_conditions_inscrits = '';
623
 
760
 
624
		if($exclusive) {
761
		if($exclusive) {
625
			$separateur = ' AND ';
762
			$separateur = ' AND ';
626
		} else {
763
		} else {
Line 627... Line 764...
627
			$separateur = ' OR ';
764
			$separateur = ' OR ';
Line 628... Line 765...
628
		}
765
		}
Line 629... Line 766...
629
 
766
 
630
		if(is_array($id_a_inclure) && count($id_a_inclure) != 0) {
767
		if(is_array($id_a_inclure) && count($id_a_inclure) != 0) {
631
 
768
 
Line 632... Line 769...
632
			$id_inclus = implode(',',$id_a_inclure);
769
			$id_inclus = implode(',',$id_a_inclure);
633
 
770
 
634
			$requete_recherche_inscrits	.= $champs_mappage[0]['champ_id'].' IN '.
771
			$requete_conditions_inscrits .= $champs_mappage[0]['champ_id'].' IN '.
635
			'('.$id_inclus.')'.$separateur ;
772
			'('.$id_inclus.')'.$separateur ;
636
		}
773
		}
637
 
774
 
638
		foreach($valeurs as $champ => $valeur) {
775
		foreach($valeurs as $champ => $valeur) {
639
			if(trim($valeur) != '') {
776
			if(trim($valeur) != '') {
640
				if(strpos($valeur,"%") != false) {
777
				if(strpos($valeur,"%") != false) {
641
					$operateur = ' LIKE ';
778
					$operateur = ' LIKE ';
Line 642... Line 779...
642
				} else {
779
				} else {
-
 
780
					$operateur = ' = ';
-
 
781
				}
-
 
782
				$requete_conditions_inscrits .= $champ.$operateur.$this->proteger($valeur).$separateur;
-
 
783
			}
-
 
784
		}
-
 
785
 
-
 
786
		$requete_conditions_inscrits = rtrim($requete_conditions_inscrits, $separateur);
-
 
787
 
-
 
788
		$requete_recherche_inscrits .= $requete_conditions_inscrits;
-
 
789
 
-
 
790
		$requete_nb_inscrits = 'SELECT COUNT( * ) as nb '.' FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].
Line -... Line 791...
-
 
791
				' WHERE '.$requete_conditions_inscrits;
643
					$operateur = ' = ';
792
 
Line 644... Line 793...
644
				}
793
		$resultat_nb_inscrits = $this->requeteUn($requete_nb_inscrits);
645
				$requete_recherche_inscrits .= $champ.$operateur.$this->proteger($valeur).$separateur;
794
		$nb_inscrits = 0;
646
			}
795
		if($resultat_nb_inscrits) {
Line 647... Line 796...
647
		}
796
			$nb_inscrits = $resultat_nb_inscrits['nb'];
648
 
797
		}
Line 649... Line 798...
649
		$requete_recherche_inscrits = rtrim($requete_recherche_inscrits,$separateur);
798
 
Line 650... Line 799...
650
 
799
		$requete_recherche_inscrits .= ' LIMIT '.(($numero_page-1)*$taille_page).','.($taille_page);