aboutsummaryrefslogtreecommitdiff
path: root/db
diff options
context:
space:
mode:
authorRasmus Fuhse <fuhse@data-quest.de>2025-07-08 13:03:54 +0000
committerRasmus Fuhse <fuhse@data-quest.de>2025-07-08 13:03:54 +0000
commit7ea5168e7bd00a54987a7da73a1b1836bd25035a (patch)
tree983b03b681ca84f6f9588b5d583b26669c50d3d7 /db
parent89632c319a4669de1553a2bd01df6c7ce67b1213 (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.php41
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`
+ ");
+ }
+}