diff options
| author | Rami Jasim <minecraftmrgold@gmail.com> | 2025-08-07 10:56:43 +0000 |
|---|---|---|
| committer | Jan-Hendrik Willms <tleilax+studip@gmail.com> | 2025-08-07 12:56:43 +0200 |
| commit | 7d1f3b7d30ed66c0470efa50c6f45afbf6484a56 (patch) | |
| tree | 56ec1e465af88eedbeb4ef8df0351c78a5ad10b0 /lib/models/Forum/Posting.php | |
| parent | 9fba384177ffbde939c4d2ccc497bd4dcd6c7180 (diff) | |
fix #5796: CoreForum IconNavigation
Closes #5796
Merge request studip/studip!4420
Diffstat (limited to 'lib/models/Forum/Posting.php')
| -rw-r--r-- | lib/models/Forum/Posting.php | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/lib/models/Forum/Posting.php b/lib/models/Forum/Posting.php index 6961a7b..58b22be 100644 --- a/lib/models/Forum/Posting.php +++ b/lib/models/Forum/Posting.php @@ -75,10 +75,15 @@ class Posting extends SimpleORMap public static function getRecentPosts(array|string $range_ids): array { + $user = User::findCurrent(); + if (!$user) { + return []; + } $single = is_string($range_ids); if ($single) { $range_ids = [$range_ids]; } + $forum_plugin = \PluginManager::getInstance()->getPlugin(\CoreForum::class); $query = "SELECT forum_topics.range_id, @@ -87,16 +92,19 @@ class Posting extends SimpleORMap FROM forum_topics JOIN forum_discussions USING(topic_id) JOIN forum_postings USING(discussion_id) - LEFT JOIN forum_posting_reads AS fp_reads - ON fp_reads.discussion_id = forum_discussions.discussion_id - AND fp_reads.user_id = :user_id + LEFT JOIN object_user_visits AS ouv + ON ouv.object_id = forum_topics.range_id + AND ouv.user_id = :user_id + AND ouv.plugin_id = :plugin_id WHERE forum_topics.range_id IN (:range_ids) AND forum_postings.user_id != :user_id - AND forum_postings.mkdate > IFNULL(fp_reads.read_index, 0) + AND forum_postings.mkdate > IF(ouv.visitdate > :threshold, ouv.visitdate, :threshold) GROUP BY forum_topics.range_id, forum_discussions.discussion_id"; $params = [ ':range_ids' => $range_ids, - ':user_id' => User::findCurrent()?->id, + ':user_id' => $user->id, + ':plugin_id' => $forum_plugin->getPluginId(), + ':threshold' => object_get_visit_threshold(), ]; $res = \DBManager::get()->fetchAll($query, $params); |
