Subversion Repositories Applications.annuaire

Compare Revisions

Ignore whitespace Rev 80 → Rev 81

/trunk/modeles/AnnuaireModele.php
184,16 → 184,21
* @param int $id_annuaire l'identifiant de l'annuaire
* @return string l'identifiant du champ date inscription dans l'annuaire donné ou false s'il n'en existe pas
*/
/*public function obtenirChampDate($id_annuaire) {
public function obtenirChampDateEtValidite($id_annuaire) {
 
$requete_champs_avatar = 'SELECT * FROM annu_triples WHERE at_ce_annuaire = '.$this->proteger($id_annuaire).' '.
"AND at_action = 'champ_avatar'";
$requete_champs_date_validite = 'SELECT * FROM annu_triples WHERE at_ce_annuaire = '.$this->proteger($id_annuaire).' '.
"AND at_action IN ('champ_date_inscription', 'champ_date_desinscription', 'champ_validite_inscription')";
 
$champ_avatar = $resultat_champs_avatar['at_valeur'];
$resultat_champs_date_validite = $this->requeteTous($requete_champs_date_validite);
 
$champs_date_validite = array();
foreach ($resultat_champs_date_validite as $champ) {
$resultat_champs_date_validite[$champ['at_action']] = $champ['at_ressource'];
}
 
// TODO faire une interface de gestion des champs de mappage
return $champ_avatar ;
}*/
return $resultat_champs_date_validite ;
}
 
/**
* Charge tous les champs de description de l'annuaire
321,6 → 326,8
$tableau_mappage = $this->obtenirChampsCartographie($id_annuaire);
$champ_pays = $tableau_mappage['champ_pays'][0];
 
$ids_recherchees = array_map('strtoupper', $ids_recherchees);
 
$resultat_nombre_inscrits = array();
 
$requete_nombre_inscrits = 'SELECT '.$champ_pays.', COUNT(*) AS nbre '.
425,7 → 432,7
//echo $donnees ;
 
// FIXME: les accents sautent alors que l'encodage est le bon ! Pourquoi ?
$requete = 'INSERT INTO annu_inscription_temp '.
$requete = 'INSERT INTO annu_donnees_temp '.
'VALUES '.
'('.$identifiant.','.$donnees.', NOW())';
 
442,9 → 449,9
 
$identifiant = $this->proteger($identifiant);
 
$requete = 'SELECT * FROM annu_inscription_temp '.
$requete = 'SELECT * FROM annu_donnees_temp '.
'WHERE '.
'ait_id = '.$identifiant;
'adt_id = '.$identifiant;
 
$donnees_inscription = $this->requeteUn($requete);
 
465,9 → 472,9
 
$identifiant = $this->proteger($identifiant);
 
$requete = 'DELETE FROM annu_inscription_temp '.
$requete = 'DELETE FROM annu_donnees_temp '.
'WHERE '.
'ait_id = '.$identifiant;
'adt_id = '.$identifiant;
 
return $this->requete($requete);
 
498,8 → 505,24
 
$annuaire = $resultat;
 
$champs_date = $this->obtenirChampDateEtValidite($id_annuaire);
 
// si l'on fonctionne sur un modele de type champ inscription valide = 1
// puis valide = 0 lors de la desinscrption sans suppression
// on l'indique
if(isset($champs_date['champ_validite_inscription'])) {
$valeurs_mappees[$champs_date['champ_validite_inscription']] = '1';
}
 
$valeurs_prot = array_map(array($this,'proteger'),$valeurs_mappees);
 
// si on a défini un champ date d'inscription, on l'ajoute à la liste des champs insérer
// avec la valeur NOW
if(isset($champs_date['champ_date_inscription'])) {
$valeurs_mappees[$champs_date['champ_date_inscription']] = 'NOW()';
$valeurs_prot[$champs_date['champ_date_inscription']] = 'NOW()';
}
 
$valeurs = implode(',',$valeurs_prot);
$champs = implode(',',array_keys($valeurs_mappees));
 
509,6 → 532,8
 
$id_nouvel_enregistrement = false;
 
//Debug::printr($requete_insertion_annuaire);
 
//en cas d'erreur on renvoie false
//TODO: lever une exception
if(!$this->requete($requete_insertion_annuaire)) {
873,6 → 898,89
}
 
/**
* 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
* @param Array $champs_mappage les noms des champs que l'on veut récupérer
* @param string order_by le champ par lequel on ordonne les résultats
* @param limit la limite au nombre de résultats
* @return Array les informations demandées
*/
public function obtenirTableauValeursUtilisateurs($id_annuaire, $champs_mappage, $order_by = 'champ_id', $dir= 'DESC', $limit = '20') {
 
$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;
}
 
