Un autre souci rencontré : la gestion des personnes bannies.
Un administrateur du tchat peut bannir un membre du tchat, et ensuite gérer cette liste de bannis depuis l'administration du site.
Mais par défaut, une erreur dans une requête empêche d'avoir la liste des bannis.
Il faut donc éditer le fichier /chat/admin/banlist.php
Et remplacer la ligne 30
$stmt = new Statement('SELECT * FROM '.$GLOBALS['fc_config']['db']['pref'].'bans where instance_id = ? ORDER BY userid LIMIT 1, 1' , 254 );
Par :
$stmt = new Statement('SELECT * FROM '.$GLOBALS['fc_config']['db']['pref'].'bans where instance_id = ? ORDER BY userid LIMIT 1' , 254 );
Vous aurez ainsi la liste des bannis, et la possibilité de les "dé-bannir".
Encore une modification : lorsque l'on fait un clic sur le pseudo d'un membre connecté, un menu déroulant nous propose des actions (à définir dans l'administration du site, en fonction du rôle du membre).
On y trouve notamment l'accès direct au profil d'un membre.
Par défaut, lorsqu'on clique sur notre propre pseudo, et qu'on choisit le profil, on arrive sur la page d'édition du profil.
J'ai changé ce comportement en modifiant le code suivant dans le fichier /chat/inc/cmses/xoops2016CMS.php
Vers la ligne 102
return (($id = $this->isLoggedIn()) && ($id == $userid))?"../edituser.php":"../userinfo.php?uid=$userid";
Remplacé par :
return (($id = $this->isLoggedIn()) && ($id == $userid))?"../userinfo.php?uid=$userid":"../userinfo.php?uid=$userid";
Pour info, dans l'administration du site, on peut désactiver le menu déroulant si l'on est sur notre propre pseudo (option
Disable user list self menu:)
Et une dernière modification : la gestion des administrateurs du tchat.
J'édite à nouveau le fichier /chat/inc/cmses/xoops2016CMS.php
L'attribution des fonctions se fait ligne 88 et 89.
if($user->getVar('rank') == 6) $u['roles'] = ROLE_MODERATOR;
if($user->isAdmin()) $u['roles'] = ROLE_ADMIN;
Une personne ayant le rang n°6 est ici déclarée comme modérateur, avec les droits adéquats (à paramétrer dans l'administration du tchat : Layout manager).
Une personne dans le groupe webmestres (sous xoops) est considéré comme administrateur du tchat (avec les droits à paramétrer également dans l'administration du tchat : Layout manager).
Mais personnellement, je préfère définir des personnes très précises pour être administrateur du tchat, sans qu'elles soient forcément administrateur/modérateur sur le site.
J'ai donc utilisé remplacé le code ci-dessus, par celui-ci :
$uidokadmin = array("77", "78", "85", "11211", "11646"); //indiquer ici les uid des membres qui seront administrateurs du tchat
if (in_array($userid, $uidokadmin)) {$u['roles'] = ROLE_ADMIN;}
$uidokmodo = array("12", "31", "154", "729"); //indiquer ici les uid des membres qui seront modérateurs du tchat
if (in_array($userid, $uidokmodo)) {$u['roles'] = ROLE_MODERATOR;}
De cette façon, les membres du site avec l'un des UID indiqués dans le tableau $uidokadmin seront administrateurs du tchat. (et ceux dans le tableau $uidokmodo seront modérateurs).
Comme vous le voyez, on peut ici, indiquer toutes sortes de conditions pour attribuer tel ou tel statut à un membre (sous réserver de coder ça).
Par exemple, on pourrait créer un groupe spécial sous xoops, qui contiendrait toutes les personnes que l'on souhaiter nommer administrateur (ou modérateur) du tchat, et modifier xoops2016CMS.php pour prendre en compte les membres contenus de ce groupe.
Ainsi, on pourrait facilement ajouter ou enlever un administrateur (ou modérateur) simplement en éditant le groupe à partir du site (au lieu de modifier manuellement les UID dans le fichier xoops2016CMS.php).
EDIT du 21/10/2008 à 16h50 : Voilà cette fonctionnalité est implémentée, voir le lien suivant pour le détail du code à utiliser !
https://www.frxoops.org/modules/newbb/ ... id=164632#forumpost164632