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; |
} |
|