$champ_order_by = $champs_mappage[$order_by];
 
$champs_mappage_str = implode(',',$champs_mappage);
$id_utilisateur = $this->proteger($id_utilisateur);
 
$requete_selection_utilisateur = 'SELECT '.$champs_mappage_str.' '.
'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);
 
// en cas d'erreur on renvoie false
// TODO: lever une exception
if(!$resultat_selection_utilisateur) {
return false;
} else {
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
* @param Array $champs_mappage les noms des champs que l'on veut récupérer
* @param string order_by le champ par lequel on ordonne les résultats
* @param limit la limite au nombre de résultats
* @return Array les informations demandées
*/
public function obtenirTableauIdsUtilisateurs($id_annuaire, $champs_mappage, $order_by = 'champ_id', $dir= 'DESC', $limit = '20') {
 
$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;
}
 
$champ_order_by = $champs_mappage[$order_by];
 
$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);
 
// en cas d'erreur on renvoie false
// TODO: lever une exception
if(!$resultat_selection_utilisateur) {
return false;
} else {
return $resultat_selection_utilisateur;
}
}
 
/**
* Supprime une inscription dans une table annuaire
* @param int $id_annuaire l'identifiant de l'annuaire dans lequel on supprime les données
* @param int $id_utilisateur l'identifiant de l'utilisateur à supprimer
894,15 → 1002,45
return false;
}
 
$requete_suppression_utilisateur = 'DELETE FROM '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '.
'WHERE '.$champs_mappage[0]['champ_id'].' = '.$this->proteger($id_utilisateur);
//$supprimer_donnes = false;
$valeurs_mappees = array();
 
$champs_date = $this->obtenirChampDateEtValidite($id_annuaire);
 
// si on a défini un champ de validite d'inscription, on ne supprime pas l'enregistrement
// mais on remplace cette valeur par 0
/*if(isset($champs_date['champ_validite_inscription'])) {
$valeurs_mappees[$champs_date['champ_validite_inscription']] = '1';
$supprimer_donnees = true;
}
 
// si on a défini un champ date de desinscription, on met à jour avec la valeur NOW
// avec la valeur NOW
if(isset($champs_date['champ_date_desinscription'])) {
$valeurs_mappees[$champs_date['champ_date_desinscription']] = 'NOW()';
}*/
 
//if($supprimer_donnees) {
$requete_suppression_utilisateur = 'DELETE FROM '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '.
'WHERE '.$champs_mappage[0]['champ_id'].' = '.$this->proteger($id_utilisateur);
 
/*} else {
 
$champs_valeurs = '';
foreach($valeurs_mappees as $cle => $valeur) {
$champs_valeurs .= $cle.' = '.$valeur.', ';
}
 
$requete_suppression_utilisateur = 'UPDATE '.$resultat_infos_annuaire['aa_bdd'].'.'.$resultat_infos_annuaire['aa_table'].' '.
'SET '.$champs_valeurs.' '.
'WHERE '.$champs_mappage[0]['champ_id'].' = '.$this->proteger($id_utilisateur);
}*/
 
$resultat_suppression_utilisateur = $this->requeteUn($requete_suppression_utilisateur);
 
// en cas d'erreur on renvoie false
// TODO: lever une exception
if($this->utilisateurExisteParId($id_annuaire, $id_utilisateur, $champs_mappage)) {
 
return false;
}