Seite 1 von 2

Forum-Befugnisse

Verfasst: 01.08.2004 17:38
von JB007
Ich möchte eine Anzahl Foren in der allgemeinen Übersicht ('index.php') nur für Moderatoren sichtbar machen. Dass ich das über den Admin-Bereich über > Foren >> Befugnisse einstellen kann, ist mir bekannt. So weit so gut!

Gleichzeitig möchte ich aber, dass diese Foren, wenn ich sie einzeln über einen Link ('viewforum.php') aufrufe, folgende Befugnisse aufweisen:
- Ansicht: Alle
- Lesen: Alle
- Posten: Mods
- Antworten: Reg
- Bearbeiten: Reg
- Löschen: Reg
- Wichtig: Mod
- Ankündigungen: Mod
- Umfrage: Reg
- Umfrage erstellen: Mod

Wie erreiche ich das? Gibt es eventuell einen Mod/Hack hierzu? Bisher habe ich nichts gefunden. Danke vorab!

Verfasst: 01.08.2004 18:03
von Leuchte
Wenn sie nur Moderatoren sehen sollen, stecke sie in eine Gruppe und setze die Ansicht (View) Befugnisse auf Privat.
KB:privates_forum

Verfasst: 01.08.2004 18:28
von JB007
Diese Möglichkeit ist mir schon bewusst / bekannt.

Leider für diese Möglichkeit aber doch zum Ausschluss nicht registrierter Gäste.

Im Grunde genommen möchte ich Foren haben, die in der allgemeinen Übersicht nicht auftauchen, über einen separaten Link z.B. auf der Homepage dennoch für jeden, also auch für nicht registrierte User, aufrufbar und einsehbar sind und o.a. Befugnisse aufweisen.

Die Einrichtung eines privaten Forums bringt also nicht die gewünschte Lösung...

Verfasst: 01.08.2004 20:05
von Acid
Dann stell die Befugnisse so ein, das (wie gewünscht) jeder das Forum betreten/benutzen könnte und entferne einfach die Auflistung des jeweiligen Forums vom Index, in dem du explizit angibst, das das jeweilige Forum mit der ID xy nicht angezeigt werden soll (mehrere Foren mit Komma trennen).

index.php (blau ist neu)
$sql = "SELECT f.*, p.post_time, p.post_username, u.username, u.user_id
FROM (( " . FORUMS_TABLE . " f
LEFT JOIN " . POSTS_TABLE . " p ON p.post_id = f.forum_last_post_id )
LEFT JOIN " . USERS_TABLE . " u ON u.user_id = p.poster_id ) WHERE f.forum_id NOT IN (1,2,3)
ORDER BY f.cat_id, f.forum_order";

Verfasst: 02.08.2004 07:01
von JB007
Funktioniert leider nicht. Erhalte einen Parse Error!

Code: Alles auswählen

Parse error: parse error in /mnt/be1/08/467/00000011/htdocs/community/index.php on line 159

Verfasst: 02.08.2004 20:25
von Acid
Poste mal hier den obigen Code-Block, nach der Änderung.

Verfasst: 02.08.2004 23:58
von JB007
Sorry, habe mitlerweile etwas rumgetestet und weiß nicht mehr, wie die ursprüngliche fehlermeldung zustande gekommen ist.

habe aber mitlweile eine neue und längere fehlermeldung erhalten. und zwar für folgenden code:

Code: Alles auswählen

default:
$sql = "SELECT f.*, p.post_time, p.post_username, u.username, u.user_id, t.topic_title, t.topic_last_post_id " .
" FROM ((( " . FORUMS_TABLE . " f " .
" LEFT JOIN " . POSTS_TABLE . " p ON p.post_id = f.forum_last_post_id )" .
" LEFT JOIN " . USERS_TABLE . " u ON u.user_id = p.poster_id )  WHERE f.forum_id NOT IN (12,13,28) " .
" LEFT JOIN " . TOPICS_TABLE . " t ON t.topic_last_post_id = p.post_id ) "  .
" ORDER BY f.cat_id, f.forum_order";
break;
}
Da gab es dann folgende schöne Fehlermeldung:

Code: Alles auswählen

Could not query forums information

DEBUG MODE

SQL Error : 1064 You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE f.forum_id NOT IN (12,13,28) LEFT JOIN phpbb_topics t ON

SELECT f.*, p.post_time, p.post_username, u.username, u.user_id, t.topic_title, t.topic_last_post_id FROM ((( phpbb_forums f LEFT JOIN phpbb_posts p ON p.post_id = f.forum_last_post_id ) LEFT JOIN phpbb_users u ON u.user_id = p.poster_id ) WHERE f.forum_id NOT IN (12,13,28) LEFT JOIN phpbb_topics t ON t.topic_last_post_id = p.post_id ) ORDER BY f.cat_id, f.forum_order

Line : 166
File : /mnt/be1/08/467/00000011/htdocs/community/index_020804.php 
Hatte vermutet, dass das ein "Zeichensetzungsfehler" war, also Semikolon oder Anführungsstriche nicht richtig gesetzt. Aber alle probierten Änderungen brachten keine Verbesserung.

Sorry schon mal vorab, falls es sich um einen "dummen" Fehler handelt. Bin PHP Anfänger... :roll:

Danke vorab!

Verfasst: 03.08.2004 00:04
von PhilippK
Tausch mal die Zeilen

Code: Alles auswählen

" LEFT JOIN " . USERS_TABLE . " u ON u.user_id = p.poster_id )  WHERE f.forum_id NOT IN (12,13,28) " .
und

Code: Alles auswählen

" LEFT JOIN " . TOPICS_TABLE . " t ON t.topic_last_post_id = p.post_id ) "  .
Gruß, Philipp

Verfasst: 03.08.2004 00:12
von JB007
Erhalte dann die Fehlermeldung:

Code: Alles auswählen

Could not query forums information

DEBUG MODE

SQL Error : 1066 Not unique table/alias: 't'

SELECT f.*, p.post_time, p.post_username, u.username, u.user_id, t.topic_title, t.topic_last_post_id FROM ((( phpbb_forums f LEFT JOIN phpbb_posts p ON p.post_id = f.forum_last_post_id ) LEFT JOIN phpbb_topics t ON t.topic_last_post_id = p.post_id ) LEFT JOIN phpbb_topics t ON t.topic_last_post_id = p.post_id ) ORDER BY f.cat_id, f.forum_order

Line : 166
File : /mnt/be1/08/467/00000011/htdocs/community/index_020804.php
Kannst du dir unter http://www.turnverein-bergheim.de/commu ... 020804.php auch gerne mal selber ansehen.

Der Code in der index.php lautet jetzt:

Code: Alles auswählen

$sql = "SELECT f.*, p.post_time, p.post_username, u.username, u.user_id, t.topic_title, t.topic_last_post_id " .
" FROM ((( " . FORUMS_TABLE . " f " .
" LEFT JOIN " . POSTS_TABLE . " p ON p.post_id = f.forum_last_post_id )" .
" LEFT JOIN " . TOPICS_TABLE . " t ON t.topic_last_post_id = p.post_id ) "  .
" LEFT JOIN " . TOPICS_TABLE . " t ON t.topic_last_post_id = p.post_id ) "  .
" ORDER BY f.cat_id, f.forum_order";
break;
}

Verfasst: 03.08.2004 00:16
von JB007
hmm

Code: Alles auswählen

" LEFT JOIN " . TOPICS_TABLE . " t ON t.topic_last_post_id = p.post_id ) "  . 
ist doppelt vorhanden.