Subversion Repositories Applications.annuaire

Compare Revisions

Ignore whitespace Rev 97 → Rev 98

/trunk/controleurs/AnnuaireControleur.php
101,21 → 101,44
* @param $id int l'identifiant de l'annuaire
* @return string la vue contenant les inscrits à l'annuaire
*/
public function chargerAnnuaireListeInscrits($id, $numero_page = 1, $taille_page = 50) {
public function chargerAnnuaireListeInscrits($id_annuaire, $numero_page = 1, $taille_page = 50) {
 
$this->chargerModele('AnnuaireModele');
$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire);
$data['erreurs'] = array();
$data['champs'] = $this->obtenirChampsMappageAnnuaire($id);
$total_inscrits = $this->AnnuaireModele->chargerNombreAnnuaireListeInscrits($id);
$data['annuaire'] = $this->AnnuaireModele->chargerAnnuaireListeInscrits($id, $data['champs'][0], $numero_page, $taille_page);
$tableau_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
$champ_id_annuaire = $tableau_mappage[0]['champ_id'];
 
$resultat_recherche = $this->AnnuaireModele->chargerAnnuaireListeInscrits($id_annuaire, $numero_page, $taille_page);
$nb_resultats = $resultat_recherche['total'];
$resultat_recherche = $resultat_recherche['resultat'];
$resultats = array();
foreach($resultat_recherche as $resultat) {
$id_utilisateur = $resultat[$champ_id_annuaire];
$resultats[$id_utilisateur] = $this->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur);
}
 
// on renvoie une liste identique à celle de la liste des inscrits
$donnees['resultats_recherche'] = $resultats;
$donnees['tableau_mappage'] = $tableau_mappage[1];
$donnees['id_annuaire'] = $id_annuaire;
$donnees['nb_resultats'] = $nb_resultats;
$url_pagination = new URL(Registre::getInstance()->get('base_url_application'));
$url_pagination->setVariableRequete('m','annuaire_inscrits');
$url_pagination->setVariableRequete('id_annuaire',$id);
 
$data['pagination'] = $this->paginer($numero_page,$taille_page,$total_inscrits,$url_pagination);
$data['pagination'] = $this->paginer($numero_page,$taille_page,$nb_resultats,$url_pagination);
 
$annuaires_inscrits = $this->getVue(Config::get('dossier_squelettes_annuaires').'annuaire_inscrits', $data);
// S'il existe une page de résultats spécifique à l'annuaire pour la recherche
if($this->templateExiste($annuaire['informations']['aa_code'].'_resultat_recherche', Config::get('dossier_squelettes_annuaires'))) {
// on l'affiche
$annuaires_inscrits = $this->getVue(Config::get('dossier_squelettes_annuaires').$annuaire['informations']['aa_code'].'_resultat_recherche', $donnees);
} else {
// sinon on prend celle par défaut
$annuaires_inscrits = $this->getVue(Config::get('dossier_squelettes_annuaires').'resultat_recherche', $donnees);
}
 
return $annuaires_inscrits;
}
/trunk/modeles/AnnuaireModele.php
229,33 → 229,6
return $tableau_mappage ;
}
 
/** Charge le nombre d'inscrits d'une table annuaire mappée
* @param int $identifiant l'identifiant de l'annuaire mappé
* @return int le nombre d'inscrits à un annuaire donné
*
*/
public function chargerNombreAnnuaireListeInscrits($identifiant) {
 
$requete_informations_annuaire = 'SELECT aa_bdd, aa_table '.
'FROM annu_annuaire '.
'WHERE aa_id_annuaire = '.$identifiant.' ';
$resultat_informations_annuaire = $this->requeteUn($requete_informations_annuaire);
 
if(!$resultat_informations_annuaire) {
trigger_error('impossible de récupérer les informations de la table '.$identifiant);
}
 
$requete_nombre_inscrits = 'SELECT COUNT(*) as nom_inscrits'.
' FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'];
 
if(!$resultat_informations_annuaire) {
trigger_error('impossible de récupérer le nombre d\'inscrits de la table '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table']);
}
 
$resultat_nombre_inscrits = $this->requeteUn($requete_nombre_inscrits);
return $resultat_nombre_inscrits['nom_inscrits'] ;
}
 
/** Charge le nombre d'inscrits d'une table annuaire mappée en les groupant par départements
* @param int $identifiant l'identifiant de l'annuaire mappé
* @return array un tableau indexé par les numéros de departement contenant le nombre d'inscrits à chacun
387,32 → 360,35
* @param int $taille_page la taille de la page demandée
*
*/
public function chargerAnnuaireListeInscrits($identifiant, $champs_mappage, $numero_page = 1, $taille_page = 50) {
public function chargerAnnuaireListeInscrits($id_annuaire, $numero_page = 1, $taille_page = 50) {
 
$requete = 'SELECT * '.
$requete_informations_annuaire = 'SELECT aa_bdd, aa_table '.
'FROM annu_annuaire '.
'WHERE aa_id_annuaire = '.$identifiant.' ';
$resultat = $this->requeteTous($requete);
$annuaire = array();
foreach ($resultat as $ligne) {
$annuaire['informations'] = $ligne;
'WHERE aa_id_annuaire = '.$id_annuaire.' ';
 
$resultat_informations_annuaire = $this->requeteUn($requete_informations_annuaire);
$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
$requete_nb_inscrits = 'SELECT COUNT( * ) as nb '.' FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'];
 
$resultat_nb_inscrits = $this->requeteUn($requete_nb_inscrits);
 
$nb_inscrits = 0;
if($resultat_nb_inscrits) {
$nb_inscrits = $resultat_nb_inscrits['nb'];
}
 
$annuaire['colonnes'] = $champs_mappage;
$requete_recherche_inscrits = 'SELECT '.$champs_mappage[0]['champ_id'].' FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'];
$requete_recherche_inscrits .= ' LIMIT '.(($numero_page-1)*$taille_page).','.($taille_page);
 
$string_champs_mappage = implode(",", $champs_mappage);
$resultat_recherche_inscrits = $this->requeteTous($requete_recherche_inscrits);
 
$requete = 'SELECT '.$champs_mappage['champ_id'].
' FROM '.$annuaire['informations']['aa_bdd'].'.'.$annuaire['informations']['aa_table'].
' ORDER BY '.$champs_mappage['champ_id'].
' LIMIT '.(($numero_page-1)*$taille_page).','.($taille_page);
 
$resultat = $this->requeteTous($requete);
foreach ($resultat as $colonne) {
$annuaire['inscrits'][] = $colonne;
if(!$resultat_recherche_inscrits) {
$resultat_recherche_inscrits = array();
}
 
return $annuaire;
return array('total' => $nb_inscrits, 'resultat' => $resultat_recherche_inscrits) ;
}
 
/**