Editierungen überwachen und Löschmöglichkeit eigene Beiträge

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
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.
Benutzeravatar
dieweltist
Mitglied
Beiträge: 1966
Registriert: 25.07.2006 13:28
Wohnort: Thüringen
Kontaktdaten:

Editierungen überwachen und Löschmöglichkeit eigene Beiträge

Beitrag von dieweltist »

Mit dem Editieren habe ich mit jedem Forensystem mein großes Problem, weil ich der Meinung bin, dass es unverantwortlich ist, den Usern einfach zu vertrauen, dass durch Editieren keine unakzeptablen Inhalte nachträglich in Beiträge eingefügt werden.

Begrenzt man die Editiermöglichkeit bspw. auf eine Stunde, hat das (auch) den Nachteil, dass User nach Ablauf dieser Zeit ggf. die Beiträge bzw. den Text in ihren Beiträgen nicht mehr löschen können. Ich denke, dass das nicht unbedingt eine akzeptable Lösung ist.

Grundsätzlich sehe ich zwei Möglichkeiten: Entweder man könnte editierte Beiträge geordnet nach Editierdatum auflisten, oder das System würde das Editierdatum jeweils als neues Erstellungsdatum in die Datenbank eintragen. Der Beitrag würde bei jedem Editieren ans Ende des Threads rutschen. Letzte Möglichkeit wäre wahrscheinlich einfacher durch eine Code-Änderung umzusetzen und alle User würden dadurch über die Editierung in Kenntnis gesetzt werden.

Natürlich wird dadurch der Diskussionsverlauf erheblich gestört. Das wird er aber bei Editierungen sowieso. Also, wo ein Forum für Diskussionen geeignet sein soll, wird der Admin die Editiermöglichkeit wahrscheinlich sowieso abschalten oder zumindest zeitlich sehr begrenzen. Soll es aber in einem Forum (mehr) um die Präsentation von Meinungen bzw. Inhalten gehen, bzw. wo Threads dazu bestimmt sind, dass User jeweils ausschließlich auf den jeweiligen Basisbeitrag antworten sollen, wäre eine Veränderung der Reihenfolge der Antworten belanglos.

In solchen (Unter-) Foren wäre es auch sehr sinnvoll, wenn man als Admin einstellen könnte, dass User ihre Beiträge unabhängig von der Editierrechteeinstellung und der Position im Thread bedingungslos löschen könnten.

Nachtrag: Vor kurzem hatte ich für das UNB gespendet, weil man mir dort schon oft mit Tipps für eine Code-Änderung geholfen hatte. Siehe die Spendenliste dort: Klick! Ggf. würde ich auch gern für das phpBB-Team spenden. Aber wie macht man das? Ich konnte leider nichts finden, außer der Angabe des Bankkontos im Impressum. Ich nehme an, dass man Spenden auf dieses überweist.
Benutzeravatar
redbull254
Ehemaliges Teammitglied
Beiträge: 10379
Registriert: 05.01.2006 13:01
Kontaktdaten:

Beitrag von redbull254 »

Hallo, dieweltist


Mit dem Editieren habe ich mit jedem Forensystem mein großes Problem, weil ich der Meinung bin, dass es unverantwortlich ist, den Usern einfach zu vertrauen, dass durch Editieren keine unakzeptablen Inhalte nachträglich in Beiträge eingefügt werden.
Hast Du auch ein eigenes Forum ? :roll:
Beste Grüße
Walter
Benutzeravatar
dieweltist
Mitglied
Beiträge: 1966
Registriert: 25.07.2006 13:28
Wohnort: Thüringen
Kontaktdaten:

Beitrag von dieweltist »

Mein jetziges (altes) Forum und meine Homepage, siehe meine Signatur! Auch habe ich mein Profil aktualisiert, sodass der Link zu meinem neuen phpBB3 Forum führt. Es ist aber noch im Versuchsstadium.
Benutzeravatar
dieweltist
Mitglied
Beiträge: 1966
Registriert: 25.07.2006 13:28
Wohnort: Thüringen
Kontaktdaten:

