les groupes [Réglé]
ajouter quelqu'un à un groupe
Créations de Modules
mkl Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre mkl
- Inscrit le : 24/12/2007
j'utilise la classe group dans mes modules additionels,
j'ai regardé dans la class Groups, et je ne trouve pas de fonction permettant d'ajouter un utilisateur à un groupe.
J'ai aussi regardé dans la base de données, et j'ai remarqué que dans la table group, chaque ligne (représentant un groupe) contient un champs ou il y a tous les membres du groupe (séparé par un |). Et dans la tables member, chaque ligne (représentant un membre) contient un champ correspondant à tous les groupes ou appartient le membre.
Ca me parait bizarre qu'il y ait deux fois la même information dans la table, mais bon il doit bien y avoir une raison...
Ma question était : existe t'il déjà des fonction (ou des bouts de code à réutilier) permettant de gérer l'insertion et la supression de membre dans un groupe ou faut il que je le programme moi même en jonglant avec les deux tables mentionnées ci dessus ?
MKL
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
Pourquoi veux-tu ajouter des membres à un groupe, l'interface de l'administration ne suffit-elle pas ?
Sinon dans la base de données il y a une redondance d'informations, ce n'est pas forcément politiquement correct mais ça permet un gain assez conséquent de temps et donc de performance.
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
CrowkaiT Membre non connecté
-
Modérateur
- Voir le profil du membre CrowkaiT
- Inscrit le : 17/06/2005
- Site internet
- Groupes :
-
Equipe Historique
Pas de support par messages privés! Pensez à mettre vos messages en réglé en cliquant sur le bouton réglé!
mkl Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre mkl
- Inscrit le : 24/12/2007
mkl Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre mkl
- Inscrit le : 24/12/2007
j'ai rajouté une variable à la classe :
[code=php]
var $user_id; // id du membre (utile pour les ajouts et suppressions de groupes)
[/code]
Ceci donc dans le constructeur :
[code=php]
global $session;
$this->user_id=$session->data['user_id'];
[/code]
Puis les deux nouvelles methodes :
[code=php]
//Ajout du membre au groupe
function add_member($idgroup)
{
$sql=new Sql;
//On insère le groupe au champ membre.
$user_groups_key = array_search($idgroup, explode('|', $this->user_groups));
if( !is_numeric($user_groups_key) ) //Le membre n'appartient pas déjà au groupe.
{
$sql->query_inject("UPDATE ".PREFIX."member SET user_groups = CONCAT(user_groups, '" . $idgroup . "|') WHERE user_id = '" . numeric($this->user_id) . "'", __LINE__, __FILE__);
}
//On insère le membre dans le groupe.
$members = $sql->query("SELECT members FROM ".PREFIX."group WHERE id = '" . $idgroup . "'", __LINE__, __FILE__);
$members_key = array_search($this->user_id, explode('|', $members));
if( !is_numeric($members_key) ) //Le membre n'appartient pas déjà au groupe.
{
$sql->query_inject("UPDATE ".PREFIX."group SET members = CONCAT(members, '" . $this->user_id . "|') WHERE id = '" . numeric($idgroup) . "'", __LINE__, __FILE__);
}
}
//Suppression le membre d'un groupe
function del_member($idgroup)
{
$sql=new Sql;
$user_groups_key = array_search($idgroup, $this->user_groups);
if( is_numeric($user_groups_key) ){ // le membre est bien dans le groupe
unset($this->user_groups[$user_groups_key]);
$user_groups_bis=$this->user_groups; // on travaille sur une autre varaible pour enlever le level
array_pop($this->user_groups); // on vire la dernière case qui est le level
$sql->query_inject("UPDATE ".PREFIX."member SET user_groups = '" . implode('|', $this->user_groups) . "' WHERE user_id = '" . $this->user_id . "'", __LINE__, __FILE__);
}
$members_group = $sql->query("SELECT members FROM ".PREFIX."group WHERE id = '" . $idgroup . "'", __LINE__, __FILE__);
$members_group = explode('|', $members_group);
$members_group_key = array_search($this->user_id, $members_group);
if( is_numeric($members_group_key) ){ // le membre est bien dans le groupe
unset($members_group[$members_group_key]);
$sql->query_inject("UPDATE ".PREFIX."group SET members = '" . implode('|', $members_group) . "' WHERE id = '" . $idgroup . "'", __LINE__, __FILE__);
}
}
[/code]
J'obtient tout de même le warning suivant quand je lance la methode add_member('1') :
Notice: Array to string conversion in /home/a/aumoinscher.eu/public_html/phpboost/includes/groups.class.php on line 58
ligne 58 : $user_groups_key = array_search($idgroup, explode('|', $this->user_groups));
mkl Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre mkl
- Inscrit le : 24/12/2007
MKL
CrowkaiT Membre non connecté
-
Modérateur
- Voir le profil du membre CrowkaiT
- Inscrit le : 17/06/2005
- Site internet
- Groupes :
-
Equipe Historique
Pour ta question il faut régénérer la cache
[code=php]$cache->generate_file('groups');[/code]
Pas de support par messages privés! Pensez à mettre vos messages en réglé en cliquant sur le bouton réglé!
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie