Nouveau sujet Répondre Imprimer Syndication RSS 2.0

fonction droit dans fichier fonctions.php

Ajouter un type de personne entre invité et membre
Flamme ardente
Avatar de Shaigan
  • Age : 27 ans
  • Messages : 290
  • Inscrit : 11 Juin 2006
  Lien vers ce message 27 Mai 2009, 16:30
Voilà, j'ai bien trouvé comment ajouter le type de personne et le déclarer dans les différents fichiers qui listent les types, mais j'ai quand même un problème de compréhension avec la fonctions des droits...

J'ai bien lu le topic ouvert il y a quelques temps mais sans trop de succés.

Je veux pouvoir ajouter un type de membre "inférieur" (non, pas une jambe...) mais qui soit supérieur à l'invité puisqu'il peut se connecter. C'est un membre amoindri. En fait, dans la pratique, je veux pouvoir gérer deux types de membres sans qu'ils ne soient modos et grâce à l'administration, je donnerai moins de droits à MEMBREMIN qu'à MEMBRE.

La fonction droits est modifiée par le MOD Groupes mais je ne croies pas que ça joue beaucoup.

La partie qui me pose problème est la suivante (à la fin de la fonction) pour utiliser les droits définis dans l'administration :

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


Ici, je ne comprends pas ce qu'on fait... Que contiennent les $forum_m[$droit_forum[$d]] (pourquoi est-ce égal un coup à 2, un coup à 3, etc, que représentent ces valeurs ?)

Comment faire pour ajouter un rang entre invité et membre (la constante est MEMBREMIN), faut-il décaler les valeurs avant membre, modo, modosup et admin de +1 ?

J'ai bien évidemment décalé les valeurs des constantes dans le constantes.php et ajouté un type de personne dans variables_generales.php. MEMBRE se retrouve à 1 (alors qu'il était à 0) et MEMBREMIN se retrouve donc à 0 en remplacement de MEMBRE. Les types suivant sont décalés de 1.

Un p'tit peu d'explications ne seraient pas de refus.

Cordialement.


Shaigan & Cie | Mon garage | Play TrackMania
 
Equipe de support
Avatar de BlackJowy
  • Age : 3008 ans
  • Messages : 4038
  • Inscrit : 01 Mars 2007
  Lien vers ce message 27 Mai 2009, 19:34
Ca va passer pour de la pure condescendance mais tu cherches à faire une modification bien trop conséquente que même les plus aguerris hésiteraient à tenter, c'est trop sensible de jouer à décaler des choses de ce genre etc ...

Est-ce que tu peux vraiment pas faire autrement ? ^^
 
Flamme ardente
Avatar de Shaigan
  • Age : 27 ans
  • Messages : 290
  • Inscrit : 11 Juin 2006
Message édité 3 fois, dernière édition par Shaigan, 27 Mai 2009, 22:09     Lien vers ce message 27 Mai 2009, 21:29
xD non, je "veux" faire ça, raison de plus à m'y risquer si même les plus aguérris veulent pas y mettre les pieds.

J'ai pas besoin qu'on m'explique "comment" faire, mais juste "à quoi servent" les 1, 2, 3 et compagnie dans la fonction, et ce que représente la variable $forum_m[$droit_forum[$d]]

EDIT :

Non, en fait, c'est bon, j'ai pigé... J'ai compris que la variable $forum_m[$droit_forum[$d]] correspond à la valeur de la "catégorie de personne" +1 (puisqu'invité =-1) autorisée à faire telle ou telle action. On teste donc la valeur+1 par rapport à l'autorisation du membre telle que définie dans la table des membres ($membre['membre_aut']).

Ma fonction devient donc :
if ( ( $forum_m[$droit_forum[$d]] == 3 && ( $droits['est_modo'] || $membre['membre_aut'] > MODO ) ) || ( $forum_m[$droit_forum[$d]] == 3 && $membre['membre_aut'] > MEMBREMIN )  || ( $forum_m[$droit_forum[$d]] == 4 && $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'] >= MEMBREMIN && $membre['membre_id'] != INVITE ) || ( $forum_m[$droit_forum[$d]] == 2 && $membre['membre_aut'] >= MEMBRE && $membre['membre_id'] != INVITE ) || ( $forum_m[$droit_forum[$d]] == 5 && $membre['membre_aut'] >= MODOSUP ) )
{
  $droits[$droit_forum[$d]] = TRUE;
}
else
{
  $droits[$droit_forum[$d]] = FALSE;
}


Vous me dites, hein, si ça vous semble pas être ça :wink: .


Shaigan & Cie | Mon garage | Play TrackMania
 
Equipe de support
Avatar de Shekral
  • Age : 25 ans
  • Messages : 972
  • Inscrit : 25 Février 2006
  Lien vers ce message 03 Juin 2009, 16:37
J'ai vraiment plus du tout en tête le code de fsb 1 (j'ai d'ailleurs même plus celui de fsb 2...), mais je me rappelle avoir fait la même modif d'ajout d'une catégorie de membre.

Comme ça, je dirais que c'est correct. Après je sais vraiment pas si c'est le seul endroit où tu as des modifs à faire.
De toute façon, tu peux tester sur un forum vierge, t'ajoutes ton MEMBREMIN, crée les droits que tu veux pour chaque membre sur un forum et tu teste voir si t'as un comportement normal ou non pour chaque type de membre.


WikiFSB
 
Flamme ardente
Avatar de Shaigan
  • Age : 27 ans
  • Messages : 290
  • Inscrit : 11 Juin 2006
  Lien vers ce message 03 Juin 2009, 22:10
Bah depuis que j'ai posté, j'ai testé vite fait et mit en production sur un très faible population. Ca semble fonctionner et personne ne m'a remonté de problème de droits (les membres sont au courant qu'ils peuvent éventuellement avoir accès à des trucs "interdits").

Bref, il semble que ce soit une affaire qui roule.

Dans quelles conditions avais-tu dû ajouter une catégorie de membres ?


Shaigan & Cie | Mon garage | Play TrackMania
 
Répondre


.