Jeden eigenen Beitrag löschen +Editierhinweis immer anzeigen
Mit diesen Modifizierungen wird zum anderen auch erreicht, dass der Editierhinweis, falls aktiviert, immer angezeigt wird. Bisher war es so, dass dieser nicht angezeigt wurde, wenn der Beitrag der letzte im Thread ist. Auf diese Weise erfolgt auch stets ein Eintrag des Editierdatums in die Datenbank.
Falls zudem Interesse besteht einzustellen, dass im Thread ein editierter Beitrag jeweils im Thread an die letzte Stelle rutscht, indem sein Editierdatum sein neues Erstellungsdatum ist, wäre eine Kombination aus dieser Modifikation und der in diesem Beitrag beschriebenen Modifikation zu empfehlen.
Denn bei der anderen Modifikation war das Problem, dass bei einem editierten Beitrag der Editierhinweis nicht angezeigt wurde, und dadurch auch kein Eintrag in der Datenbank erfolgte, falls ein Beitrag editiert wurde, der an letzter Stelle war.
Das an sich wäre zwar noch kein Problem, nur wenn bereits Beiträge durch Editieren ans Ende des Threads befördert wurden, waren sie für das System nicht am Ende des Threads, weil intern das System den tatsächlich letzten Beitrag (bezogen auf das wirkliche Erstellungsdatum) als den letzten Beitrag im Thread ansieht; und nicht denjenigen Beitrag, der durch Editieren ans Ende verschoben wurde.
Das ist deswegen so, weil (anscheinend) das System intern die Reihenfolge anhand der Beitrag-IDs ansieht. Dadurch kann es passieren, dass man einen Beitrag inmitten des Threads editiert, das System aber nicht das Editierdatum anzeigt und dieser dadurch auch nicht ans Ende des Threads verschoben wird, weil ggf. dieser Beitrag vom System als der letzte Beitrag im Thread angesehen wird.
Mit dieser Modifizierung ist aber diese Funktionalität ausgeschaltet; also ausnahmslos jeder Beitrag erhält bei Editierung seinen Editierhinweis. Dadurch werden auch die Probleme, die bei der im anderen verlinkten Beitrag beschriebenen Modifikation beseitigt.
Ich habe auch noch eine Modifikation veröffentlicht, wie man das Editierdatum völlig abschalten kann, aber dass trotzdem weiterhin entsprechende Editiervermerke in die Datenbank eingetragen werden. Siehe hier: Klick!
Würde man nämlich ggf. den Editierhinweis im Adminbereich abschalten, würden keine Einträge mehr in der Datenbank erfolgen. Für den Fall, dass man die im anderen Beitrag beschriebene Modifizierung anwendet, damit editierte Beiträge jeweils ans Ende des Threads rutschen sollen, würde das nicht funktionieren, falls man den Editierhinweis im ACP abschaltet.
Mir haben diese beiden Modifizierungen übrigens 270 € gekostet, weil ich sie mir von einem PHP-Kundigen habe machen lassen. Die Dokumentation dazu veröffentliche ich hier aber mit seiner Erlaubnis unentgeltlich. Hier seine Dokumentation, die er mir übergab:
posting.php
Finde:
Code: Alles auswählen
trigger_error('CANNOT_EDIT_TIME');
Code: Alles auswählen
//trigger_error('CANNOT_EDIT_TIME');
Code: Alles auswählen
if ($auth->acl_get('m_delete', $forum_id) || ($post_data['poster_id'] == $user->data['user_id'] && $user->data['is_registered'] && $auth->acl_get('f_delete', $forum_id) && $post_id == $post_data['topic_last_post_id']))
Code: Alles auswählen
if ($auth->acl_get('m_delete', $forum_id) || ($post_data['poster_id'] == $user->data['user_id'] && $user->data['is_registered'] && $auth->acl_get('f_delete', $forum_id)))
Code: Alles auswählen
trigger_error('CANNOT_DELETE_REPLIED');
Code: Alles auswählen
//trigger_error('CANNOT_DELETE_REPLIED');
viewtopic.php
Finde:
Code: Alles auswählen
if (($row['post_edit_count'] && $config['display_last_edited']) || $row['post_edit_reason'])
Code: Alles auswählen
if (($row['post_edit_count']) || $row['post_edit_reason'])
Code: Alles auswählen
'U_DELETE' => (!$user->data['is_registered']) ? '' : ((($user->data['user_id'] == $poster_id && $auth->acl_get('f_delete', $forum_id) && $topic_data['topic_last_post_id'] == $row['post_id'] && ($row['post_time'] > time() - ($config['edit_time'] * 60) || !$config['edit_time'])) || $auth->acl_get('m_delete', $forum_id)) ? append_sid("{$phpbb_root_path}posting.$phpEx", "mode=delete&f=$forum_id&p={$row['post_id']}") : ''),
Code: Alles auswählen
'U_DELETE' => (!$user->data['is_registered']) ? '' : ((($user->data['user_id'] == $poster_id && $auth->acl_get('f_delete', $forum_id) ) || $auth->acl_get('m_delete', $forum_id)) ? append_sid("{$phpbb_root_path}posting.$phpEx", "mode=delete&f=$forum_id&p={$row['post_id']}") : ''),
includes/functions_posting.php
Finde:
Code: Alles auswählen
$post_mode = ($data['topic_replies_real'] == 0) ? 'edit_topic' : (($data['topic_first_post_id'] == $data['post_id']) ? 'edit_first_post' : (($data['topic_last_post_id'] == $data['post_id']) ? 'edit_last_post' : 'edit'));
Code: Alles auswählen
$post_mode = ($data['topic_replies_real'] == 0) ? 'edit_topic' : (($data['topic_first_post_id'] == $data['post_id']) ? 'edit' : (($data['topic_last_post_id'] == $data['post_id']) ? 'edit' : 'edit'));
Ich hatte selbst zuvor alle Veränderungen am System aufgespürt und dokumentiert. Meine so entstandene Dokumentation ist aber vollständiger, weil sie absolut alle Veränderungen umfassen; also auch eingefügte Kommentare, auskommentierten nicht mehr gültigen Code, Leerstellen und Tabulatoreinrückungen:
posting.php
Finde:
Code: Alles auswählen
trigger_error('CANNOT_EDIT_TIME');
Code: Alles auswählen
//ORIGINAL LINE: trigger_error('CANNOT_EDIT_TIME');
//trigger_error('CANNOT_EDIT_TIME');
Code: Alles auswählen
if ($auth->acl_get('m_delete', $forum_id) || ($post_data['poster_id'] == $user->data['user_id'] && $user->data['is_registered'] && $auth->acl_get('f_delete', $forum_id) && $post_id == $post_data['topic_last_post_id']))
Code: Alles auswählen
//ORIGINAL LINE: if ($auth->acl_get('m_delete', $forum_id) || ($post_data['poster_id'] == $user->data['user_id'] && $user->data['is_registered'] && $auth->acl_get('f_delete', $forum_id) && $post_id == $post_data['topic_last_post_id']))
if ($auth->acl_get('m_delete', $forum_id) || ($post_data['poster_id'] == $user->data['user_id'] && $user->data['is_registered'] && $auth->acl_get('f_delete', $forum_id)))
Code: Alles auswählen
trigger_error('CANNOT_DELETE_REPLIED');
Code: Alles auswählen
//ORIGINAL LINE: trigger_error('CANNOT_DELETE_REPLIED');
// trigger_error('CANNOT_DELETE_REPLIED');
viewtopic.php
Finde:
Code: Alles auswählen
if (($row['post_edit_count'] && $config['display_last_edited']) || $row['post_edit_reason'])
Code: Alles auswählen
// ORIGINAL LINE: if (($row['post_edit_count'] && $config['display_last_edited']) || $row['post_edit_reason'])
if (($row['post_edit_count']) || $row['post_edit_reason'])
Code: Alles auswählen
'U_DELETE' => (!$user->data['is_registered']) ? '' : ((($user->data['user_id'] == $poster_id && $auth->acl_get('f_delete', $forum_id) && $topic_data['topic_last_post_id'] == $row['post_id'] && ($row['post_time'] > time() - ($config['edit_time'] * 60) || !$config['edit_time'])) || $auth->acl_get('m_delete', $forum_id)) ? append_sid("{$phpbb_root_path}posting.$phpEx", "mode=delete&f=$forum_id&p={$row['post_id']}") : ''),
Code: Alles auswählen
// ORIGINAL LINE: 'U_DELETE' => (!$user->data['is_registered']) ? '' : ((($user->data['user_id'] == $poster_id && $auth->acl_get('f_delete', $forum_id) && $topic_data['topic_last_post_id'] == $row['post_id'] && ($row['post_time'] > time() - ($config['edit_time'] * 60) || !$config['edit_time'])) || $auth->acl_get('m_delete', $forum_id)) ? append_sid("{$phpbb_root_path}posting.$phpEx", "mode=delete&f=$forum_id&p={$row['post_id']}") : ''),
'U_DELETE' => (!$user->data['is_registered']) ? '' : ((($user->data['user_id'] == $poster_id && $auth->acl_get('f_delete', $forum_id) ) || $auth->acl_get('m_delete', $forum_id)) ? append_sid("{$phpbb_root_path}posting.$phpEx", "mode=delete&f=$forum_id&p={$row['post_id']}") : ''),
includes/functions_posting.php
Finde:
Code: Alles auswählen
$post_mode = ($data['topic_replies_real'] == 0) ? 'edit_topic' : (($data['topic_first_post_id'] == $data['post_id']) ? 'edit_first_post' : (($data['topic_last_post_id'] == $data['post_id']) ? 'edit_last_post' : 'edit'));
Code: Alles auswählen
//ORIGINAL LINE: $post_mode = ($data['topic_replies_real'] == 0) ? 'edit_topic' : (($data['topic_first_post_id'] == $data['post_id']) ? 'edit_first_post' : (($data['topic_last_post_id'] == $data['post_id']) ? 'edit_last_post' : 'edit'));
$post_mode = ($data['topic_replies_real'] == 0) ? 'edit_topic' : (($data['topic_first_post_id'] == $data['post_id']) ? 'edit' : (($data['topic_last_post_id'] == $data['post_id']) ? 'edit' : 'edit'));