Wie funkioniert "gelesen/ungelesen" im phpbb ?

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
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.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
DrumCode
Mitglied
Beiträge: 5
Registriert: 15.04.2004 10:56

Wie funkioniert "gelesen/ungelesen" im phpbb ?

Beitrag von DrumCode »

Hi Leute,
ich denke dieses Forum ist wohl das passendste:

ich bastel grade wieder am einem EIGENEN(!) Forum einer Seite und möchte gerne bei jedem Unterforum des Boards bzw bei jedem Thread eine Grafik darstellen , ob im jeweiligen Forum neue Beitraege vorhanden sind oder nicht.

Nun meine Frage: Wie ist das im phpbb realisiert?

Meine Idee bisher:
Eine Tabelle in der DB erstellen.
Bei jedem neuen Posting fuer JEDEN user einen Eintrag machen. Sobald der Eintrag betrachtet wird, lösche ich den entsprechenden Datensatz wieder aus der DB.

Das scheint mir aber ungeschickt , weil die Tabelle im laufe der Zeit relativ gross werden würde.
Löschen von "nach X- Tagen nicht gelesen" Datensaetzen ist allerdings auch nicht soo die prickelnde Lösung

Hat jemand von euch eine andere Idee?
Ich hab bei jedem Benutzer ein Datum mitgespeichert wann der letzte Login war.
Allerdings waeren dann nach einem Login alle Postings "gelesen" nur weil das Logindatum neuer ist, obwohl der User die Postings evtl garnicht gelesen hat.

Blöde Sache das.

Danke fuer Denkanstöße


Gruß
DrumCode
Zuletzt geändert von DrumCode am 15.03.2005 13:45, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5394
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Variante 1 (das phpBB Original):
phpBB schickt jedem User durch die Anmeldung ein Cookie, das die letzte Login-Zeit speichert.
Danach prüft das Board, ob jüngere Beiträge vorliegen und markiert diese entsprechend.
Vorteil Sehr schnell
Nachteile
Browser zu = alles gelesen
Cookies gelöscht = alles gelesen
Cookies blockiert = kein Autologin und auch immer alles gelesen.

Variante 2:
Es existieren 2 bekannte Mods, die die Nachteile der Variante 1 beheben, allerdings geringfügig die Performance des Boards reduzieren und die Datenbank vergrösseren. Dazu erhält man einige weitere nützliche Funktionen.
Das wären der UPi2DB Mod und der Keep Unread Mod. Beide durch Suche hier oder auf phpbbhacks.com zu finden.
Diese Mods speichern den Zustand jedes Topics für jeden User in der Datenbank, so daß ein Betrag auch erst dann gelesen ist, wenn man ihn wirklich ansieht. Dabei verwenden beide Mods weit optimierte Datenbank-Routinen.

Ich setze den UPi2DB ein und bin hoch zufrieden damit. Auch und gerade was die Performance anbelangt.
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
Benutzeravatar
easygo
Mitglied
Beiträge: 2170
Registriert: 03.09.2004 13:45
Kontaktdaten:

Beitrag von easygo »

DrumCode hat geschrieben:Allerdings waeren dann nach einem Login alle Postings "gelesen" nur weil das Logindatum neuer ist, obwohl der User die Postings evtl garnicht gelesen hat.
:D drum steht da auch: "Neue Beiträge seit dem letzten Besuch" (oder so)
aber das lässt sich bestimmt auch direkter umsetzen...

Nur mal so als Beispiel:
Falls net vorhanden, Tabelle {prefix}topic_view anlegen mit den
Feldern: topic_id, user_id, view_time, view_count

view_time = Last viewed time User (update)
view_count = Topic visits User (update)

sql query -> viewtopic.php (oder vergleichbare Datei)

Zeitwert für topic_last_post_id hast du ja schon. Fehlt also nur
noch ne Abrage, ob und für welche Topics die view_time (falls vorhanden)
aehm... kleiner ist als der Zeitwert für topic_last_post_id

Mit dem Ergebnis: folder_new (z.B.) or not (folder) :wink: easy
Benutzeravatar
larsneo
Mitglied
Beiträge: 2622
Registriert: 07.03.2002 15:23
Wohnort: schwäbisch gmünd
Kontaktdaten:

Beitrag von larsneo »

...dann skalier 'mal die sich daraus ergebende datenbankbelastung bei z.b. 100.000 beiträgen und 3000 usern hoch - da dürfte selbst die unsägliche search-mimik noch kinderkram gegen sein ;-)
gruesse aus dem wilden sueden
larsneo
..::[krapohl.net]::..
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“