Bug: Newspage zeigt immer noch Topics aus gesperrten Foren
Moderator: (M) Mod.-Team Allgemein
- NightStalker
- TalkING. Champion
- Beiträge: 891
- Registriert: Mo, 21. Okt. 02, 20:40
- Wohnort: Downloadbereich
Bug: Newspage zeigt immer noch Topics aus gesperrten Foren
Ben, die Newspage zeigt mal wieder nicht erreichbare Topics ("Flyer für unsere AG ..."). Als ich den Code damals für das Tillmann-Forum geschrieben hatte, hab ich ne Abhängigkeit von der Forennr. drinnegelassen. Schau dir mal das SQL-Statement an, mußt du wohl ergänzen. Ich würd's dir ja beheben, aber ich fahr morgen ganz früh weg und komm erst Sonntag wieder.
MfG,
Björn
MfG,
Björn
-- Chrząszcz brzmi w trzcinie w Szczebrzeszynie.
-- 好好学习,天天向上!
-- 好好学习,天天向上!
- HerrSultan
- Exzellenter Poster
- Beiträge: 3115
- Registriert: Mo, 07. Okt. 02, 13:12
- Wohnort: Hamburg-Altona
- Kontaktdaten:
Es soll ja so sein, dass Leute vom Racing Forum, wenn sie eingeloggt sind, ihre Beiträge sehen können. Insofern kann man nicht einfach Beiträge rausnehmen. Interessanterweise tuts bei User = ausgeloggt bzw. User = Admin genau das, was es soll.
Ich hab da gerade so auf den ersten Blick nicht wirklich als falsch identifizieren können, ich schick' dir die Datei mal per mail.
Papierkorb: Wird / soll nur angezeigt werden, wenn man eingeloggt ist. Über das grundsätzliche Entfernen könnte man mal nachdenken.
Ich hab da gerade so auf den ersten Blick nicht wirklich als falsch identifizieren können, ich schick' dir die Datei mal per mail.
Papierkorb: Wird / soll nur angezeigt werden, wenn man eingeloggt ist. Über das grundsätzliche Entfernen könnte man mal nachdenken.
- HerrSultan
- Exzellenter Poster
- Beiträge: 3115
- Registriert: Mo, 07. Okt. 02, 13:12
- Wohnort: Hamburg-Altona
- Kontaktdaten:
Also im Moment sind da rund 7 Themen in der Übersicht (z-lastposts), die man nicht lesen kann, wenn man nicht in dieser Racing-AG ist.
Das nervt schon ein wenig, zumal viele Titel auch nicht eindeutig dieser Gruppe zuzuordnen sind.
Man müsste sie also entweder nur für Mitglieder dieser Gruppe anzeigen oder wenigstens das Forum, aus dem sie stammen, hinzufügen.
Papierkorb-Posts sollte man dort überhaupt nicht anzeigen.
Das nervt schon ein wenig, zumal viele Titel auch nicht eindeutig dieser Gruppe zuzuordnen sind.
Man müsste sie also entweder nur für Mitglieder dieser Gruppe anzeigen oder wenigstens das Forum, aus dem sie stammen, hinzufügen.
Papierkorb-Posts sollte man dort überhaupt nicht anzeigen.
Ich habe gerade versucht, durch den betreffenden Code durchzusteigen:
Mein Problem im Moment ist nur: Ich habe irgendwie nicht herausfinden können, wofür die forum_auth- und user_level-Nummern stehen. Zum anderen verstehe ich die dritte Abfrage nicht wirklich.
Code: Alles auswählen
$security=FALSE;
$forum_access_auth = auth(AUTH_ALL, $line['forum_id'], $userdata, ''); // added by NightStalker
if($forum_auth == 2 && $userdata['user_level'] == ADMIN) { // optional - remove from here ...
$security=TRUE;
}
if($forum_auth == 3 && ($userdata['user_level'] == ADMIN) || ($userdata['user_level'] == 2)) {
$security=TRUE;
} // ... to here
if($forum_access_auth['auth_read'] && $forum_access_auth['auth_view']) // replacement by NightStalker
{ // "
$security = TRUE; // "
} // "
if($security == TRUE)
.. Beiträge auslesen ...
- NightStalker
- TalkING. Champion
- Beiträge: 891
- Registriert: Mo, 21. Okt. 02, 20:40
- Wohnort: Downloadbereich
Ok, also ich hab leider gerade nicht die ganze Datei vorliegen, aber zu dem Codeschnipsel kann ich doch was sagen: Was die 2 und die 3 da machen, kann ich nicht ganz sicher sagen, aber es hatte wenn ich mich richtig erinnere was damit zu tun, dass es damals ein administrationsinternes Forum gab (zu dem die 2 gehört) und ein weiteres moderationsinternes (3) welche ja auch beide nicht angezeigt werden sollten. In letzteres kam die Administration natürlich auch rein. Das heißt die beiden ersten Ifs kümmern sich um diese beiden Ausnahmen. Deswegen steht da auch optional dran, weil der Teil nur bewirkt, dass die Moderatoren und Admins das auf ihrer Startseite sehen. Nimmt man es raus, merkt der normale User gar nix davon, weil für die sowieso erst das 3. If relevant ist.
So, und langer Rede kurzer Sinn, da muß man nix ändern, weil der entscheidende Teil muß irgendwo darüber stehen (ziemlich sicher auch mit Kommentar von mir). Wir hatten das ganze damals ja für das Tillmann-Forum modifiziert und der Einfachheit halber nur auf genau das abgefragt. Oben muß also irgendwo etwas stehen, wo eine Foren-ID als Nummer übergeben wird, das wird dann die des alten Tillmann-Forums sein. Dubliziert (oder auch ändert) man den Teil mit der ID des Racing-Forums (46) , sollte die Sache erledigt sein und die Beiträge sollten nicht mehr erscheinen.
So, und langer Rede kurzer Sinn, da muß man nix ändern, weil der entscheidende Teil muß irgendwo darüber stehen (ziemlich sicher auch mit Kommentar von mir). Wir hatten das ganze damals ja für das Tillmann-Forum modifiziert und der Einfachheit halber nur auf genau das abgefragt. Oben muß also irgendwo etwas stehen, wo eine Foren-ID als Nummer übergeben wird, das wird dann die des alten Tillmann-Forums sein. Dubliziert (oder auch ändert) man den Teil mit der ID des Racing-Forums (46) , sollte die Sache erledigt sein und die Beiträge sollten nicht mehr erscheinen.
-- Chrząszcz brzmi w trzcinie w Szczebrzeszynie.
-- 好好学习,天天向上!
-- 好好学习,天天向上!
- HerrSultan
- Exzellenter Poster
- Beiträge: 3115
- Registriert: Mo, 07. Okt. 02, 13:12
- Wohnort: Hamburg-Altona
- Kontaktdaten:
- NightStalker
- TalkING. Champion
- Beiträge: 891
- Registriert: Mo, 21. Okt. 02, 20:40
- Wohnort: Downloadbereich
Ok nach Studium des Skriptes und Konsultation meiner e-mail von 2002 die ich dir geschickt habe nachdem ich damals die Änderungen eingebaut hatte
Anscheinend hab ich das damals sehr wohl allgemeingültig für alle gesperrten Foren gecodet und es funktionierte ja auch für das Tillmannforum. Irgendwie mußt du das wohl kaputtrepariert haben oder du hast die Rechte falsch gesetzt. Das würd ich an deiner Stelle nochmal checken.
/edit: Nun scheint es richtig zu gehen warum auch immer: Laut Forumsübersicht soll es ein Topic mit Anwort von heute geben in Racing, das zeigt er mir auf der Übersicht aber nicht an, egal ob ich eingeloggt bin oder nicht. Genaugenommen zeigt er in den letzten 5 Tagen kein einziges der Racing-Topics mehr an ...
nehme ich oben gesagtes zurück und behaupte jetzt das Gegenteil:Also, ganz ehrlich hab ich nicht kapiert, was das Skript eigentlich macht, es sieht so aus, als ob das Skript versucht eine Benutzerüberprüfung durchzuführen, auch wenn ich keine Ahnung habe, wie das in dieser Form klappen soll. Die forum_auth-Variable wird nicht initialisiert und gehört meiner Ansicht nach auch nicht zum phpBB2 "Standard". Keine Ahnung, was die da soll. Außerdem scheint der 3. Berechtigungsfall immer zuzutreffen (weil er schon bei nicht eingeloggten Benutzern zutrifft) und macht damit ein Sicherheitskonzept eh zunichte. Dies veranlasste mich, diesen Fall herauszunehmen und eine richtige Berechtigungsabfrage zu implementieren (basierend auf dem Leserecht eines Forums, die auth_view-Abfrage beugt einen potentiellen Konfigurationsfehler seitens des Administrators vor). Diese Abfrage macht die beiden darüber aber eigentlich auch überflüssig, weil die auth-Funktion für Mods und Admins - und ich vermute mal das verbirgt sich hinter den seltsamen Abfragen darüber - sowieso Vollzugriff zurückgibt (mal davon abgesehen, dass eingeloggte Admins und Mods die Seite nicht zu sehen bekommen, da wir gar keine Rückverlinkung aus dem Forum auf die Startseite haben). Es wäre also u. U. klüger die 2 anderen if's auch rauszunehmen.
Bezüglich der Anzeige der Topics gibt es noch ein Problem, weil die Datenbankanfrage nur maximal 5 Einträge zurückliefert. Wenn man aber immer die neusten 5 nicht-gesperrten Topics haben will, muß man zwangsläufig mehr als 5 auslesen, dafür gibt's prinzipiell mehrere Möglichkeiten:
Die Möglichkeit einfach ohne Limit alle Einträge nach Zeit sortiert zurückzugeben und nur die ersten 5 anzuzeigen, erschien mir gelinde gesagt "overkill", besonders wenn das Forum sehr groß wird. Ich hab's aber ausprobiert, und es klappt sogar.
Das andere Extrem, die Zeilen einzeln auszulesen und zu vergleichen wäre darauf hinausgelaufen die Anfrage und Sorierung mehrfach vorzunehmen und zusätzlich hätte man die schon benutzten (und gesperrten) Topics überspringen müssen. Meiner Ansicht nach viel zu kompliziert und gar nicht mal unbedingt besser.
Also entschied ich mich für einen Kompromiss, nämlich nur 50 Topics auszulesen. Dabei hoffe ich allerdings, dass maximal 45 gesperrt sind (erscheint mir sehr großzügig, ist bestimmt noch nach unten korrigierbar), damit immer mindestens 5 nicht-gesperrte angezeigt werden können.
In jedem Fall muß man, wenn man mehr Topics ausliest als man nachher tatsächlich anzeigen will, einen Counter für die Anzahl der bereits angezeigten Topics einbauen. Auch das habe ich getan.
Das vorliegende Skript ist folglich allgemeingültig für alle gesperrten Foren mit der Einschränkung, dass im ganzen nicht mehr als 45 gesperrte Topics unter den neusten 50 sein dürfen. Es bei mehr als 45 gesperrten würden weniger als die geforderten 5 angezeigt. Ich denke aber, dass man sich da keine allzu große Sorgen machen muß, solange die öffentlichen Foren überwiegen.
Anscheinend hab ich das damals sehr wohl allgemeingültig für alle gesperrten Foren gecodet und es funktionierte ja auch für das Tillmannforum. Irgendwie mußt du das wohl kaputtrepariert haben oder du hast die Rechte falsch gesetzt. Das würd ich an deiner Stelle nochmal checken.
/edit: Nun scheint es richtig zu gehen warum auch immer: Laut Forumsübersicht soll es ein Topic mit Anwort von heute geben in Racing, das zeigt er mir auf der Übersicht aber nicht an, egal ob ich eingeloggt bin oder nicht. Genaugenommen zeigt er in den letzten 5 Tagen kein einziges der Racing-Topics mehr an ...
-- Chrząszcz brzmi w trzcinie w Szczebrzeszynie.
-- 好好学习,天天向上!
-- 好好学习,天天向上!