diff options
Diffstat (limited to 'src/Controllers/Client/RoomController.php')
| -rwxr-xr-x | src/Controllers/Client/RoomController.php | 45 |
1 files changed, 42 insertions, 3 deletions
diff --git a/src/Controllers/Client/RoomController.php b/src/Controllers/Client/RoomController.php index ec04a2f..07bad27 100755 --- a/src/Controllers/Client/RoomController.php +++ b/src/Controllers/Client/RoomController.php @@ -75,10 +75,11 @@ class RoomController // create room $roomId = Id::generateRoomId(); Database::getInstance()->query(<<<SQL - insert into rooms (id, name) values (:id, :name) + insert into rooms (id, name, version) values (:id, :name, :version) SQL, [ "id" => $roomId, "name" => $roomAliasName, # "#$roomAliasName:$_ENV[DOMAIN]", + "version" => $roomVersion, ]); $roomCreateEvent = new RoomEvent(new CreateEvent( @@ -198,8 +199,47 @@ class RoomController "servers" => [], ]); } + + #[Route(path: "/_matrix/client/v3/rooms/{roomId}/join", methods: ["POST"])] + public function joinRoomId(Request $request): Response + { + return new JsonResponse(); + } + + #[Route(path: "/_matrix/client/v3/join/{roomIdOrAlias}", methods: ["POST"])] + public function joinRoomIdOrAlias(Request $request): Response + { + $user = User::authenticateWithRequest($request); + $body = json_decode($request->getContent(), true); + RequestValidator::validateJson(); + + $roomIdOrAlias = $request->attributes->get("roomIdOrAlias"); + + $via = $request->query->get("via", ""); + + $reason = $body["reason"] ?? ""; + #$thirdPartySigned + + /* + if (isRoomId()) { + $request->attributes->set("roomId", $roomIdOrAlias); + return $this->joinRoomId($request); + } + */ + + # TODO: db query id or name = value + $roomId = Database::getInstance() + ->query("select id from rooms where id=:value or name=:value", [ + "value" => $roomIdOrAlias, + ]) + ->fetchColumn(); + + return new JsonResponse([ + "room_id" => $roomId, + ]); + } - #[Route(path: "/_matrix/client/v3/{roomId}/messages", methods: ["GET"])] + #[Route(path: "/_matrix/client/v3/rooms/{roomId}/messages", methods: ["GET"])] public function getMessages(Request $request): Response { $user = User::authenticateWithRequest($request); @@ -282,7 +322,6 @@ class RoomController sender: $user->getId(), type: $eventType, unsigned: new UnsignedData( - age: 1234, # TODO membership: MembershipState::JOIN, ), )); |
