Seite 4 von 9

Verfasst: 24.12.2002 12:47
von Chellie
Hiho

Also ich hab den Mod jetzt zum laufen gebracht aber nur indem ich das Forum ganz neu aufgebaut bzw. gemoded habe. Meine alte schon bearbeitete Version wollte das Ding einfach nicht und ich hab den Fehler einfach nicht finden können. Jetzt hab ich's wie gesagt mit der Version 2.0.3 hinbekommen und es läuft tadellos muß ich sagen.
Ein kleines Problem hatte ich mit der optionalen Template Modifikation. Da war plötzlich die Titelzeile eines Postings verschwunden und damit die Posttime. Ohne das bearbeitete Template funktionierte es aber tadellos so dass ich's weggelassen habe.

Leider konnte ich einen Mod meines alten Forums nicht mehr finden und zwar hatte ich da eine Anzahl in Klammern hinter dem Satz 'Beiträge seit dem letzten Besuch anzeigen'. Leider konnte mir da auch noch niemand helfen. Imho habe ich deshalb eienen Mod drin der selbiges bei jeder Forumsrubrik macht aber man muß jetzt immer scrollen. Sonst hat man das immer gleich auf dem ersten Blick gesehn :(

Eine Kleinigkeit wäre allerdings noch verbesserungswürdig:
Wenn neue Posts im Forum sind und ich das modifizierte Template nicht nehme (wie gesagt geht nicht), dann ist der Post im Thread bei Subsilver mit nem orangenen Icon versehen. Lese ich diesen Post aber nicht und komme später wieder dann funktioniert zwar die schnellsprungmarke vor dem Threadnamen noch aber der Post selbst hat keine Ungelesen - Markierung mehr. Ist aber nur ne Kleinigkeit. Außerdem ist mir aufgefallen das erst nach Ende einer Sessiontime ein gelesener Post innerhalb des Threads auch als gelesen markiert wird. Wie gesagt kann das aber auch an dem Template liegen was ich nicht verwenden kann.

cu
Chellie

Verfasst: 24.12.2002 14:19
von Quichotte
Also bei mir läuft der Hack seit der Installation einwandfrei! Es ist wirklich äußerst angenehm die Sachen dann lesen zu können, wenn man Bock darauf hat, ohne die Übersicht zu verlieren..

Verfasst: 22.01.2003 16:33
von Dr. Love
Hi, wollte mal nachfragen, wie Eure Erfahrungen jetzt nach einiger Zeit Betrieb sind?

Verfasst: 22.01.2003 18:26
von Chellie
Also ich hab keine Probleme damit! :)

cu
Chellie

Verfasst: 11.03.2003 22:15
von Dr. Love
Erfahrungsbericht nach einiger Zeit in Benutzung (v.1.06):

Installation: Haarsträubend. Der Code, den ich da einfügen sollte, war einfach nur grauenvoll. Hab beim Einfügen das schlimmste behoben. Hat der nicht die Coding-Standards gelesen für das phpBB2? Egal. Läuft ja immerhin. Jedenfalls hat mich der Einbau damit satte drei oder vier Stunden beschäftigt. Nichts für mal eben nebenbei.

Datenbanklast: Keine Probs bei mir auf meinem Dedicated-Server. Bei Hosteurope vorher auch nicht mehr viel schlimmer. Da das eh schon um die dreißig Sekunden waren bei denen, war der Performanceverlust nicht mehr auffällig. Der Datenbankserver wa so überlastet, dass ich es erst nach zig Versuchen geschafft habe, meine 2,7MB Search-Tabelle zu dumpen. Vom ganzen Forum am Stück ganz zu schweigen. Der Dedi ist aber schön schnell.

Funktion: Einwandfrei. Sogar nachträglich editierte Posts werden nochmal als ungelesen markiert. Fein. So hab ich das gewünscht.

Einschränkungen: Leider harmoniert der Mod schlecht mit der alten Funktion "Beiträge seit dem letzten Besuch anzeigen (x)". Dass die Zahl in den klammern falsch ist, ist ja verschmerzbar, das werde ich auch noch gerade so hinbekommen. Aber dass der Mod nicht gleich einen Link einfügt "Ungelesene Beiträge anzeigen (x)" Finde ich sehr schade. meine Community war jedenfalls sehr irritiert, da die meisten nur über diese Funktion das Board besuchen. Ich werd mich mal ransetzen und das ganze checken und korrigieren. Zumindest die Zahl in den Klammern.

