Seite 1 von 2
[komplett erledigt] Forum sichtbarkeit?!
Verfasst: 01.03.2009 14:46
von Megaleecher
Hi
Ich hab mir einen kleinen Mod programmiert, der mir die neuesten Themen und Beiträge anzeigt.
Jetzt zeigt er aber auch diese Themen an, die ein User gar nicht sehen kann (Administrationsbereich, VIP Bereich)
Ich hab diese Bereiche so eingestellt, dass sie nur bestimmte User sehen können.
Wo finde ich in der Datenbank, ob ein User ein bestimmtes Forum sehen kann??
Oder gibt es dafür bereits eine fertige Funktion??
MfG Megaleecher
Re: Forum sichtbarkeit?!
Verfasst: 01.03.2009 14:54
von mr.no-name
Diese Art von Mod gibt es wohl schon - suche bei den üblichen Stellen (hier in der Mod DB, auf phpbbhacks.com usw) einfach mal nach "recent" oder "latest" - da solltest du etwas passendes finden

Re: Forum sichtbarkeit?!
Verfasst: 01.03.2009 16:17
von Megaleecher
Mag schon sein, das es sowas schon gibt, mir gehts aber mehr darum, dass ich es selbst gemcht habe und es nicht von jemanden anderen machen ließ
Könnte mir jemand eine richtige Antwort geben oder muss ich dies vorhandenen Mods zerlegen??
MfG
Re: Forum sichtbarkeit?!
Verfasst: 01.03.2009 20:00
von gn#36
Die Berechtigungsdaten bekomst du aus allen Tabellen die ein "acl" im Namen haben. Alternativ und besser kannst du aber auch das auth Objekt benutzen und von diesem eine komplette Liste aller Foren IDs erhalten, in dem der aktuelle User lesen darf. Wie das geht kannst du in deinem docs/ Ordner finden der in der Foren Installation beiliegt, dort findet sich ein HTML Dokument über die Auth Api. Das geht dann ziemlich einfach mit etwas ähnlichem wie $auth->acl_getf_global oder so (müsste ich im Moment auch nachsehen so häufig brauche ich das nicht).
Die ausgelesenen IDs gibst du dann bei der Abfrage eben einfach mit ein (Foren ID steht ja bei jedem Themeneintrag dabei) indem du $db->sql_in_set benutzt.
Re: Forum sichtbarkeit?!
Verfasst: 01.03.2009 22:13
von Megaleecher
Danke
Das war genau das was ich gesucht habe^^
MfG Megaleecher
Re: [fast erledigt] Forum sichtbarkeit?!
Verfasst: 02.03.2009 16:11
von Megaleecher
War ja irgendwie klar, das es so kommen musste
Also ich habe mir die Documentation durchgelesen, komme aber nicht drauf wie ich damit die forenid herausbekomm, was ich lesen kann :S
Ich habs mal test weise so probiert:
$auth_test = $auth->acl_getf_global('f_read');
Aber da kommt immer 1 raus...
Egal mit was ich angemeldet bin...
Wie kann ich den Befehl nun richtig benutzen??
Ich hab auch schon diesen articel gelesen aber komme auch dadurch nicht weiter...
http://phpbbmodders.net/articles/3.0/permissions/
Was mir auch aufgefallen ist, dass die function in der Klasse nicht vorhanden ist, er sie aber trotzdem irgendwie benutzen kann...
Woher kommt das?!
MfG Megaleecher
//Edit:
Ich habs jetzt mal so probiert:
if ($auth->acl_get('f_read',$row['forum_id']))
{
}
In $row['forum_id'] steht die aktuell abzufragende ForenID drinnen, aber der ganze Ausdruck gibt ebenfalls IMMER 1 bzw True zurück...
Re: [fast erledigt] Forum sichtbarkeit?!
Verfasst: 02.03.2009 17:06
von gn#36
Ich denke was du suchst ist eher $auth->acl_getf('recht', true); (Nachdem ich dann jetzt doch mal in die Datei gesehen habe). Das gibt dir ein Array aller Foren in denen der aktuelle User die Erlaubnis hat etwas zu tun.
Re: [fast erledigt] Forum sichtbarkeit?!
Verfasst: 02.03.2009 17:50
von Megaleecher
Ich habs nun so gelöst und es geht
if ($auth->acl_get('f_read',$row['forum_id']) != 0)
{
//Permisson
}
else
{
//No Permisson
}
Wollte nicht extra ein ganzes Array durchgehen und mit dem vergleichen^^
Ich sag mal Danke für deine Bemühungen und noch nen schönen Abend.
Wenn ich schon dabei bin, dann wollt ich gleich nen "Bug" bei der Doku bekannt geben...
Dort steht
$result = acl_getf_global(option)
Ich denke, dass das aber
$result = $auth->acl_getf_global(option)
heißen sollte.
MfG Megaleecher
Re: [komplett erledigt] Forum sichtbarkeit?!
Verfasst: 02.03.2009 18:46
von nickvergessen
Code: Alles auswählen
if ($auth->acl_get('f_read',$row['forum_id']))
{
//Permisson
}
else
{
//No Permisson
}
Das sollte so auch gehen, also ohne != 0
Re: [komplett erledigt] Forum sichtbarkeit?!
Verfasst: 02.03.2009 20:43
von gn#36
Naja das ist aber eine ganze Menge mehr Vergleiche als das was ich im Sinn hatte:
Code: Alles auswählen
$allowed_forums = $auth->acl_getf('f_read', true);
$allowed_forums = array_keys($allowed_forums);
$sql = "SELECT bla FROM " . TOPICS_TABLE . " WHERE blablub AND" . $db->sql_in_set('forum_id', $allowed_forums);
Dann wird der andere Kram gar nicht erst aus der Datenbank geholt. Hat außerdem den Vorteil, dass du die Anzahl der angezeigten Einträge besser steuern kannst per LIMIT und nicht "hoffen" musst, dass du genug aus der DB holst.