Subversion Repositories Applications.annuaire

Compare Revisions

Ignore whitespace Rev 250 → Rev 251

/trunk/modeles/AnnuaireModele.php
294,11 → 294,11
/** Charge le nombre d'inscrits d'une table annuaire mappée en les groupant par pays
* @param int $identifiant l'identifiant de l'annuaire mappé
* @param array $id_recherchees un tableau contenant les codes de pays à rechercher
* @return array un tableau indexé par les numéros de departement contenant le nombre d'inscrits à chacun
* @return array un tableau indexé par les numéros de pays contenant le nombre d'inscrits à chacun
*
*/
public function chargerNombreAnnuaireListeInscritsParPays($id_annuaire, $ids_recherchees) {
 
$requete_informations_annuaire = 'SELECT aa_bdd, aa_table '.
'FROM annu_annuaire '.
'WHERE aa_id_annuaire = '.$id_annuaire.' ';
311,7 → 311,7
$tableau_mappage = $this->obtenirChampsCartographie($id_annuaire);
$champ_pays = $tableau_mappage['champ_pays'][0];
 
$ids_recherchees = array_map('strtoupper', $ids_recherchees);
//$ids_recherchees = array_map(array($this,'formaterAbreviationPaysPourRecherche'), $ids_recherchees);
 
$resultat_nombre_inscrits = array();
 
343,6 → 343,10
return $resultat_nombre_inscrits;
}
private function formaterAbreviationPaysPourRecherche($chaine) {
return $this->proteger(strtoupper($chaine));
}
/**
* Recherche selon une valeur d'un champ qui peut être une valeur approximative (avec des %) dans un champ d'annuaire donné
* @param int $id_annuaire l'identifiant de l'annuaire
902,7 → 906,45
}
}
public function obtenirNombreInscriptionsDansIntervalleDate($id_annuaire, $date_debut, $date_fin) {
$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
 
$requete_infos_annuaire = 'SELECT * '.
'FROM annu_annuaire '.
'WHERE aa_id_annuaire = '.$id_annuaire.' ';
 
$resultat_infos_annuaire = $this->requeteUn($requete_infos_annuaire);
 
// en cas d'erreur on renvoie false
// TODO: lever une exception
if(!$resultat_infos_annuaire) {
return false;
}
 
//$supprimer_donnes = false;
$valeurs_mappees = array();
 
$champs_date = $this->obtenirChampDateEtValidite($id_annuaire);
$date_inscription = $champs_date['champ_date_inscription'];
$requete_nb_inscrits_intervalle = 'SELECT COUNT(*) as nb '.
'FROM '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '.
'WHERE '.$date_inscription.' >= "'.date('Y-m-d H:i:s', $date_debut).'" '.
'AND '.$date_inscription.' < "'.date('Y-m-d H:i:s', $date_fin).'" ';
$resultat_nb_inscrits_intervalle = $this->requeteUn($requete_nb_inscrits_intervalle);
if(!$resultat_nb_inscrits_intervalle) {
return 0;
}
 
return $resultat_nb_inscrits_intervalle['nb'];
}
 
/**
* Supprime une inscription dans une table annuaire
1136,7 → 1178,58
 
return array('total' => $nb_inscrits, 'resultat' => $resultat_recherche_inscrits) ;
}
public function rechercherDoublonsDansAnnuaireMappe($id_annuaire, $numero_page = 1, $taille_page = 50) {
 
$requete_informations_annuaire = 'SELECT aa_bdd, aa_table '.
'FROM annu_annuaire '.
'WHERE aa_id_annuaire = '.$id_annuaire.' ';
 
$resultat_informations_annuaire = $this->requeteUn($requete_informations_annuaire);
$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
 
$champ_id = $champs_mappage[0]['champ_id'];
$champ_mail = $champs_mappage[0]['champ_mail'];
$champ_nom = $champs_mappage[0]['champ_nom'];
$champ_prenom = $champs_mappage[0]['champ_prenom'];
$champ_ville = $champs_mappage[0]['champ_ville'];
$requete_recherche_doublon = 'SELECT DISTINCT t2.'.$champ_id.
' FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].' t1 '.
'LEFT JOIN '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].' t2 '.
'USING ('.$champ_nom.','.$champ_prenom.','.$champ_ville.') '.
'WHERE t1.'.$champ_id.' != t2.'.$champ_id.' '.
'ORDER BY '.$champ_nom.', '.$champ_prenom.' ';
 
 
$requete_nb_doublons = 'SELECT COUNT(DISTINCT t2.'.$champs_mappage[0]['champ_id'].') as nb'.
' FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].' t1 '.
'LEFT JOIN '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].' t2 '.
'USING ('.$champ_nom.','.$champ_prenom.','.$champ_ville.') '.
'WHERE t1.'.$champ_id.' != t2.'.$champ_id;
$resultat_nb_doublons = $this->requeteUn($requete_nb_doublons);
 
$nb_doublons = 0;
if($resultat_nb_doublons) {
$nb_doublons = $resultat_nb_doublons['nb'];
}
$resultat_recherche_doublons = $this->requeteTous($requete_recherche_doublon);
if(!$resultat_recherche_doublons) {
$resultat_recherche_doublons = array();
} else {
if($taille_page != 0) {
$resultat_recherche_doublons = array_slice($resultat_recherche_doublons,($numero_page-1)*$taille_page,$taille_page);
}
}
 
return array('total' => $nb_doublons, 'resultat' => $resultat_recherche_doublons) ;
}
 
/**
* Reinitialise un mot de passe associé à un mail donné et en renvoie un nouveau,
* généré aléatoirement