Nouveau sujet Répondre Imprimer Syndication RSS 2.0

[SUPPORT]MOD groupes

Chef du projet FSB
Avatar de Genova
  • Age : 22 ans
  • Messages : 14256
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 20 Décembre 2005, 11:39

Reprise du dernier message

Poste ici le contentenu de ta fonction droits() dans includes/functions/fonctions.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
 
Hors ligne VBL
Nouvelle étincelle
Avatar de VBL
  • Messages : 17
  • Inscrit : 10 Décembre 2005
  Lien vers ce message 20 Décembre 2005, 12:11
Voila, voila.
J'étais justement en train d'étudier le code.

/************************************
* 	$membre :: 			Données du membre
* 	$forum_m :: 		Forum concerné
* 	$moderation ::		Tableau contenant les données des modérateurs des forums
*	$droit_forum ::		Tableau contenant les différents droits possibles
*	$select ::			Tableau contenant les autorisations souhaitées (afin d'optimiser l'algorithme)
************************************/
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');
	//
// Modification pour MOD groupes
//	$droits = array();
//	$droits['est_modo'] = FALSE;
//	if ( $membre['membre_aut'] == MODO )

	$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 )
// Fin modification pour MOD groupes
	{
		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;
		}
		// Modification Groupe
		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;
			}
		}
		// Fin modification Groupe
		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;
}
 
Chef du projet FSB
Avatar de Genova
  • Age : 22 ans
  • Messages : 14256
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 20 Décembre 2005, 12:27
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
 
Hors ligne VBL
Nouvelle étincelle
Avatar de VBL
  • Messages : 17
  • Inscrit : 10 Décembre 2005
  Lien vers ce message 20 Décembre 2005, 12:46
YESSS !!!!

Merci encore Genova :lol:
 
Chef du projet FSB
Avatar de Genova
  • Age : 22 ans
  • Messages : 14256
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 20 Décembre 2005, 12:56
Si ca marche c'est que dans ce cas tu avais mal installé le MOD


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
 
Hors ligne VBL
Nouvelle étincelle
Avatar de VBL
  • Messages : 17
  • Inscrit : 10 Décembre 2005
  Lien vers ce message 20 Décembre 2005, 13:17
Je vais comparer le script que tu m'as envoyé et celui que j'avais.
Je te tiens au courant.
 
Hors ligne VBL
Nouvelle étincelle
Avatar de VBL
  • Messages : 17
  • Inscrit : 10 Décembre 2005
  Lien vers ce message 20 Décembre 2005, 15:13
Trouvé aucune différence notable.

En revanche, je crois comprendre ce qui s'est passé.
J'ai installé et mis en oeuvre FSB dans un premier dossier. Ensuite, après les tests, j'ai à nouveau extrait les fichiers dans un second dossier pour transférer chez mon hébergeur, mais j'ai continué à travailler sur le permier.

J'ai donc du, lors du transfert du fonctions.php après installation du MOD, prendre celui du second dossier (original) au lieu de celui que j'avais modifié.
Je ne vois que ça... mais je ne peux plus vérifier, ayant supprimé entre-temps le dossier d'installation.

Mais l'important est que ça fonctionne :D
 
Flammeche
Avatar de david
  • Messages : 46
  • Inscrit : 20 Décembre 2005
  Lien vers ce message 20 Décembre 2005, 17:33
slt , jai un soucis avec ce mod

l erreur est la suivante
rreur SQL: 1146 Table 'db145953946.GROUPES_MEMBRES_TABLE' doesn't exist

Requête 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 = 1 AND gm.gm_status <> GROUPE_ATTENTE

Ligne: 92
Fichier: /homepages/44/d145844334/htdocs/fsb/includes/functions/fonctions.php


pourtant la table existe bien j ai virer puis reexucter les requetes meme probleme ... j ai aussi verif mon fichier fonction.php , si je fais la modif j ai l erreur si je le remet sans la modif j ai plus l erreur ....

merci de votre aide


je m'emporte pour ce qui m'importe ..
D.Balavoine
 
Chef du projet FSB
Avatar de Genova
  • Age : 22 ans
  • Messages : 14256
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 20 Décembre 2005, 17:51
Salut tu as oublié cette étape :
[php]#
# [] ---------- ouvrir ---------------------------------------------------------
#
includes/constantes.php

#
# [] ---------- chercher -------------------------------------------------------
#
?>

