Seite 2 von 3
Verfasst: 09.08.2004 15:10
von Christian Benz
Hallo,
ausgehend von der eingefügten Zeile ...
(siehe
http://www.phpbb.de/viewtopic.php?t=61396)
... müßte es doch eingentlich reichen, diese Zeile im Falle eines Moderators oder Admins nicht wirksam werden zu lassen. Also praktisch in der Art:
if (AktuellerUser = Moderator) OR (AktuellerUser = Admin))
{ [nix] } else { WHERE f.forum_id != xxx }
Vielleicht kann das (oder was ähnliches in dieser Richtung) mal jemand in gültiges php umsetzen.
Gruß,
Christian
Verfasst: 09.08.2004 16:39
von Rainer4ever
Ich möchte das eine Forum als eine Art "Forum Shop" nutzen. (Amazon Mod)
Dieses soll dann aber eben nicht über den normalen Forum Index zu erreichen sein, sondern eben über einen Link im Header. Das ist etwas übersichtlicher als wieder ein extra Sub-Forum im index.
Auf jeden Fall, danke für die Hilfe
Gruss
Verfasst: 09.08.2004 17:36
von JB007
Christian Benz hat geschrieben:Hallo,
ausgehend von der eingefügten Zeile ...
(siehe
http://www.phpbb.de/viewtopic.php?t=61396)
... müßte es doch eingentlich reichen, diese Zeile im Falle eines Moderators oder Admins nicht wirksam werden zu lassen. Also praktisch in der Art:
if (AktuellerUser = Moderator) OR (AktuellerUser = Admin))
{ [nix] } else { WHERE f.forum_id != xxx }
Vielleicht kann das (oder was ähnliches in dieser Richtung) mal jemand in gültiges php umsetzen.
So müsste es eigentlich funktionieren.
Jetzt bräuchten wir nur noch jemanden, der soviel Ahnung von PHP hat, dass er uns sagt, wie?

Verfasst: 11.08.2004 02:36
von Christian Benz
Hallo,
ich glaube ich habe eine Lösung gefunden. Hilfreich dabei waren die Infos unter "
Vorlage für in phpBB eingebundene Seiten - Prüfung der Benutzerrechte".
Diesen Codeteil aus der
index.php:
Code: Alles auswählen
$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 )
ORDER BY f.cat_id, f.forum_order";
break;
... habe ich durch folgenden Code ersetzt:
Code: Alles auswählen
if ( ($userdata['user_level'] == ADMIN) OR ($userdata['user_level'] == MOD))
{
$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 )
ORDER BY f.cat_id, f.forum_order";
break;
}
else
{
$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 != xxx
ORDER BY f.cat_id, f.forum_order";
break;
}
Dabei gilt wieder: xxx steht für die zu versteckende Foren-ID.
Keine Garantie oder Gewähr!

(Bei mir scheint es jedenfalls zu funktionieren.) Vielleicht kann das aber ein php- und phpbb-Kenner zur Sicherheit mal prüfen, ob das auch so in Ordnung und "unbedenklich" ist.
Gruß,
Christian
Verfasst: 11.08.2004 09:00
von JB007
Hmmm. Bei mir passiert da gar nichts. Also es ändert sich nichts an der Ansicht.

