*/ class UserController extends Controller { /** * Display the profile of a user. * * @param mixed $id The user ID. * * @return bool|string The profile page. */ public function profile($id = 0) { global $currentUser; // Get the user's context $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', Utils::cleanString($id, true, true)) ->orderBy('change_id', 'desc') ->get(); // Redirect if so if ($check) { $message = "This user changed their username! Redirecting you to their new profile."; $redirect = Router::route('user.profile', $check[0]->user_id); Template::vars(compact('message', 'redirect')); // Print page contents return Template::render('global/information'); } } // Set parse variables Template::vars(compact('profile')); // Print page contents return Template::render('main/profile'); } /** * Display the memberlist. * * @param int $rank Optional rank ID. * * @return bool|string The memberlist. */ public function members($rank = null) { global $currentUser; // Check permission if (!$currentUser->permission(Site::VIEW_MEMBERLIST)) { return Template::render('global/restricted'); } // 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 : 2); // Get members per page $membersPerPage = Config::get('members_per_page'); // Set parse variables Template::vars(compact('ranks', 'rank', 'membersPerPage')); // Render the template return Template::render('main/memberlist'); } /** * Get the notification JSON object for the currently authenticated user. * * @return string The JSON object. */ public function notifications() { // TODO: add friend on/offline messages global $currentUser; // Set json content type header('Content-Type: application/json; charset=utf-8'); return json_encode( $currentUser->notifications(), JSON_FORCE_OBJECT | JSON_NUMERIC_CHECK | JSON_BIGINT_AS_STRING ); } /** * Mark a notification as read. * * @param int The ID of the notification. * * @return string Not entirely set on this one yet but 1 for success and 0 for fail. */ public function markNotification($id = 0) { global $currentUser; // Check permission if ($currentUser->permission(Site::DEACTIVATED)) { return '0'; } // Create the notification object $alert = new Notification($id); // Verify that the currently authed user is the one this alert is for if ($alert->user !== $currentUser->id) { return '0'; } // Toggle the read status and save $alert->toggleRead(); $alert->save(); return '1'; } }