#
# [] ---------- avant, ajouter -------------------------------------------------
#
define('GROUPES_TABLE', $prefixe_tables . 'groupes');
define('GROUPES_MEMBRES_TABLE', $prefixe_tables . 'groupes_membres');
define('GROUPES_DROITS_TABLE', $prefixe_tables . 'groupes_droits');
define('GROUPE_MODO', 1);
define('GROUPE_NORMAL', 2);
define('GROUPE_ATTENTE', 3);[/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
 
Flammeche
Avatar de david
  • Messages : 46
  • Inscrit : 20 Décembre 2005
  Lien vers ce message 20 Décembre 2005, 18:33
non j ai verifié aussi ...


je m'emporte pour ce qui m'importe ..
D.Balavoine
 
Flammeche
Avatar de david
  • Messages : 46
  • Inscrit : 20 Décembre 2005
  Lien vers ce message 20 Décembre 2005, 18:47
ok j ai fais ca
Citation

//
// Les tables de la base de donnée
//
define('GROUPES_TABLE', $prefixe_tables . 'groupes');
define('GROUPES_MEMBRES_TABLE', $prefixe_tables . 'groupes_membres');
define('GROUPES_DROITS_TABLE', $prefixe_tables . 'groupes_droits');
define('GROUPE_MODO', 1);
define('GROUPE_NORMAL', 2);
define('GROUPE_ATTENTE', 3);

define('BANNIS_TABLE', $prefixe_tables . 'bannis');
define('CACHE_TABLE', $prefixe_tables . 'cache');
define('MEMBRES_TABLE', $prefixe_tables . 'membres');
define('MESSAGES_TABLE', $prefixe_tables . 'messages');
define('MESSAGES_LUS_TABLE', $prefixe_tables . 'messages_lus');
define('SESSIONS_TABLE', $prefixe_tables . 'sessions');
define('SUJETS_TABLE', $prefixe_tables . 'sujets');
?>

au lieu de ca

Citation
//
// Les tables de la base de donnée
//
define('BANNIS_TABLE', $prefixe_tables . 'bannis');
define('CACHE_TABLE', $prefixe_tables . 'cache');
define('MEMBRES_TABLE', $prefixe_tables . 'membres');
define('MESSAGES_TABLE', $prefixe_tables . 'messages');
define('MESSAGES_LUS_TABLE', $prefixe_tables . 'messages_lus');
define('SESSIONS_TABLE', $prefixe_tables . 'sessions');
define('SUJETS_TABLE', $prefixe_tables . 'sujets');
define('GROUPES_TABLE', $prefixe_tables . 'groupes');
define('GROUPES_MEMBRES_TABLE', $prefixe_tables . 'groupes_membres');
define('GROUPES_DROITS_TABLE', $prefixe_tables . 'groupes_droits');
define('GROUPE_MODO', 1);
define('GROUPE_NORMAL', 2);
define('GROUPE_ATTENTE', 3);

?>

et ca marche ;)

merci pour ton aide car tu m'as aiguillé sur ce coup 8)


je m'emporte pour ce qui m'importe ..
D.Balavoine
 
Equipe des MODS
Avatar de Korko
  • Age : 21 ans
  • Messages : 2611
  • Inscrit : 06 Octobre 2004
  Lien vers ce message 20 Décembre 2005, 22:13
C'est pas tres logique que sa change quelque chose mais bon si sa marche...


Dieu vous aime. Offre soumise à conditions
Je suis une Brute
 
Flammeche
Avatar de david
  • Messages : 46
  • Inscrit : 20 Décembre 2005
  Lien vers ce message 21 Décembre 2005, 11:05
je suis bien daccord avec toi , dailleur moi aussi lorsque j ai changé j y croyais pas trop et pourtant le resultat est la ....


je m'emporte pour ce qui m'importe ..
D.Balavoine
 
Brasier
Avatar de jaguar
  • Age : 24 ans
  • Messages : 978
  • Inscrit : 18 Septembre 2004
  Lien vers ce message 12 Janvier 2006, 18:14
Un pti bug avec le mod ! Install fait etape par etape, fonctione nikel. Mais le mail qui est envoyer a un membre pour avertir qu'il vient d'etre mis dans un groupe a un bug !

Le lien du mail contient deux fois http://http://www.domaine...etc !!!

Bizare ! x) je precise que dans
Citation
URL du forum:
Veuillez entrer l'URL de votre forum sans le / final, par exemple http://www.mon_site.com/forum
j'ai bien mis l'adresse comme il faut ! avec un seul "http://" Je pige pas !


http://www.isawearthlings.com/Images/468x60.gif
 
Brasier
Avatar de jaguar
  • Age : 24 ans
  • Messages : 978
  • Inscrit : 18 Septembre 2004
  Lien vers ce message 30 Janvier 2006, 12:45
Pti UP ! ^^ :rolleyes:


http://www.isawearthlings.com/Images/468x60.gif
 
Etoile
Avatar de Ghost Warrior
  • Age : 23 ans
  • Messages : 3535
  • Inscrit : 14 Novembre 2004
  Lien vers ce message 30 Janvier 2006, 14:06
Essai donc de mettre sans http:// :) on verra bien ;)


L'amour est aveugle, il faut donc toucher.

La mort est un état de non-existence. Ce qui n'est pas n'existe pas. Donc la mort n'existe pas.

Comment le vent sait-il dans quelle direction il doit souffler ?
 
Répondre


.