le code que tu cites la affiche la selection des groupes si tu as les droits d'admin, donc deja il faut effectivement modifier le code la.
global $xoopsUser;
$gperm_handler =& xoops_gethandler('groupperm');
//If user has admin rights on groups
if ($gperm_handler->checkRight("system_admin", XOOPS_SYSTEM_GROUP, $xoopsUser->getGroups(), 1)) {
//add group selection
$group_select = new XoopsFormSelectGroup(_US_GROUPS, 'groups', false, $groups, 5, true);
}
else {
//add empty variable
$group_select = new XoopsFormHidden('groups[]', XOOPS_GROUP_USERS);
}
deviendrait uniquement :
$group_select = new XoopsFormSelectGroup(_US_GROUPS, 'groups', false, $groups, 5, true);
Comme cela apparait la liste de modification des groupes en bas de la page d'edition des users.
Maintenant par contre dans cette liste apparait aussi le groupe webmestre.
La tu as plusieurs choix, soit creer une classe specifique pour l'affichage des groupes (et donc ne pas utiliser XoopsFormSelecGroup) soit modifier cette classe XoopsFormSelectGroup pour qu'elle ne donne pas le groupe webmestre.
Creer une nouvelle classe serait peut etre plus propre mais il faudrait aller modifier d'autre fichier pour la prendre en compte (c'est pas glop un petit probleme qu'il va bien faloir regler un jour ou l'autre sur la gestionde xoopsform)
Donc on va modifier la classe XoopsFormSelectGroup (sous class/xoopsform/formselectgroup.php) .
A la base elle est assez simple :
class XoopsFormSelectGroup extends XoopsFormSelect
{
/**
* Constructor
*
* @param string $caption
* @param string $name
* @param bool $include_anon Include group "anonymous"?
* @param mixed $value Pre-selected value (or array of them).
* @param int $size Number or rows. "1" makes a drop-down-list.
* @param bool $multiple Allow multiple selections?
*/
function XoopsFormSelectGroup($caption, $name, $include_anon=false, $value=null, $size=1, $multiple=false)
{
$this->XoopsFormSelect($caption, $name, $value, $size, $multiple);
$member_handler =& xoops_gethandler('member');
if (!$include_anon) {
$this->addOptionArray($member_handler->getGroupList(new Criteria('groupid', XOOPS_GROUP_ANONYMOUS, '!=')));
} else {
$this->addOptionArray($member_handler->getGroupList());
}
}
}
Elle herite de la classe XoopsFormSelect.
Elle fait juste un test pour savoir si elle doit afficher le group anonyme ou pas en fonction d'un boolean.
Il va falloir lui rajouter un test pour savoir si l'utilisateur est un admin ou pas et en fonction de cela lui rajouter une condition (criteria) supplementaire.
Pour savoir si c'est un admin ou pas on avait le code tout a l'heure :
global $xoopsUser;
$gperm_handler =& xoops_gethandler('groupperm');
//If user has admin rights on groups
if ($gperm_handler->checkRight("system_admin", XOOPS_SYSTEM_GROUP, $xoopsUser->getGroups(), 1))...
Donc il va juste falloir le reprendre.
Ensuite par contre pour rajouter une condition supplementaire si on en a besoin il va falloir rajouter un criteria ... et si en plus on a besoin du critere sur le group anonyme on aura besoin d'un criteria_compo
Le criteria pour le groupe admin
$criteria_admin = new Criteria('groupid', XOOPS_GROUP_ADMIN, '!=');
cela generera groupid != 1.
La ou ca se complique c'est si on a besoin aussi du test sur le groupe anonyme car la on sera oblige de passer par un criteria_compo avant
$criteria = new CriteriaCompo(new Criteria('groupid', XOOPS_GROUP_ANONYMOUS, '!='));
$criteria->add($criteria_admin);
Voila on doit tout avoir donc le code du coup deviendrait cela (attention j'ai pas teste)
class XoopsFormSelectGroup extends XoopsFormSelect
{
/**
* Constructor
*
* @param string $caption
* @param string $name
* @param bool $include_anon Include group "anonymous"?
* @param mixed $value Pre-selected value (or array of them).
* @param int $size Number or rows. "1" makes a drop-down-list.
* @param bool $multiple Allow multiple selections?
*/
function XoopsFormSelectGroup($caption, $name, $include_anon=false, $value=null, $size=1, $multiple=false)
{
global $xoopsUser;
$this->XoopsFormSelect($caption, $name, $value, $size, $multiple);
$member_handler =& xoops_gethandler('member');
$gperm_handler =& xoops_gethandler('groupperm');
$criteria_admin = null;
$criteria = null;
//If user has admin rights on groups
if ($gperm_handler->checkRight("system_admin", XOOPS_SYSTEM_GROUP, $xoopsUser->getGroups(), 1)) {
$criteria_admin = null;
}
else {
$criteria_admin = new Criteria('groupid', XOOPS_GROUP_ADMIN, '!=');
}
if (is_null($criteria_admin)){
if (!$include_anon) {
$criteria = new Criteria('groupid', XOOPS_GROUP_ANONYMOUS, '!=');
}
}
else {
if (!$include_anon) {
$criteria = new CriteriaCompo(new Criteria('groupid', XOOPS_GROUP_ANONYMOUS, '!='));
$criteria->add($criteria_admin);
}
$this->addOptionArray($member_handler->getGroupList($criteria));
}
}
et tu dois pas etre loin d'avoir ce que tu veux la (aux erreurs de compilation pret)