tableAlias('u') ->whereGt('u.id', 1) ->whereNotEqual('u.group_id', ForumEnv::get('FEATHER_UNVERIFIED')); if ($username != '') { $numUsers = $numUsers->whereLike('u.username', str_replace('*', '%', $username)); } if ($showGroup > -1) { $numUsers = $numUsers->where('u.group_id', $showGroup); } $numUsers = $numUsers->count('id'); $numUsers = Hooks::fire('model.userlist.fetch_user_count', $numUsers); return $numUsers; } // Generates the dropdown menu containing groups public function dropdownMenu($showGroup) { $showGroup = Hooks::fire('model.userlist.generate_dropdown_menu_start', $showGroup); $dropdownMenu = ''; $result['select'] = ['g_id', 'g_title']; $result = DB::table('groups') ->selectMany($result['select']) ->whereNotEqual('g_id', ForumEnv::get('FEATHER_GUEST')) ->orderBy('g_id'); $result = Hooks::fireDB('model.userlist.generate_dropdown_menu_query', $result); $result = $result->findMany(); foreach ($result as $curGroup) { if ($curGroup['g_id'] == $showGroup) { $dropdownMenu .= "\t\t\t\t\t\t\t".''."\n"; } else { $dropdownMenu .= "\t\t\t\t\t\t\t".''."\n"; } } $dropdownMenu = Hooks::fire('model.userlist.generate_dropdown_menu', $dropdownMenu); return $dropdownMenu; } // Prints the users public function printUsers($username, $startFrom, $sortBy, $sortDir, $showGroup) { $userlistData = []; $username = Hooks::fire('model.userlist.print_users_start', $username, $startFrom, $sortBy, $sortDir, $showGroup); // Retrieve a list of user IDs, LIMIT is (really) expensive so we only fetch the IDs here then later fetch the remaining data $result = DB::table('users') ->select('u.id') ->tableAlias('u') ->whereGt('u.id', 1) ->whereNotEqual('u.group_id', ForumEnv::get('FEATHER_UNVERIFIED')); if ($username != '') { $result = $result->whereLike('u.username', str_replace('*', '%', $username)); } if ($showGroup > -1) { $result = $result->where('u.group_id', $showGroup); } $result = $result->orderBy($sortBy, $sortDir) ->orderByAsc('u.id') ->limit(User::getPref('disp.topics')) ->offset($startFrom); $result = Hooks::fireDB('model.userlist.print_users_query', $result); $result = $result->findMany(); if ($result) { $userIds = []; foreach ($result as $curUserId) { $userIds[] = $curUserId['id']; } // Grab the users $result['select'] = ['u.id', 'u.username', 'u.title', 'u.num_posts', 'u.registered', 'g.g_id', 'g.g_user_title']; $result = DB::table('users') ->tableAlias('u') ->selectMany($result['select']) ->leftOuterJoin('groups', ['g.g_id', '=', 'u.group_id'], 'g') ->whereIn('u.id', $userIds) ->orderBy($sortBy, $sortDir) ->orderByAsc('u.id'); $result = Hooks::fireDB('model.userlist.print_users_grab_query', $result); $result = $result->findMany(); foreach ($result as $userData) { $userlistData[] = $userData; } } $userlistData = Hooks::fire('model.userlist.print_users', $userlistData); return $userlistData; } }