*/ class HomeController extends Controller { /** * Serves the site index. * @return string */ public function index(): string { // Get the newest user $newestUserId = DB::table('users') ->where('rank_main', '!=', config('rank.banned')) ->where('user_activated', 1) ->where('user_restricted', 0) ->orderBy('user_id', 'desc') ->limit(1) ->get(['user_id']); $newestUser = User::construct($newestUserId ? $newestUserId[0]->user_id : 0); // Get all the currently online users $timeRange = time() - 120; // Create a storage variable $onlineUsers = []; // Get all online users $getOnline = DB::table('users') ->where('user_last_online', '>', $timeRange) ->get(['user_id']); $getOnline = array_column($getOnline, 'user_id'); foreach ($getOnline as $user) { $user = User::construct($user); // Do a second check if (!$user->isOnline()) { continue; } $onlineUsers[$user->id] = $user; } $news = DB::table('news_posts') ->whereNull('deleted_at') ->whereIn('category_id', explode(',', config('general.homepage-news'))) ->limit(3) ->orderBy('created_at', 'desc') ->get(); $news = array_map(function (stdClass $row) { return Post::fromRow($row); }, $news); $userCount = DB::table('users') ->where('rank_main', '!=', config('rank.banned')) ->where('user_activated', 1) ->where('user_restricted', 0) ->count(); $lastRegDate = date_diff( date_create(date('Y-m-d', $newestUser->registered)), date_create(date('Y-m-d')) )->format('%a'); $trashId = config('forum.trash'); $topicCount = DB::table('topics') ->where('forum_id', '!=', $trashId) ->count(); $postCount = DB::table('posts') ->where('forum_id', '!=', $trashId) ->count(); return view('home/index', compact('news', 'userCount', 'newestUser', 'lastRegDate', 'topicCount', 'postCount', 'onlineUsers')); } }