1<?php
2
3// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the GNU Affero General Public License v3.0.
4// See the LICENCE file in the repository root for full licence text.
5
6namespace App\Http\Controllers\Users;
7
8use App\Http\Controllers\Controller;
9use App\Libraries\User\FindForProfilePage;
10use App\Models\Multiplayer\Room;
11use App\Transformers\UserTransformer;
12
13class MultiplayerController extends Controller
14{
15 public function index($userId, $typeGroup)
16 {
17 $user = FindForProfilePage::find($userId);
18
19 if (!array_key_exists($typeGroup, Room::TYPE_GROUPS)) {
20 return ujs_redirect(route('users.multiplayer.index', ['typeGroup' => 'realtime', 'user' => $userId]));
21 }
22
23 $rawParams = request()->all();
24 $params = [
25 'cursor' => cursor_from_params($rawParams),
26 'limit' => get_int($rawParams['limit'] ?? null),
27 'mode' => 'participated',
28 'sort' => 'ended',
29 'type_group' => $typeGroup,
30 'user' => $user,
31 ];
32
33 $json = Room::responseJson($params);
34
35 if (is_json_request()) {
36 return $json;
37 }
38
39 set_opengraph($user, 'multiplayer');
40
41 $jsonUser = json_item(
42 $user,
43 (new UserTransformer())->setMode($user->playmode),
44 UserTransformer::PROFILE_HEADER_INCLUDES,
45 );
46
47 return ext_view('users.multiplayer.index', compact('json', 'jsonUser', 'user'));
48 }
49}