*/ class UserController extends Controller { /** * Display the profile of a user. * @param int $id * @return string */ public function profile(int $id = 0): string { $profile = User::construct($id); // If the user id is zero check if there was a namechange if ($profile->id === 0) { // Fetch from username_history $check = DB::table('username_history') ->where('username_old_clean', clean_string($id, true, true)) ->orderBy('change_id', 'desc') ->first(); // Redirect if so if ($check) { return redirect(route('user.profile', $check->user_id)); } } return view('user/profile', compact('profile')); } /** * Resolve user id from username and redirect to profile. * @throws HttpRouteNotFoundException * @param string $id */ public function resolve(string $name): string { $id = DB::table('users') ->where('username_clean', clean_string($name, true, true)) ->value('user_id'); if (!$id) { throw new HttpRouteNotFoundException; } return redirect(route('user.profile', $id)); } /** * Last listened to. * @param int $id * @throws HttpRouteNotFoundException * @return string */ public function nowPlaying(int $id): string { $user = User::construct($id); if ($user->id === 0) { throw new HttpRouteNotFoundException; } $user->updateLastTrack(); $artist_url = 'http://last.fm/music/' . urlencode($user->musicArtist); $track_url = $artist_url . '/_/' . urlencode($user->musicTrack); return $this->json([ 'track' => $user->musicTrack, 'track_url' => $track_url, 'artist' => $user->musicArtist, 'artist_url' => $artist_url, 'listening' => $user->musicListening, ]); } /** * Display the memberlist. * @param int $rank * @throws HttpMethodNotAllowedException * @return string */ public function members(int $rank = null): string { if (!CurrentSession::$user->activated) { throw new HttpMethodNotAllowedException; } // Get all ranks $getRanks = DB::table('ranks') ->get(['rank_id']); // Define variable $ranks = []; // Add the empty rank $ranks[0] = Rank::construct(0); // Reorder shit foreach ($getRanks as $sortRank) { $ranks[$sortRank->rank_id] = Rank::construct($sortRank->rank_id); } // Get the active rank $rank = array_key_exists($rank, $ranks) ? $rank : ($rank ? 0 : intval(config("rank.regular"))); return view('user/members', compact('ranks', 'rank')); } /** * Report a user. * @param int $id */ public function report(int $id = 0): string { return view('user/report'); } }