Beitrag von dieweltist »

Hiermit veröffentliche ich hiermit meine erste (und möglicherweise auch letzte) "Modifikation".

Ich schaute in die Datenbank unter >[Präfix_]posts - Anzeigen< und sah, dass das Editierdatum in der Spalte post_time eingetragen wird, und das Editierdatum unter post_edit_time. Als jemand der keine Ahnung von PHP hat, dachte ich mir, dass man vielleicht nur sämtliche post_edit_time durch post_time ersetzen müsste, damit dadurch beim Editieren das Editierdatum im Beitrag als (scheinbares) Erstellungsdatum im Beitrag erscheint und dadurch als letzter Beitrag erscheint.

Nachdem ich in der Datei functions_posting.php (Ordner /includes/) das ersetzte, habe ich jetzt dieses gewünschte Verhalten so einigermaßen. Dadurch wandert jeder editierte Beitrag ans Ende des Treads. Aber bei der Übersichtsseite, wenn man eine Kategorie bzw. ein Forum aufruft, wird das aber jeweils rechts bei der Anzeige des letzten Beitrages ignoriert. Dort erscheint als letzter Beitrag nämlich nicht der frisch editierte Beitrag, sondern derjenige, der in Wirklichkeit zuletzt erstellt wurde. Und wenn ich die letzten aktiven Themen der letzten x Tage anzeigen lasse, ist die Anzeige des letzten Beitrages auch so. Und wenn ich nach Beiträgen suche, und die Suchergebnisse als Themen wähle auch.

Diese Anzeige des letzten Beitrages beeinflusst auch die Reihenfolge bei den zuvor genannten Ansichten. Die Reihenfolge wird dadurch so angezeigt, dass das Thema bzw. der Thread oben ist, wo dieser Anzeige des letzten Beitrages nach der letzte Beitrag erstellt wurde, also nach dem tatsächlichen Erstellungsdatum. Wenn man aber Suchergebnisse als Beiträge auflistet, werden diese so aufgelistet, dass die Reihenfolge jeweils von den Angaben des Erstellungsdatums in den Beiträgen abhängt, die durch die Editierungen verändert wurden.

Wenn man einen Beitrag editierte, und dieser dadurch im Thread nach ganz unten rutschte; wird der uneditierte Beitrag darüber (ohne Editierhinweis) in der Forenübersicht nicht nur (in der Forenübersicht) als letzter Beitrag angezeigt, sondern auch sonst vom System wie ein letzter Beitrag behandelt. Wenn dieser editiert wird, erscheint deswegen kein (ggf. erneuter) Editierhinweis und er kann auch vom User (falls er das Recht dazu hat) noch gelöscht werden. Das gilt auch, wenn sich mehrere editierte unter einem nichteditierten Beitrag (ohne Editierhinweis) befinden.

Aber bei allen editierten Beiträgen, die unter dem letzten nicht editierten Beitrag sind, ist es natürlich umgekehrt. Weil das System keinen von diesen als letzten Beitrag ansieht, wird jede Editierung dort gezählt (Anzahl wird im Editierhinweis angezeigt), und keiner dieser Beiträge kann vom erstellenden registrierten Mitglied gelöscht werden.

Diese Änderung in der Datei bewirkt aber auch, dass das Editierdatum nicht mehr angezeigt wird. Dieses wird ja als Erstellungsbeitrag angezeigt. Stattdessen erscheint dieser Hinweis: "Zuletzt geändert von Testuser am Do 1. Jan 1970, 01:00, insgesamt [x]-mal geändert."

Was diese Änderung in den beiden anderen Dateien des Systems bewirken würde, habe ich noch nicht ausprobiert. Vielleicht könnte jemand, der Ahnung von PHP hat diesbezüglich noch eine ergänzende Anleitung geben, wie man diesen "Mod" vielleicht noch besser gestalten könnte.


