89,53 → 89,6 |
return $tableau_mappage ; |
} |
|
public function obtenirChampsObligatoires($id_annuaire) { |
|
$tableau_mappage = array(); |
|
$requete_champs_obligatoire = 'SELECT * FROM annu_triples WHERE at_ce_annuaire = '.$this->proteger($id_annuaire).' '. |
"AND at_action = 'champ_obligatoire'"; |
|
$resultat_champs_obligatoire = $this->requeteTous($requete_champs_obligatoire); |
|
$tableau_mappage = array(); |
|
if(!$resultat_champs_obligatoire) { |
trigger_error('impossible de récupérer les champs de obligatoire de l\'annuaire '.$id_annuaire); |
} |
|
foreach ($resultat_champs_obligatoire as $champ) { |
// le tableau des champs obligatoires se présente sous la forme nom_champ_metadonnee => nom_champ_annuaire |
$tableau_obligatoire[$champ['at_valeur']] = $champ['at_ressource']; |
} |
|
// TODO faire une interface de gestion des champs de mappage |
return $tableau_obligatoire ; |
} |
|
/*public function obtenirChampAvatar($id_annuaire) { |
$tableau_mappage = array(); |
|
$requete_champs_obligatoire = 'SELECT * FROM annu_triples WHERE at_ce_annuaire = '.$this->proteger($id_annuaire).' '. |
"AND at_action = 'champ_avatar'"; |
|
$resultat_champs_obligatoire = $this->requeteUn($requete_champs_obligatoire); |
|
$tableau_mappage = array(); |
|
if(!$resultat_champs_obligatoire) { |
trigger_error('impossible de récupérer les champs de obligatoire de l\'annuaire '.$id_annuaire); |
} |
|
foreach ($resultat_champs_obligatoire as $champ) { |
// le tableau des champs obligatoires se présente sous la forme nom_champ_metadonnee => nom_champ_annuaire |
$tableau_obligatoire[$champ['at_valeur']] = $champ['at_ressource']; |
} |
|
// TODO faire une interface de gestion des champs de mappage |
return $tableau_obligatoire ; |
}*/ |
|
/** Charge le nombre d'inscrits d'une table annuaire mappée |
* @param int $identifiant l'identifiant de l'annuaire mappé |
* |
207,50 → 160,6 |
return $resultat_nombre_inscrits; |
} |
|
public function chargerNombreAnnuaireListeInscritsParPays($id_annuaire, $ids_recherchees) { |
|
$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); |
|
if(!$resultat_informations_annuaire) { |
trigger_error('impossible de récupérer les informations de la table '.$id_annuaire); |
} |
|
$tableau_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire); |
$champ_pays = 'U_COUNTRY'; |
|
$resultat_nombre_inscrits = array(); |
|
$requete_nombre_inscrits = 'SELECT '.$champ_pays.', COUNT(*) AS nbre '. |
'FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].' '. |
' WHERE '.$champ_pays.' IN '. |
'('.implode(',',$ids_recherchees).') '. |
'GROUP BY '.$champ_pays.' '. |
'ORDER BY '.$champ_pays.' ASC '; |
|
// Récupération des résultats |
try { |
$donnees = $this->requeteTous($requete_nombre_inscrits); |
if ($donnees === false) { |
$this->messages[] = "La requête n'a retourné aucun résultat."; |
} else { |
foreach ($donnees as $donnee) { |
$resultat_nombre_inscrits[$donnee[$champ_pays]] = $donnee['nbre']; |
} |
} |
} catch (Exception $e) { |
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage()); |
} |
|
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']); |
} |
|
return $resultat_nombre_inscrits; |
} |
|
public function rechercherInscritDansAnnuaireMappeParChamp($id_annuaire, $champ_critere, $valeur, $modele = false) { |
|
$sep = ''; |
361,9 → 270,9 |
'WHERE '. |
'ait_id = '.$identifiant; |
|
return $this->requete($requete); |
//return $this->requete($requete); |
|
//return true; |
return true; |
} |
|
/** |
507,51 → 416,6 |
|
} |
|
public function obtenirMailParTableauId($id_annuaire, $tableau_ids_utilisateurs) { |
|
$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire); |
// on ne garde que les champs de mappage correspondant au champ de l'annuaire principal |
$champs_mappage = $champs_mappage[0]; |
|
$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; |
} |
|
$champs_mappage_str = implode(',',$champs_mappage); |
|
$tableau_ids_utilisateurs_p = array_map(array($this, 'proteger'), $tableau_ids_utilisateurs); |
$str_ids_utilisateurs = implode(',',$tableau_ids_utilisateurs_p); |
|
$requete_selection_utilisateurs = 'SELECT '.$champs_mappage['champ_mail'].' '. |
'FROM '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '. |
'WHERE '.$champs_mappage['champ_id'].' IN ('.$str_ids_utilisateurs.')'; |
|
$resultat_selection_utilisateurs = $this->requeteTous($requete_selection_utilisateurs); |
|
$resultat_utilisateurs = array(); |
|
foreach($resultat_selection_utilisateurs as $utilisateur) { |
$resultat_utilisateurs[] = $utilisateur[$champs_mappage['champ_mail']]; |
} |
|
// en cas d'erreur on renvoie false |
// TODO: lever une exception |
if(!$resultat_selection_utilisateurs) { |
return false; |
} else { |
return $resultat_utilisateurs; |
} |
|
} |
|
public function obtenirIdParMail($id_annuaire, $mail_utilisateur) { |
|
$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire); |
571,6 → 435,7 |
} |
|
$champs_mappage_str = implode(',',$champs_mappage); |
$id_utilisateur = $this->proteger($id_utilisateur); |
|
$requete_selection_utilisateur = 'SELECT '.$champs_mappage['champ_id'].' '. |
'FROM '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '. |
737,7 → 602,7 |
* @param array $id_a_inclure un tableau d'identifiants à inclure (pour chainer des recherches) |
* @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) { |
public function rechercherInscritDansAnnuaireMappe($id_annuaire, $valeurs, $id_a_inclure = array(), $exclusive = true) { |
|
// Si la fonction est appelée et que tous les critères sont vides |
if(count($valeurs) == 0 && count($id_a_inclure) == 0) { |
756,8 → 621,6 |
|
$champs_mappage = $this->obtenirChampsMappageAnnuaire($id_annuaire); |
|
$requete_conditions_inscrits = ''; |
|
if($exclusive) { |
$separateur = ' AND '; |
} else { |
768,7 → 631,7 |
|
$id_inclus = implode(',',$id_a_inclure); |
|
$requete_conditions_inscrits .= $champs_mappage[0]['champ_id'].' IN '. |
$requete_recherche_inscrits .= $champs_mappage[0]['champ_id'].' IN '. |
'('.$id_inclus.')'.$separateur ; |
} |
|
779,24 → 642,12 |
} else { |
$operateur = ' = '; |
} |
$requete_conditions_inscrits .= $champ.$operateur.$this->proteger($valeur).$separateur; |
$requete_recherche_inscrits .= $champ.$operateur.$this->proteger($valeur).$separateur; |
} |
} |
|
$requete_conditions_inscrits = rtrim($requete_conditions_inscrits, $separateur); |
$requete_recherche_inscrits = rtrim($requete_recherche_inscrits,$separateur); |
|
$requete_recherche_inscrits .= $requete_conditions_inscrits; |
|
$requete_nb_inscrits = 'SELECT COUNT( * ) as nb '.' FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table']. |
' WHERE '.$requete_conditions_inscrits; |
|
$resultat_nb_inscrits = $this->requeteUn($requete_nb_inscrits); |
$nb_inscrits = 0; |
if($resultat_nb_inscrits) { |
$nb_inscrits = $resultat_nb_inscrits['nb']; |
} |
|
$requete_recherche_inscrits .= ' LIMIT '.(($numero_page-1)*$taille_page).','.($taille_page); |
$resultat_recherche_inscrits = $this->requeteTous($requete_recherche_inscrits); |
|
if(!$resultat_recherche_inscrits) { |
803,7 → 654,7 |
$resultat_recherche_inscrits = array(); |
} |
|
return array('total' => $nb_inscrits, 'resultat' => $resultat_recherche_inscrits) ; |
return $resultat_recherche_inscrits ; |
} |
|
public function reinitialiserMotDePasse($id_annuaire, $mail) { |