Subversion Repositories Applications.annuaire

Compare Revisions

Ignore whitespace Rev 451 → Rev 452

/branches/v1.2-autel/modeles/AnnuaireModele.php
142,7 → 142,7
$tableau_carto[$champ['at_action']][1] = $champ['at_valeur'];
}
 
 
return $tableau_carto ;
}
 
166,7 → 166,7
 
$champ_avatar = $resultat_champs_avatar['at_valeur'];
 
 
return $champ_avatar ;
}
 
186,7 → 186,7
$resultat_champs_date_validite[$champ['at_action']] = $champ['at_ressource'];
}
 
 
return $resultat_champs_date_validite ;
}
 
216,12 → 216,12
 
return $tableau_mappage ;
}
 
/** Charge le nombre d'inscrits d'une table annuaire mappée
* @param int $identifiant l'identifiant de l'annuaire mappé
*/
public function chargerNombreAnnuaireListeInscrits($identifiant) {
 
$requete_informations_annuaire = 'SELECT aa_bdd, aa_table '.
'FROM annu_annuaire '.
'WHERE aa_id_annuaire = '.$identifiant.' ';
230,10 → 230,10
if(!$resultat_informations_annuaire) {
trigger_error('impossible de récupérer les informations de la table '.$identifiant);
}
 
$requete_nombre_inscrits = 'SELECT COUNT(*) as nb '.
'FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'];
 
// Récupération des résultats
try {
$resultat_nb_inscrits = $this->requeteUn($requete_nombre_inscrits);
245,8 → 245,8
} catch (Exception $e) {
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
}
return $nb_inscrits;
 
return $nb_inscrits;
}
 
/** Charge le nombre d'inscrits d'une table annuaire mappée en les groupant par départements
308,7 → 308,7
*
*/
public function chargerNombreAnnuaireListeInscritsParPays($id_annuaire, $ids_recherchees) {
 
$requete_informations_annuaire = 'SELECT aa_bdd, aa_table '.
'FROM annu_annuaire '.
'WHERE aa_id_annuaire = '.$id_annuaire.' ';
352,11 → 352,11
 
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
372,9 → 372,9
if($modele) {
$sep = '%';
}
 
foreach($criteres as $champ => $valeur) {
$criteres[$champ] = $valeur.$sep;
$criteres[$champ] = $valeur.$sep;
}
 
return $this->rechercherInscritDansAnnuaireMappe($id_annuaire, $criteres, array(), true, $numero_page, $taille_page);
395,9 → 395,9
'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);
408,7 → 408,7
}
 
$requete_recherche_inscrits = 'SELECT '.$champs_mappage[0]['champ_id'].' FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'];
 
if($taille_page != 0) {
$requete_recherche_inscrits .= ' LIMIT '.(($numero_page-1)*$taille_page).','.($taille_page);
}
751,10 → 751,10
}
 
}
 
/**
* Renvoie le nom et prénom associé au mail d'un utilisateur dans un annuaire donné
* @param int $id_annuair l'identifiant de l'annuaire
* @param int $id_annuaire l'identifiant de l'annuaire
* @param array $courriels un tableau de courriel d'utilisateur
* @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'.
*/
764,21 → 764,21
$mappage = $mappage[0];
 
$requete = 'SELECT * '.
'FROM annu_annuaire '.
'WHERE aa_id_annuaire = '.$id_annuaire.' ';
'FROM annu_annuaire '.
'WHERE aa_id_annuaire = '.$id_annuaire.' ';
 
$annuaire = $this->requeteUn($requete);
if (!$annuaire) {
return false;
}
 
foreach ($courriels as $id => $courriel) {
$courriels[$id] = $this->proteger($courriel);
}
 
$requete = 'SELECT '.$mappage['champ_id'].', '.$mappage['champ_mail'].', '.$mappage['champ_prenom'].', '.$mappage['champ_nom'].' '.
'FROM '.$annuaire['aa_bdd'].'.'.$annuaire['aa_table'].' '.
'WHERE '.$mappage['champ_mail'].' IN ('.implode(',', $courriels).')';
'FROM '.$annuaire['aa_bdd'].'.'.$annuaire['aa_table'].' '.
'WHERE '.$mappage['champ_mail'].' IN ('.implode(',', $courriels).')';
$resultats = $this->requeteTous($requete);
 
if (!$resultats) {
789,7 → 789,7
$id = $resultat[$mappage['champ_id']];
$prenom = AppControleur::formaterMotPremiereLettreChaqueMotEnMajuscule($resultat[$mappage['champ_prenom']]);
$nom = AppControleur::formaterMotEnMajuscule($resultat[$mappage['champ_nom']]);
 
$infos[$resultat[$mappage['champ_mail']]] = array('id' => $id, 'prenom' => $prenom, 'nom' => $nom);
}
return $infos;
797,6 → 797,42
 
}
 