Verfasst: 11.03.2003 23:11
von Dr. Love
Umpf, ist mir zu viel Arbeit. Hab auf die Schnelle keine idee für nen Algorithmus, der die Liste der Beiträge seit einem Monat und die Liste der bereits gelesenen abgleicht und die überschüssigen zählt. Das wäre jedenfalls die einfache Lösung. Leider berücksichtigt die nich nicht die Leserechte. So bekommen alle immer die Zahl aller neuen Beiträge angezeigt. Da sie die in internen Foren ja nie lesen können, bleiben die dann für immer in der Zahl enthalten und das macht den Sinn des ganzen hinfällig. man müsste also beim übrig bleibenden rest noch nen check einbauen, ob der User die Beiträge überhaupt lesen darf. Dann erst die Zahl erzeugen. Wenn man das alles immer in der Indexseite macht, hat man definitiv nen Performanceverlust. Außerdem ist es nicht ganz trivial zu coden. Für mich ne Nummer zu aufwendig jedenfalls.

Die Integration in die Suchfunktion läuft letztlich fast genau so. Nur noch etwas aufwendiger. Vielleicht hat ja jemand Lust, sich drum zu kümmern. gerne helfe ich auch, hab ja Semesterferien im Moment. Aber alleine ist mir das zu viel.

Ich schalte jedenfalls bei mir diese Zahl (x) jetzt aus und verzichte auf die "Ungelesene Beiträge" Funktion vorerst. Schade, wäre perfekt.

Verfasst: 12.03.2003 13:54
von Simpson
Stimmt der Code ist nicht nach phpBB2 Coding Richtlinien gezogen worden, er funktioniert aber einwandfrei ohne bekannte Sicherheitslöcher. Ursprünglich war dieser Code übrigens gar nicht zur Veröffentlichung gedacht - ich habe ihn letztlich in eine Modanleitung verfasst.

Der Einbau geht normalerweise recht schnell (maximal 30 Minuten, dann muß man aber schon sehr langsam sein) - wenn man allerdings wirklich erst noch alles auf die phpBB2 Coding Richtlinien umarbeitet dann glaube ich dir zweifelsfrei das es so lang bei dir gedauert hat. Weis natürlich auch nicht wie stark dein Forum schon vorher gemodet war, davon hängt die Einbauzeit natürlich auch ab.

Nun aber zu deinem Problem...
Einschränkungen: Leider harmoniert der Mod schlecht mit der alten Funktion "Beiträge seit dem letzten Besuch anzeigen (x)". Dass die Zahl in den klammern falsch ist, ist ja verschmerzbar, das werde ich auch noch gerade so hinbekommen. Aber dass der Mod nicht gleich einen Link einfügt "Ungelesene Beiträge anzeigen (x)" Finde ich sehr schade. meine Community war jedenfalls sehr irritiert, da die meisten nur über diese Funktion das Board besuchen. Ich werd mich mal ransetzen und das ganze checken und korrigieren. Zumindest die Zahl in den Klammern.
... das ist kein Fehler des Mods, das ist ein Fehler im phpBB2 selber. Wenn man ein phpBB2 Forum besucht und auf "Beiträge seit dem letzten Besuch anzeigen" klickt dann werden die Beitäge angezeigt welche neu sind, leider werden diese Beiträge trotzdessen das man sie anklickt dann nicht aus dieser Liste rausgenommen. Stattdessen wird diese Liste erst aktuallisiert wenn die Sessiontime ausgelaufen ist oder wenn man einen Logout macht.

Die Zahl der ungelesenen Beiträge seit deinem letzten Besuch stimmt übrigens immer mit der Zahl der Beiträge die in der Liste stehen überein - mir ist damit kein Fehler in Zusammenhang mit dem UPItoDB Mod bekannt.

Man hätte natürlich den Mod so schreiben können das er dieses Problem gleich mal mit behebt, da muß ich zustimmen, allerdings ist das wie gesagt anderseits wiederum ein Fehler für sich der eben auch in einem sauberen ungemoddeten phpBB2 besteht. Das heisst eigentlich müßte es dafür extra einen Fix geben. Vielleicht schreibt ja mal irgendwann jemand einen - die Nachfrage danach habe ich auch auf phpbb.com schon öfter gelesen, doch scheint wohl nicht so leicht zu sein dieses Problem zu besänftigen oder es interessiert niemanden wirklich, keine Ahnung.

