Ungelesene Beiträge anzeigen (statt seit dem letzten Besuch)

Du suchst einen bestimmten Mod, weißt aber nicht genau wo bzw. ob er überhaupt existiert? Wenn dir dieser Artikel nicht weiterhilft, kannst du hier den von dir gewünschten/gesuchten Mod beschreiben ...
Falls ein Mod-Autor eine der Anfragen hier aufnimmt, um einen neuen Mod zu entwickeln, geht's in [3.0.x] Mods in Entwicklung weiter.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Dr. Love
Mitglied
Beiträge: 48
Registriert: 24.12.2002 03:24
Wohnort: Düsseldorf
Kontaktdaten:

Ungelesene Beiträge anzeigen (statt seit dem letzten Besuch)

Beitrag von Dr. Love »

Hi,

ich bin gerade ein wenig erschüttert, dass es keine Möglichkeit gibt, sich alle ungelesenen Beiträge anzeigen zu lassen. Schön und gut, dass der gelesen-Status in der Datenbank abgelegt wird, aber wenn man dann danach nicht suchen kann, ist der Witz für mich weg. (In meinem alten Forum hatte ich den UPI2DB-Mod drin.)

Jetzt dient das ganze nur noch der farblichen Markierung der Foren und Threads. Oder habe ich was übersehen?

Bei einem schnellen Blick in ddie search.php bestätigte sich meine Beobachtung leider: Die SQL-Abfrage sucht tatsächlich nur nach den neuen Posts seit dem letzten Besuch und nicht nach ungelesenen Posts. Also muss wohl oder übel ein Mod her.

Gibt es so einen Mod schon? Sitzt schon jemand da dran? Ich werde mich in den nächsten Tagen wohl mal da dran setzen.

Eigentlich wollte ich mein neues Forum nicht modden, um die Updates sauber mitmachen zu können. Nun habe ich in der config.php gesehen, dass es offensichtlich so etwas wie eine Extension-Schnittstelle gibt. Gibt es da Informationen drüber? Ich habe bisher nichts dazu gefunden. Ließe sich vielleicht sogar dieser Mod als Extension realisieren? Das wär sehr fein.
Ciao, Dr. Love...
Benutzeravatar
kazwo
Mitglied
Beiträge: 934
Registriert: 29.07.2005 14:10
Wohnort: Mutterstadt des deutschen Fußballs

Beitrag von kazwo »

Blau-Gelb ist nicht Ikea und auch nicht die FDP. Blau-Gelb, das ist die Mannschaft, die ich so gern spielen seh.
Michael Zacher
Mitglied
Beiträge: 1620
Registriert: 03.01.2004 23:12
Wohnort: Aken (Elbe)

Beitrag von Michael Zacher »

Nein, nein..
Er meint vom User ungelesene Beiträge.
Hier bei phpBB.de und auch so beim phpBB2 steht "Beiträge seit dem letzten Besuch anzeigen".
Dies ist aber beim Olympus nicht mehr der Fall.
Hier wird alles nur noch über die Grafiken gemacht.
Leider fällt mir dazu aber auch nix ein.
Mit freundlichen Grüßen / Best regards / Met vriendelijke groeten

Michael Zacher
Benutzeravatar
Mahony
Ehemaliges Teammitglied
Beiträge: 12178
Registriert: 17.11.2005 22:33
Wohnort: Ostfildern Kemnat
Kontaktdaten:

Beitrag von Mahony »

Hallo
Die Suche nach "Neue Beiträge" im phpBB3 entspricht der Suche nach "Beiträge seit dem letzten Besuch anzeigen" im phpBB2





Grüße: Mahony
Taekwondo in Berlin
Wer fragt, ist ein Narr für fünf Minuten, wer nicht fragt, ist ein Narr für immer.
Dr. Love
Mitglied
Beiträge: 48
Registriert: 24.12.2002 03:24
Wohnort: Düsseldorf
Kontaktdaten:

Beitrag von Dr. Love »

Mahony hat geschrieben:Hallo
Die Suche nach "Neue Beiträge" im phpBB3 entspricht der Suche nach "Beiträge seit dem letzten Besuch anzeigen" im phpBB2
Genau so ist das. Etwas enttäuschend, da die Informationen über gelesene Beiträge ja schon in der Datenbank abgelegt werden, es aber keine Möglichkeit gibt, danach zu suchen.

Mit folgender Abfrage kann man immerhin eine Liste dieser Einträge anzeigen (bzw. mittels count(post_id) zählen):

Code: Alles auswählen

SELECT distinct post_id FROM (
  SELECT post_id, forum_id, topic_id, post_subject, post_time
  FROM phpbb3_posts
  WHERE post_time > (UNIX_TIMESTAMP() - 2592000)
) AS p
LEFT JOIN `phpbb3_forums_track` ft
  ON p.forum_id = ft.forum_id
LEFT JOIN `phpbb3_topics_track` tt
  ON p.topic_id = tt.topic_id 
WHERE (ft.user_id = ##USER_ID## AND p.post_time > ft.mark_time)
  OR (tt.user_id = ##USER_ID## AND p.post_time > tt.mark_time)
Keine Ahnung, ob die Abfrage irgendwelche Seiteneffekte hat, ich hab den halben Tag heute daran gebastelt (dass es für Foren und Posts zwei Track-Tabellen gibt, muss man erst mal checken) und mit meinen Testdaten funktioniert es erst mal.

Beachten:
- Funktioniert nicht mit MySQL 3.23, da hier die nötigen Subselects nicht unterstützt werden.
- Das distinct sorgt dafür, dass jeder Post nur einmal zählt (nötig wegen des zweifachen JOINs)
- Die 2592000 steht für die letzten 30 Tage (in Sekunden).Wenn man zu lange suchen lässt, dauert die Abfrage unerträglich lange. Bei mir in 27000 Posts der letzten sechs Jahre etwa 6-7 Sekunden, so nur noch 0,1-0,2 Sekunden. Immer noch etwas lang für meinen Geschmack.
- Die Subquery kann man sich auch sparen, aber das wär eine bemerkenswerte Ressourcenverschwendung, da die JOINS sonst wirklich viel Arbeit hätten (bei mit etwa 10-fache Verarbeitungszeit nötig).


Irgendwelche Kommentare?
Ciao, Dr. Love...
Antworten

Zurück zu „[3.0.x] Mod Suche/Anfragen“