/**
* Renvoie les infos pour un utilisateur et un annuaire donné
* @param int $id_annuaire l'identifiant de l'annuaire
* @param array $id identifiant d'utilisateur
* @return array un tableau.
*/
public function obtenirInfosUtilisateurParId($id_annuaire, $id_utilisateur) {
$requete = 'SELECT * '.
'FROM annu_annuaire '.
'WHERE aa_id_annuaire = '.$id_annuaire.' ';
 
$annuaire = $this->requeteUn($requete);
if (!$annuaire) {
return false;
}
 
$mappageInfos = $this->obtenirChampsMappageAnnuaire($id_annuaire, $id_utilisateur);
// on ne garde que les champs de mappage correspondant au champ de l'annuaire principal
$mappage = $mappageInfos[0];
$requete = 'SELECT '.$mappage['champ_id'].', '.$mappage['champ_mail'].', '.$mappage['champ_prenom'].', '.$mappage['champ_nom'].' '.
'FROM '.$annuaire['aa_bdd'].'.'.$annuaire['aa_table'].' '.
'WHERE '.$mappage['champ_id'].' = '.$id_utilisateur.' ';
$resultat = $this->requeteUn($requete);
 
$infos = false;
if ($resultat) {
$id = $resultat[$mappage['champ_id']];
$prenom = AppControleur::formaterMotPremiereLettreChaqueMotEnMajuscule($resultat[$mappage['champ_prenom']]);
$nom = AppControleur::formaterMotEnMajuscule($resultat[$mappage['champ_nom']]);
$courriel = $resultat[$mappage['champ_mail']];
 
$infos = array('id' => $id, 'prenom' => $prenom, 'nom' => $nom, 'courriel' => $courriel);
}
return $infos;
}
 
// TODO: commenter
public function comparerIdentifiantMotDePasse($id_annuaire, $id_utilisateur, $mot_de_passe) {
 
915,7 → 951,7
return $resultat_selection_utilisateur;
}
}
 
/**
* Récupère les valeurs utilisateur dans l'annuaire indiqué en les ordonnant par le champ demandé
* @param int $id_annuaire l'identifiant de l'annuaire dans lequel on va travailler
943,7 → 979,7
$requete_selection_utilisateur = 'SELECT '.$champs_mappage['champ_id'].' '.
'FROM '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '.
'ORDER BY '.$champ_order_by.' '.$dir.' LIMIT '.$limit;
 
$resultat_selection_utilisateur = $this->requeteTous($requete_selection_utilisateur);
 
 
954,9 → 990,9
return $resultat_selection_utilisateur;
}
}
 
public function obtenirNombreInscriptionsDansIntervalleDate($id_annuaire, $date_debut, $date_fin) {
 
$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
 
$requete_infos_annuaire = 'SELECT * '.
975,26 → 1011,26
$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
* @param int $id_annuaire l'identifiant de l'annuaire dans lequel on supprime les données
1134,7 → 1170,7
* @param boolean $exclusive indique si l'on recherche effectue une recherche exclusive ou inclusive (AND, ou OR)
*/
public function rechercherInscritDansAnnuaireMappe($id_annuaire, $valeurs, $id_a_inclure = array(), $exclusive = true, $numero_page = 1, $taille_page = 50, $ordre = 'champ_nom') {
 
// Si la fonction est appelée et que tous les critères sont vides
if(count($valeurs) == 0 && count($id_a_inclure) == 0) {
// on sort directement
1146,7 → 1182,7
'WHERE aa_id_annuaire = '.$id_annuaire.' ';
 
$resultat_informations_annuaire = $this->requeteUn($requete_informations_annuaire);
 
$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire);
 
$requete_recherche_inscrits = 'SELECT '.$champs_mappage[0]['champ_id'].
1173,7 → 1209,7
// si le champ contient un % alors on ne cherche pas une valeur exacte : on utilise LIKE
foreach($valeurs as $champ => $valeur) {
if(trim($valeur) != '') {
 
if($champ == $champs_mappage[0]['champ_nom'] || $champ == $champs_mappage[0]['champ_prenom']) {
if(strpos($valeur,"%") === false) {
$valeur = '%' . $valeur.'%';
1189,13 → 1225,13
$valeur = '%'.$valeur.'%';
}
}
 
if(strpos($valeur,"%") === false) {
$operateur = ' = ';
} else {
$operateur = ' LIKE ';
}
 
$requete_conditions_inscrits .= $champ.$operateur.$this->proteger($valeur).$separateur;
}
}
1231,7 → 1267,7
 
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 '.
1239,7 → 1275,7
'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'];
1247,7 → 1283,7
$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 '.
1254,15 → 1290,15
'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;
1269,9 → 1305,9
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 {