Verfasst: 12.03.2003 16:05
von Dr. Love
Yo Simpson. Ist mir klar, dass das am phpbb2 liegt. Aber irgendwie behebt der MOD nur das halbe Problem (den wichtigeren Teil). Das ist halt schade. Vielleicht findet sich ja hier noch jemand, der Zeit, Lust und Fähigkeit hat, da mit uns was zu reißen. Bin gerne bereit, meinen Anteil daran zu leisten. Hab mein Forum hier lokal zum testen laufen. Letztlich wäre es halt mega geil, wenn dieser ganze "Seit dem letzten Besuch"-Mist durch "Ungelesene Beiträge" ersetzt werden könnte. Das ist in meinen Augen der größte Schwachpunkt des phpBB2, ehrlich.

Das modden hat auch ewig gedauert, weil ich die ganzen angegebenen Stellen erst mühsam suchen musste, da sie anders sind bei mir. Hab noch das 2.0.0er drauf, da scheint einiges anders zu sein. Falls ich mich doch mal alleine dran traue, werde ich mich jedenfalls hier melden. Anfangen würde ich mit der Zahl in den Klammern. Das ist zur Integration leichter, meiner Meinung nach, weil recht gekapselt.

Ach ja, Simpson, theoretisch was dagegen, wenn ich Deine Anleitung mal etwas korrigiere bezügl. Der Coding-Standards? Wenigstens die richtigen Tabs und die Klammern und Zeilenumbrüche bei if-Anweisungen. Vielleicht hab ich da demnächst Lust drauf, wenn ich mein Forum komplett neu aufsetze. Würde sie Dir dann auch zurück schicken.

Verfasst: 20.03.2003 13:17
von Dr. Love
Hab leider nur Grundkenntnisse in SQL, aber ich denke mal, dass es reichen würde, wenn man ne Abfrage macht, die in etwa so aussieht:

Code: Alles auswählen

$sql = "SELECT 'post_id' FROM phpbb_posts WHERE ";

phpbb_posts.user_id = $userdata['user_id'] //klar
AND
phpbb_posts.post_time > ( now() - 2592000 ) // neuer als 30 Tage
AND
phpbb_topic_read.visit_time < ( phpbb_posts.post_time OR phpbb_posts.post_edit_time ) //noch nicht gelesen
Wenn man die Posts zählt, hat man die Anzahl, wenn man die entsprechenden Topics noch rausfischt, kann man die "Ungelesene Beiträge"-Funktion realisieren. Vielleicht hat ja jemand auf die Schnelle ne Idee, wie man das in SQL umsetzt und ob das überhaupt so möglich ist, oder ob es sich dabei schon um subquerys handelt, die ja bekanntlich in MySQL 3 nicht drin sind.

Yo, ich hoffe, ich bin nicht der einzige, der sich da Gedanken macht. Der einbau in die search.php wäre dann der zweite Schritt. Wenn das so funktioniert, wie ich das da oben ausgeheckt habe, wäre es auch gar nicht so aufwendig, wie ich zuerst dachte.

Verfasst: 20.03.2003 21:44
von Dr. Love
OK, war doch etwas anders aber im Prinzip lag ich gar nicht falsch. Ich hab jetzt mal einen ersten Entwurf für die SQL-Abfrage gemacht. Einschränkung: Ganz neue Topics werden nicht angezeigt, sondern nur neue Posts ind schon gelesenen Topics. Muss ich noch mal schauen, ob ich das alles in eine SQL-Abfrage reinbekomme. Abgesehen davon klappt es jedenfalls.

Code: Alles auswählen

$jetzt_vor_einem_monat = time() - 2592000;

$sql = "SELECT p.topic_id, p.post_id FROM phpbb_topic_read r, phpbb_posts p
	WHERE ( r.user_id = " . $userdata['user_id'] . "
		AND p.post_time > " . $jetzt_vor_einem_monat . "
		AND (p.post_time > r.visit_time OR p.post_edit_time > r.visit_time)
		AND r.topic_id = p.topic_id )		
	ORDER BY p.topic_id DESC, p.post_id DESC";
Die Sortierung habe ich schon mal drin, damit man später verschiedene Sachen damit machen kann. Mal schauen.

Leider mag der die ON-Klausel aus der Dokumentation nicht anwenden, die würde einiges an Speicher einsparen. Aber damit bekomme ich grundsätzlich nen SQL-Fehler. Naja, mal schauen.

Damit sind wir schon sehr nah dran an der gewünschten Funktion. Wenn ich die Einschränkung behoben habe, kann man auf jeden Fall schon mal die Zahl in den Klammern korrigieren. Geil.