Was nutzt mir diese Änderung, um festzustellen, welche Beiträge in der letzten Zeit geändert wurden? Zum einen kann ich das nur feststellen, wenn ich nach allen Beiträgen suche mit der erweiterten Suche. Dazu suche ich nach dem Wildcat *, stelle einen bestimmten Zeitraum ein, bspw. die letzten 7 Tage, um den Server nicht zu überlasten, und wähle die Option, dass das Suchergebnis als Beiträge angezeigt werden soll. Dabei werden aber auch die nicht editierten Beiträge aufgelistet.

Dabei könnte dieses in den FAQ des Boards beschriebene Problem auftreten:
Warum bekomme ich bei der Suche eine leere Seite?

Deine Suche lieferte zu viele Ergebnisse, somit konnte der Webserver sie nicht verarbeiten. Benutze die erweiterte Suche und gib spezifischere Suchbegriffe ein oder beschränke die Suche auf verschiedene Unterforen.
Ein weiteres Problem ist, dass dabei nur die in der Datenbank eingetragenen Editierungen berücksichtigt werden von der Suche, also nur Beiträge mit Editierhinweis bei der Auflistung entsprechend so geordnet sind, dass die zuletzt editierten Beiträge entsprechend weit oben bei den Suchergebnissen sind.

Und das ist immer bei denjenigen Beiträgen, die editiert wurden, als sie in einem Thread (noch) jeweils an letzter Stelle waren. Wie könnte man das ändern?; also dass der Edtierhinweis stets angezeigt wird. Danke im voraus!

Edit: Inzwischen habe ich eine Modifikation, die dafür sorgt, dass bei jeder Editierung der Editierhinweis angezeigt wird (falls aktiviert). Klick! Bisher war es so, dass beim Editieren des letzten Beitrages, bzw. ggf. des Beitrages, den das System als den letzten Beitrag ansieht, obwohl dieser ggf. nicht am Schluss des Threads ist, der Edtierhinweis nicht angezeigt wurde, was Probleme mit sich brachte.

Nachtrag: Existiert auf dieser Plattform eine Spendenliste? Wäre doch ganz nützlich, oder?
Zuletzt geändert von dieweltist am 10.07.2007 21:53, insgesamt 1-mal geändert.
Benutzeravatar
redbull254
Ehemaliges Teammitglied
Beiträge: 10379
Registriert: 05.01.2006 13:01
Kontaktdaten:

Beitrag von redbull254 »

Hallo, erstmal :wink:
Hiermit veröffentliche ich hiermit meine erste (und möglicherweise auch letzte) "Modifikation".
Und wo ist der Mod (oder die Mod) jetzt ? Ich sehe nur neue Fragen ? Oder habe ich bei dem vielen Text jetzt etwas verpasst? :o
Beste Grüße
Walter
Benutzeravatar
dieweltist
Mitglied
Beiträge: 1966
Registriert: 25.07.2006 13:28
Wohnort: Thüringen
Kontaktdaten:

Beitrag von dieweltist »

Ach nee; Du machst Dich doch nur lustig über meinen "Mod". :grin:

Oder Du hast anscheinend wirklich die ersten beiden (größeren) Absätze nicht gelesen. Dort steht nämlich geschrieben, dass ich in der Datei functions_posting.php (Ordner /includes/) die Zeichenfolge post_edit_time durch post_time ersetzte. Das ist mein "Mod". :D

Übrigens kann man nur dann alle Beiträge mit der erweiterten Suche auflisten, indem man (nur) nach dem Wildcat * sucht, wenn das Board im Admincenter auf 'Fulltext native' eingestellt ist.

Edit: Inzwischen habe ich eine Modifikation, die dafür sorgt, dass bei jeder Editierung der Editierhinweis angezeigt wird (falls aktiviert). Klick! Bisher war es so, dass beim Editieren des letzten Beitrages, bzw. ggf. des Beitrages, den das System als den letzten Beitrag ansieht, obwohl dieser ggf. nicht am Schluss des Threads ist, der Edtierhinweis nicht angezeigt wurde, was Probleme mit sich brachte.
Benutzeravatar
dieweltist
Mitglied
Beiträge: 1966
Registriert: 25.07.2006 13:28
Wohnort: Thüringen
Kontaktdaten:

