Für jeden Benutzer ein eigener Gruppeneintrag?

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
neuro
Mitglied
Beiträge: 22
Registriert: 18.05.2004 19:37

Für jeden Benutzer ein eigener Gruppeneintrag?

Beitrag von neuro »

Hallo,

warum bekommt eigentlich jeder normale Benutzer, der keiner bestimmten Gruppe angehört, einen eigenen Eintrag in phpbb_groups:

Code: Alles auswählen

INSERT INTO " . GROUPS_TABLE . " (group_name, group_description, group_single_user, group_moderator)
				VALUES ('', 'Personal User', 1, 0)

$group_id = $db->sql_nextid()

INSERT INTO " . USER_GROUP_TABLE . " (user_id, group_id, user_pending)
				VALUES ($user_id, $group_id, 0)
Wäre es nicht sinnvoller, wenn man dort einmal eine Gruppe "Personaluser" erstellt und allen normalen Benutzern diese Gruppe zuweist?

Was würde passieren, wenn man bei der Anmeldung einem Benutzer nur die Gruppe "Personaluser" zuweist, aber keinen eigenen Gruppeneintrag erstellt?

MfG. neuro
Benutzeravatar
QCO
Mitglied
Beiträge: 708
Registriert: 15.03.2003 12:30
Wohnort: Leipzig

Re: Für jeden Benutzer ein eigener Gruppeneintrag?

Beitrag von QCO »

neuro hat geschrieben:Was würde passieren, wenn man bei der Anmeldung einem Benutzer nur die Gruppe "Personaluser" zuweist, aber keinen eigenen Gruppeneintrag erstellt?
Du könntest für einzelne Nutzer keine Rechte mehr einstellen, nur noch für die Gruppe "Personaluser".
Man kann ja sowohl als einzelner Nutzer als auch als Gruppe Rechte haben.
Damit man bei der Verwaltung und Kontrolle usw. dieser Rechte nicht immer Nutzer und Gruppen betrachten muss (Performance!), werden einzelne Nutzer auch zu Gruppen gemacht.
adamo
Mitglied
Beiträge: 33
Registriert: 26.10.2004 18:56

Beitrag von adamo »

Da vermutlich keiner so irre ist, in einem großen Forum, dem User direkt Rechte zu geben, dient dieser Eintrag lediglich dem "Zumüllen" der DB und bremst ein Forum extrem aus, sofern man Userzahlen über 20k hat und stetig 50+ User online hat (Bei uns macht das (ca. 200 User über 11 Stunden stetig online) einige Sekunden in der Ladezeit aus, sofern beides gelöscht wird)

Eine der schönsten Optimierungselemente, da die gesamte angedachte Funktion absolut überflüssig ist. ;)
adamo
Mitglied
Beiträge: 33
Registriert: 26.10.2004 18:56

Beitrag von adamo »

Dabei fällt mir noch etwas ein:

Killt diesen Eintrag, soweit die Auflistung nicht benötigt wird.
Bei großen Foren eine absolute Spaßbremse.

Code: Alles auswählen


####### INDEX.PHP #########

	$sql = "SELECT aa.forum_id, u.user_id, u.username 
		FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g, " . USERS_TABLE . " u
		WHERE aa.auth_mod = " . TRUE . " 
			AND g.group_single_user = 1 
			AND ug.group_id = aa.group_id 
			AND g.group_id = aa.group_id 
			AND u.user_id = ug.user_id 
		GROUP BY u.user_id, u.username, aa.forum_id 
		ORDER BY aa.forum_id, u.user_id";
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not query forum moderator information', '', __LINE__, __FILE__, $sql);
	}

	$forum_moderators = array();
	while( $row = $db->sql_fetchrow($result) )
	{
		$forum_moderators[$row['forum_id']][] = '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $row['user_id']) . '">' . $row['username'] . '</a>';
	}
	$db->sql_freeresult($result);


	$sql = "SELECT aa.forum_id, g.group_id, g.group_name 
		FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g 
		WHERE aa.auth_mod = " . TRUE . " 
			AND g.group_single_user = 0 
			AND g.group_type <> " . GROUP_HIDDEN . "
			AND ug.group_id = aa.group_id 
			AND g.group_id = aa.group_id 
		GROUP BY g.group_id, g.group_name, aa.forum_id 
		ORDER BY aa.forum_id, g.group_id";
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not query forum moderator information', '', __LINE__, __FILE__, $sql);
	}

	while( $row = $db->sql_fetchrow($result) )
	{
		$forum_moderators[$row['forum_id']][] = '<a href="' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=" . $row['group_id']) . '">' . $row['group_name'] . '</a>';
	}
	$db->sql_freeresult($result);
Wer es aufgelistet haben möchte, schreibe diese in eine extra Tabelle (Bei der Anlegung) und liest diese aus. Der Code, welcher in PHPBB dafür enthalten ist, gehört eindeutig verschrottet.
Benutzeravatar
V1tzl1
Mitglied
Beiträge: 157
Registriert: 10.10.2005 15:31

Beitrag von V1tzl1 »

Also nur nochmal für mich, die eigene Usergruppe dient ausschließlich der Rechteverteilung und kann über reguläre Gruppen geregelt werden?
vom Bastartdoperator from Hell:
Heute ist Backup-Tag. Mein Lieblingtag! [...]. Ich linke das tape device nach /dev/null - viel ökonomischer. Zumindest, was meine Arbeitszeit angeht, weil ich nicht alle 5 Minuten Bänder wechseln muß.
adamo
Mitglied
Beiträge: 33
Registriert: 26.10.2004 18:56

Beitrag von adamo »

Ja zur Frage im ersten Teil des Themas.

Mein zweiter Beitrag bezieht sich auf die Moderatoren.
Es werden hierbei alle Gruppen durchgesehen.

Wer beides nutzt und viele User hat, der bremst sein Forum unverhältnismäßig aus.

Auf der Indexseite sind weder die Moderatorenrechte wichtig (Die Rechte der Ansicht für die Foren bleibt erhalten), noch sonst irgendetwas davon. Es dient lediglich zur Ansicht der Moderatoren im einzelnem Forum.
Dieser absolute Killerquery bremst ein Forum aus, mit jedem User der in eine Gruppe gelegt wird oder eben angelegt wird.

Wer Moderatoren angezeigt bekommen möchte in den einzelnen Foren, der füge einfach nach seiner Forenbeschreibung ein:
Forenbeschreibung = ACP (Adminbereich), Kategorie Foren - dort Einstellungen, Forum auswählen, auf Bearbeiten gehen, dort unter Beschreibung - nach dem gewünschten Text- eintragen: <br /><b>Moderator:</b> Moderatorenname, Moderatorenname2, etc.

Es betrifft nur den Bereich der Indexseite des Forums. in den einzelnen Foren werden die Moderatoren weiterhin angezeigt.

Alternativ die Moderatoren in einem zusätzlichen Feld der Forentabelle (DB) eintragen. Die Tabelle der Foren wird ohnehin abgefragt und belastet das Forum somit absolut nicht. Bei Gelegenheit schreibe ich einmal meinen Code als Mod ins Forum, da diese absolut kranke Abfrage ja auch bspw. in der viewforum.php enthalten ist. Auch dort dient diese Abfrage nur der Anzeige wer dort Moderator ist.
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“