summaryrefslogtreecommitdiff
path: root/src/Controllers/Client/RoomController.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/Controllers/Client/RoomController.php')
-rwxr-xr-xsrc/Controllers/Client/RoomController.php45
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,
),
));