Beitrag von dieweltist »

Bei dieser Modifizierung ist der Nachteil, dass das Editierdatum nicht mehr angezeigt wird und stattdessen ein falsches Datum (von 1970) erscheint, falls man die Anzeige des Editierdatums nicht mit dieser Modifikation von mir ganz abschaltet:

Die Anzeige des Editierhinweises abschalten phpBB.de - Phpbb.de

Besser ist es, wenn man die zu ändernde Zeile kopiert und diese darunter einfügt. Und dann bei einer von beiden Zeilen ersetzt man dann 'post_edit_time' durch 'post_time'. Dadurch wird erreicht, dass das Editierdatum nicht nur als neues Erstelldatum erscheint, sondern auch wie bisher als Editierdatum.

Diese Modifizierung habe ich jetzt bei der Version RC5 ausprobiert, sie funktioniert. Ob diese dann auch noch für alle weiteren Versionen noch gültig ist, kann ich nicht garantieren.

Beim Testen beachten, dass nur dann der Editiervermerk angezeigt wird, und diese auch in der Datenbank eingetragen wird, wenn der editierte Beitrag nicht der letzte im Thread ist, wodurch diese Modifizierung jeweils wirksam sein kann.

Durch Editierung verschiebt sich der editierte Beitrag ans Ende des Threads, wodurch dieser aber für das System weiterhin nicht der letzte Beitrag ist. Wenn man dann einen Beitrag inmitten des Threads editiert, kann es sein, dass der Editiervermerk nicht angezeigt wird, weil dieser ggf. vom System immer noch als der letzte Beitrag im Thread angesehen wird, obwohl er durch die Verschiebung anderer Beiträge nicht mehr der letzte Beitrag ist.

Wie man dieses Verhalten abstellen kann, dass also ausnahmslos bei jedem Beitrag der Editiervermerk angezeigt wird, bzw. die Editierung in der Datenbank eingetragen wird, siehe weiter oben im Thread! Oder einfach hier: Klick!

Suche in der Datei /includes/functions_posting.php:

Code: Alles auswählen

					'post_edit_time'	=> $current_time,
Ersetze mit:

Code: Alles auswählen

					'post_time'	=> $current_time,
					'post_edit_time'	=> $current_time,
Oder einfach mit dem Editor Vim nachfolgenden Ersetzungsbefehl ausführen!

Code: Alles auswählen

:%s#\(\s*\)'post_edit_time'\(\s*\)=> $current_time,#\1'post_time'\2=> $current_time,\r&
Zuletzt geändert von dieweltist am 12.08.2008 09:44, insgesamt 2-mal geändert.
Benutzeravatar
dieweltist
Mitglied
Beiträge: 1966
Registriert: 25.07.2006 13:28
Wohnort: Thüringen
Kontaktdaten:

Beitrag von dieweltist »

Ich habe eben gesehen, dass bei der neuesten Version 3.0.1 im Moderationsbereich eine Liste editierter Beiträge ist. Das ist zwar mehr als notwendig, aber leider müsste man dann jeden editierten Beitrag einzeln im Thread herbeisuchen, denn es gibt dort nur einen Link zu dem betreffenden Thema, nicht aber zu dem editierten Beitrag. Ich finde das sehr schade.

Deswegen bleibe ich bei meiner im vorigen Beitrag vorgeschlagenen Notlösung, die zudem auch noch den Vorteil hat, dass jeder User sofort sieht, welcher Beitrag editiert wurde, weil dieser jeweils ans Ende des Threads rutscht und jeweils ganz oben aufgelistet wird, wenn man nach Beiträgen sucht.

Nebenbei möchte ich auch erwähnen, dass, wenn ein Moderator in seinem Forum seinen eigenen Beitrag editiert, dass dann dieser Beitrag nur dann ans Ende das Threads wandert, wenn er kein Recht hat, fremde Beiträge in diesem Forum zu ändern; oder wenn er eine Begündung angibt.

