Je vois pas trop d'ou ca vient, essaie de mettre cette fonction à la place :
[php]function droits($membre, $forum_m, $moderation, $droit_forum, $select = NULL)
{
global $bdd, $categorie_personne;
static $droits_groupe = NULL;
if ($GLOBALS['MOD']['groupes'] && $membre['membre_id'] != INVITE && $droits_groupe === NULL)
{
$sql = 'SELECT gd.* FROM ' . GROUPES_MEMBRES_TABLE . ' gm
LEFT JOIN ' . GROUPES_DROITS_TABLE . ' gd
ON gm.g_id = gd.g_id
WHERE gm.u_id = ' . $membre['membre_id'] . '
AND gm.gm_status <> ' . GROUPE_ATTENTE;
if (!$result = $bdd->requete($sql))
{
info($langue['er_titre'], sprintf($langue['er_select'], 'groupes_droits, groupes_membres'), __LINE__, __FILE__, $sql);
}
$droits_groupe = array();
while ($row = $bdd->tableau($result))
{
$droits_groupe[$row['f_id']] = $row;
}
$bdd->free($result);
}
//
// On récupère le niveau de droit du membre, donné par les clés du tableau:
// $categorie_personne = array('invite', 'membre', 'modo_forum', 'modo', 'modosup', 'admin');
//
$droits = array();
$droits['est_modo'] = FALSE;
if ($droits_groupe[$forum_m['forum_id']]['droit_modo'])
{
$droits['est_modo'] = TRUE;
}
else if ( $membre['membre_aut'] == MODO )
{
for ( $m = 0; $m < count($moderation); $m++ )
{
if ( $moderation[$m]['membre_id'] == $membre['membre_id'] && $moderation[$m]['forum_id'] == $forum_m['forum_id'] )
{
$droits['est_modo'] = TRUE;
break;
}
}
}
else if ( $membre['membre_aut'] > MODO )
{
$droits['est_modo'] = TRUE;
}
//
// En fonction des permissions du forum on renvoie ce que le membre a le droit et n'a pas le droit de faire.
// Dans les cas des droits d'édition et de suppresion, si le niveau est réglé sur membre
// ou invité, on lui donne le droit de toucher à ses propres messages.
// - Dark_Genova -
//
for ( $d = 0; $d < count($droit_forum); $d++ )
{
if (is_array($select) && !in_array($droit_forum[$d], $select))
{
continue;
}
if ( $membre['membre_aut'] == ADMIN )
{
$droits[$droit_forum[$d]] = TRUE;
}
else if ($GLOBALS['MOD']['groupes'] && $droits_groupe[$forum_m['forum_id']][$droit_forum[$d]])
{
if ($droit_forum[$d] == 'droit_editer' || $droit_forum[$d] == 'droit_supprimer')
{
$droits[$droit_forum[$d]] = FALSE;
if ($droits['est_modo'])
{
$droits[$droit_forum[$d]] = TRUE;
}
else
{
$droits['membre_' . substr($droit_forum[$d], 6)] = TRUE;
}
}
else
{
$droits[$droit_forum[$d]] = TRUE;
}
}
else
{
if (($droit_forum[$d] == 'droit_editer' || $droit_forum[$d] == 'droit_supprimer') && ($categorie_personne[$forum_m[$droit_forum[$d]]] == 'invite' || $categorie_personne[$forum_m[$droit_forum[$d]]] == 'membre') && $membre['membre_aut'] <= MODO && !$droits['est_modo'])
{
$droits[$droit_forum[$d]] = 0;
if ( $forum_m[$droit_forum[$d]] > $membre['membre_aut'] + 1 )
{
$droits['membre_' . substr($droit_forum[$d], 6)] = FALSE;
}
else
{
$droits['membre_' . substr($droit_forum[$d], 6)] = TRUE;
}
}
else
{
if ( ( $forum_m[$droit_forum[$d]] == 2 && ( $droits['est_modo'] || $membre['membre_aut'] > MODO ) ) || ( $forum_m[$droit_forum[$d]] == 3 && $membre['membre_aut'] > MEMBRE ) )
{
$droits[$droit_forum[$d]] = TRUE;
}
else if ( $forum_m[$droit_forum[$d]] == 0 || ( $forum_m[$droit_forum[$d]] == 1 && $membre['membre_aut'] >= MEMBRE && $membre['membre_id'] != INVITE ) || ( $forum_m[$droit_forum[$d]] == 4 && $membre['membre_aut'] >= MODOSUP ) )
{
$droits[$droit_forum[$d]] = TRUE;
}
else
{
$droits[$droit_forum[$d]] = FALSE;
}
}
}
}
return $droits;
}[/php]
Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors