aboutsummaryrefslogtreecommitdiff
path: root/lib/models/Forum/Posting.php
diff options
context:
space:
mode:
authorRami Jasim <minecraftmrgold@gmail.com>2025-08-07 10:56:43 +0000
committerJan-Hendrik Willms <tleilax+studip@gmail.com>2025-08-07 12:56:43 +0200
commit7d1f3b7d30ed66c0470efa50c6f45afbf6484a56 (patch)
tree56ec1e465af88eedbeb4ef8df0351c78a5ad10b0 /lib/models/Forum/Posting.php
parent9fba384177ffbde939c4d2ccc497bd4dcd6c7180 (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.php18
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);