Das ist deswegen so, weil sonst das als Editieren eines fremden Beitrages vom System angesehen wird, wordurch ggf. kein Eintrag des Änderungsdatums in die Datenbank erfolgt. Aber ggf. muss das auch nicht sein, dass ein Moderator die Berechtigung hat, fremde Beiträge zu editieren.

Eine weitere Möglichkeit Editierungen zu überwachen, ist, indem man "Kann Beiträge ohne Freigabe erstellen" bei den Forenrechten aller Foren auf nein oder nie einstellt. Auch Editierungen müssen dadurch zweckmäßiger Weise jeweils genehmigt werden.
Benutzeravatar
dieweltist
Mitglied
Beiträge: 1966
Registriert: 25.07.2006 13:28
Wohnort: Thüringen
Kontaktdaten:

Beitrag von dieweltist »

Indem ich nachfolgende Änderung machte, wird bei Editierung das aktuelle Datum auch als neues Erstellungsdatum gesetzt. Suche in der Datei /includes/functions_posting.php:

Code: Alles auswählen

					'post_edit_time'	=> $current_time,
Ersetze mit:

Code: Alles auswählen

					'post_time'	=> $current_time,
					'post_edit_time'	=> $current_time,
Oder einfach mit dem Editor Vim nachfolgenden Ersetzungsbefehl ausführen!

Code: Alles auswählen

:%s#\(\s*\)'post_edit_time'\(\s*\)=> $current_time,#\1'post_time'\2=> $current_time,\r&
Leider wird dabei aber das Datum nicht in der Datenbank unter >topics - topic_time< geändert; was zur Folge hat, dass in der Forumsübersicht noch das alte Erstellungsdatum des Beitrages angezeigt wird.

Und wenn ich das Suchergebnis als Beiträge anzeigen lasse, werden diese nach dem Editierdatum sortiert. Wenn ich es aber als Theman anzeige, werden diese nach dem alten Erstellungsdatum sortiert. Um das abzustellen habe an dieser Stelle einen weiteren Eintrag vorgenommen, nämlich

Code: Alles auswählen

'topic_time'	=> $current_time,
Leider funktioniert das aber nicht und ich erhalte nachfolgende Fehlerseite. Vielleicht kann mir jemand bitte sagen, was ich noch am Code verändern muss.
Allgemeiner Fehler
SQL ERROR [ mysqli ]

Unknown column 'topic_time' in 'field list' [1054]

SQL

UPDATE p_posts SET post_time = 1214247347, topic_time = 1214247347, post_edit_time = 1214247347, post_edit_reason = 'geändert', post_edit_user = 2, forum_id = 2, poster_id = 2, icon_id = 5, post_approved = '1', enable_bbcode = 1, enable_smilies = 1, enable_magic_url = 1, enable_sig = 1, post_username = '', post_subject = 'Herzlich willkommen in diesem Forum!', post_checksum = '5c169162cc884d2f52b65b3d6eaa7c1d', post_attachment = 0, bbcode_bitfield = 'Ug==', bbcode_uid = 'xgmhrl23', post_edit_locked = 0 WHERE post_id = 1

BACKTRACE

FILE: includes/db/mysqli.php
LINE: 143
CALL: dbal->sql_error()

FILE: includes/functions_posting.php
LINE: 1935
CALL: dbal_mysqli->sql_query()

FILE: posting.php
LINE: 1002
CALL: submit_post()
Zuletzt geändert von dieweltist am 12.08.2008 09:45, insgesamt 3-mal geändert.
Boecki91
Ehemaliges Teammitglied
Beiträge: 4744
Registriert: 18.06.2006 15:21

Beitrag von Boecki91 »

Die Zeile 'topic_time' existiert nicht also kannst du die auch nicht hinzu fügen.

Wenn du deine Anliegen eventuell auf die wichtigsten Punkte verkürzen könntest, ist nicht böse gemeint aber ich will keine Absätze lesen um den Kern des Problems zu erkennen.
Standart: Am besten mit beiden Beinen auf dem Boden
Standardmäßig antworte ich nicht auf PMs
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“