From 9b6a5a9b24f12f835c39824ef6a3281e8e5e22f2 Mon Sep 17 00:00:00 2001 From: Shamim Rezaie Date: Thu, 13 Jun 2019 19:48:43 +1000 Subject: [PATCH] MDL-65786 mod_forum: mark posts as read when they are read --- mod/forum/view.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/mod/forum/view.php b/mod/forum/view.php index 5e489dfb7a8..aee7394b49d 100644 --- a/mod/forum/view.php +++ b/mod/forum/view.php @@ -160,12 +160,27 @@ switch ($forum->get_type()) { $orderpostsby ); echo $discussionsrenderer->render($USER, $post, $replies); + + if (!$CFG->forum_usermarksread && forum_tp_is_tracked($forumrecord, $USER)) { + $postids = array_map(function($post) { + return $post->get_id(); + }, array_merge([$post], array_values($replies))); + forum_tp_mark_posts_read($USER, $postids); + } break; case 'blog': $discussionsrenderer = $rendererfactory->get_blog_discussion_list_renderer($forum); // Blog forums always show discussions newest first. echo $discussionsrenderer->render($USER, $cm, $groupid, $discussionlistvault::SORTORDER_CREATED_DESC, $pageno, $pagesize); + + if (!$CFG->forum_usermarksread && forum_tp_is_tracked($forumrecord, $USER)) { + $discussions = mod_forum_get_discussion_summaries($forum, $USER, $groupid, null, $pageno, $pagesize); + $firstpostids = array_map(function($discussion) { + return $discussion->get_first_post()->get_id(); + }, array_values($discussions)); + forum_tp_mark_posts_read($USER, $firstpostids); + } break; default: $discussionsrenderer = $rendererfactory->get_discussion_list_renderer($forum);