diff options
| author | Rasmus Fuhse <fuhse@data-quest.de> | 2025-07-08 13:03:54 +0000 |
|---|---|---|
| committer | Rasmus Fuhse <fuhse@data-quest.de> | 2025-07-08 13:03:54 +0000 |
| commit | 7ea5168e7bd00a54987a7da73a1b1836bd25035a (patch) | |
| tree | 983b03b681ca84f6f9588b5d583b26669c50d3d7 /db | |
| parent | 89632c319a4669de1553a2bd01df6c7ce67b1213 (diff) | |
Resolve "Forum 3 - Ungelesene Beiträge werden nicht vom alten Forum übernommen"
Closes #5661
Merge request studip/studip!4323
Diffstat (limited to 'db')
| -rw-r--r-- | db/migrations/6.1.10_forum3_mark_as_read.php | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/db/migrations/6.1.10_forum3_mark_as_read.php b/db/migrations/6.1.10_forum3_mark_as_read.php new file mode 100644 index 0000000..f0c3d86 --- /dev/null +++ b/db/migrations/6.1.10_forum3_mark_as_read.php @@ -0,0 +1,41 @@ +<?php +final class Forum3MarkAsRead extends Migration +{ + public function description() + { + return 'Marks discussions as read when they are older than the last visit in the forum'; + } + + public function up() + { + $statement = DBManager::get()->prepare(" + SELECT `pluginid` + FROM `plugins` + WHERE `pluginclassname` = 'CoreForum' + "); + $statement->execute(); + $pluginid = $statement->fetch(PDO::FETCH_COLUMN); + + if ($pluginid) { + $statement = DBManager::get()->prepare(" + INSERT IGNORE INTO `forum_posting_reads` (`discussion_id`, `user_id`, `read_index`, `chdate`) + SELECT `forum_discussions`.`discussion_id`, + `object_user_visits`.`user_id`, + `object_user_visits`.`visitdate`, + UNIX_TIMESTAMP() + FROM `object_user_visits` + JOIN `forum_topics` ON (`forum_topics`.`range_id` = `object_user_visits`.`object_id`) + JOIN `forum_discussions` ON (`forum_discussions`.`topic_id` = `forum_topics`.`topic_id`) + WHERE `object_user_visits`.`plugin_id` = :pluginid + "); + $statement->execute(['pluginid' => $pluginid]); + } + } + + public function down() + { + DBManager::get()->exec(" + DELETE FROM `forum_posting_reads` + "); + } +} |
