public static function readStatus($user, ...$topicsArrays)
{
if (!$user) {
return [];
}
$topicData = [];
foreach ($topicsArrays as $topics) {
foreach ($topics as $topic) {
$topicData[$topic->topic_id] = $topic->topic_last_post_time;
}
}
$readStatus = self::where('user_id', $user->user_id)->whereIn('topic_id', array_keys($topicData))->select('topic_id', 'mark_time')->get();
$result = [];
foreach ($readStatus as $r) {
if ($r->mark_time >= $topicData[$r->topic_id]) {
$result[$r->topic_id] = true;
}
}
return $result;
}
public function show($id) { $forum = Forum::with("subForums")->findOrFail($id); $this->authorizeView($forum); $pinnedTopics = $forum->topics()->pinned()->orderBy("topic_type", "desc")->recent()->get(); $topics = $forum->topics()->normal()->recent()->paginate(15); $topicReadStatus = TopicTrack::readStatus(Auth::user(), $pinnedTopics, $topics); return view("forum.forums.show", compact("forum", "topics", "pinnedTopics", "topicReadStatus")); }