Eine Fehler-Meldung erhalte aber erfreulicherweise aber auch nicht, also kann dein Code nicht so falsch sein.
Kannst du vielleicht mal deinen kompletten Code für den Bereich
Code: Alles auswählen
case 'oracle':
$sql = "SELECT f.*, p.post_time, p.post_username, u.username, u.user_id
FROM " . FORUMS_TABLE . " f, " . POSTS_TABLE . " p, " . USERS_TABLE . " u
WHERE p.post_id = f.forum_last_post_id(+)
AND u.user_id = p.poster_id(+)
ORDER BY f.cat_id, f.forum_order";
break;
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 ) " .
" LEFT JOIN " . TOPICS_TABLE . " t ON t.topic_last_post_id = p.post_id ) " .
" ORDER BY f.cat_id, f.forum_order";
break;
}
hier posten?
Danke schon mal!
Verfasst: 11.08.2004 11:07
von Christian Benz
Hallo,
Hmmm. Bei mir passiert da gar nichts.
Schade. Hast du die "xxx" durch die zu versteckende Foren-ID-Nummer ersetzt? Das ganze einmal als Moderator/Admin und dann als Gast getestet? Vermutlich ja. Dein zitierter Codeabschnitt sah bei mir aber anders aus! Welche Version hast du? Benutzt du irgendenwelche Mods welche die index.php hier nachträglich verändert haben?
Versuch mal diesen Code anstelle deines zitierten Abschnittes zu benutzen:
Code: Alles auswählen
case 'oracle':
$sql = "SELECT f.*, p.post_time, p.post_username, u.username, u.user_id
FROM " . FORUMS_TABLE . " f, " . POSTS_TABLE . " p, " . USERS_TABLE . " u
WHERE p.post_id = f.forum_last_post_id(+)
AND u.user_id = p.poster_id(+)
ORDER BY f.cat_id, f.forum_order";
break;
default:
if (($userdata['user_level'] == ADMIN) OR ($userdata['user_level'] == MOD))
{
$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 ) " .
" LEFT JOIN " . TOPICS_TABLE . " t ON t.topic_last_post_id = p.post_id ) " .
" ORDER BY f.cat_id, f.forum_order";
break;
}
else
{
$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 ) " .
" LEFT JOIN " . TOPICS_TABLE . " t ON t.topic_last_post_id = p.post_id ) " .
WHERE f.forum_id != xxx
" ORDER BY f.cat_id, f.forum_order";
break;
}
}
... und natürlich nicht vergessen: die xxx im Code ersetzen!
Test auf eigene Gefahr.
Gruß,
Christian
Verfasst: 11.08.2004 15:13
von JB007
Das mit den xxx hatte ich schon verstanden...
Wenn ich deinen code in meine index.php kopiere, die
xxx durch eine Forennummer ersetzte, erhalte ich die Meldung:
Code: Alles auswählen
Parse error: parse error in /mnt/be1/08/467/00000011/htdocs/community/index_100804.php on line 173
Zeile 173 beinhaltet bei mit die folgenden Text (die xxx natürlich ausgetauscht):
Keine Ahnung warum....
Verfasst: 11.08.2004 16:59
von Christian Benz
Hallo,
schade

ich hab's fast schon befürchtet.
Ich glaub' das liegt daran, weil bei mir (Version 2.0.10) der Code mit weniger Verkettungen daherkommt (dieses " . " im Code)
Tausche bitte mal in dem von mir vorgeschlagenen Code diese Zeile:
... gegen das hier aus:
Gruß,
Christian, hoffend und betend es möge klappen
Verfasst: 12.08.2004 09:45
von JB007
Deine Gebete wurden erhört. Teilweise zumindest!
Die geänderte Zeile funktioniert. Yippey! Aber nur bei einem Forum. Wenn ich mehrere ID´s eingebe erhalten ich folgende 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 '28 ORDER BY f.cat_id, f.forum_order' at line 1
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 ) LEFT JOIN phpbb_topics t ON t.topic_last_post_id = p.post_id ) WHERE f.forum_id != 25,28 ORDER BY f.cat_id, f.forum_order
Line : 180
File : /mnt/be1/08/467/00000011/htdocs/community/index_100804.php
Den Fehler hab ich bisher noch nicht gesehen, obwohl ich schon einige auf dem Monitor hatte.

Interessant!
Christian Benz hat geschrieben:Ich glaub' das liegt daran, weil bei mir (Version 2.0.10) der Code mit weniger Verkettungen daherkommt (dieses " . " im Code)
Mein Forum läuft jetzt seit etwa 3 Wochen. Ich habe mir damals die neueste Version runtergeladen und im Copyright steht auch "Powered by phpBB 2.0.10", also sollte es zwischen unseren Board-Versionen doch eigentlich keinen Unterschied geben...
Ich habe zusätzlich nur 2 Mods laufen: Album-Mod und Statistik-Mod. Beide dürften in die betreffenden Zeilen nicht eingreifen.
Danke übrigens für deine Mühe!!!

Verfasst: 12.08.2004 12:33
von Christian Benz
Hallo,
Deine Gebete wurden erhört.
Amen.
Aber nur bei einem Forum. Wenn ich mehrere ID´s eingebe erhalten ich folgende Fehlermeldung: [...]
Kann mir auch nicht ganz vorstellen, dass es so klappen könnte. Da müßtest du schon sowas in der Art wie etwa das hier ausprobieren:
(Ob das wirklich funktioniert habe ich noch nicht getestet. Käme auf einen Versuch an.)
... also sollte es zwischen unseren Board-Versionen doch eigentlich keinen Unterschied geben
Bei Computern und ihren Eigenheiten wundert mich schon lange nichts mehr.
Gruß,
Christian