diff options
author | Joas Schilling <coding@schilljs.com> | 2022-05-06 18:23:22 +0300 |
---|---|---|
committer | Joas Schilling <coding@schilljs.com> | 2022-05-06 18:23:22 +0300 |
commit | 9accf68da413fc78d67251fd82e656889f0c7ce7 (patch) | |
tree | d79ef64ea916b8e93981b8435bb3b36680e7e6a9 | |
parent | 5b6db43ac93e993a30236843540cfbe6ae5eba2e (diff) |
Move setSIPEnabled to room servicetechdebt/6235/move-setSIPEnabled
Signed-off-by: Joas Schilling <coding@schilljs.com>
-rw-r--r-- | lib/Controller/RoomController.php | 2 | ||||
-rw-r--r-- | lib/Room.php | 39 | ||||
-rw-r--r-- | lib/Service/RoomService.php | 36 |
3 files changed, 41 insertions, 36 deletions
diff --git a/lib/Controller/RoomController.php b/lib/Controller/RoomController.php index fd11f8ad9..a7ea22572 100644 --- a/lib/Controller/RoomController.php +++ b/lib/Controller/RoomController.php @@ -1660,7 +1660,7 @@ class RoomController extends AEnvironmentAwareController { return new DataResponse([], Http::STATUS_PRECONDITION_FAILED); } - if (!$this->room->setSIPEnabled($state)) { + if (!$this->roomService->setSIPEnabled($this->room, $state)) { return new DataResponse([], Http::STATUS_BAD_REQUEST); } diff --git a/lib/Room.php b/lib/Room.php index 962492481..f69f548ec 100644 --- a/lib/Room.php +++ b/lib/Room.php @@ -267,6 +267,10 @@ class Room { return $this->sipEnabled; } + public function setSIPEnabled(int $sipEnabled): void { + $this->sipEnabled = $sipEnabled; + } + public function getLobbyTimer(): ?\DateTime { $this->validateTimer(); return $this->lobbyTimer; @@ -970,39 +974,4 @@ class Room { return true; } - - public function setSIPEnabled(int $newSipEnabled): bool { - $oldSipEnabled = $this->sipEnabled; - - if ($newSipEnabled === $oldSipEnabled) { - return false; - } - - if (!in_array($this->getType(), [self::TYPE_GROUP, self::TYPE_PUBLIC], true)) { - return false; - } - - if (!in_array($newSipEnabled, [Webinary::SIP_ENABLED_NO_PIN, Webinary::SIP_ENABLED, Webinary::SIP_DISABLED], true)) { - return false; - } - - if (preg_match(self::SIP_INCOMPATIBLE_REGEX, $this->token)) { - return false; - } - - $event = new ModifyRoomEvent($this, 'sipEnabled', $newSipEnabled, $oldSipEnabled); - $this->dispatcher->dispatch(self::EVENT_BEFORE_SIP_ENABLED_SET, $event); - - $update = $this->db->getQueryBuilder(); - $update->update('talk_rooms') - ->set('sip_enabled', $update->createNamedParameter($newSipEnabled, IQueryBuilder::PARAM_INT)) - ->where($update->expr()->eq('id', $update->createNamedParameter($this->getId(), IQueryBuilder::PARAM_INT))); - $update->executeStatement(); - - $this->sipEnabled = $newSipEnabled; - - $this->dispatcher->dispatch(self::EVENT_AFTER_SIP_ENABLED_SET, $event); - - return true; - } } diff --git a/lib/Service/RoomService.php b/lib/Service/RoomService.php index ec3f98ac5..d00a421c2 100644 --- a/lib/Service/RoomService.php +++ b/lib/Service/RoomService.php @@ -31,6 +31,7 @@ use OCA\Talk\Manager; use OCA\Talk\Model\Attendee; use OCA\Talk\Participant; use OCA\Talk\Room; +use OCA\Talk\Webinary; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\EventDispatcher\IEventDispatcher; use OCP\IDBConnection; @@ -216,6 +217,41 @@ class RoomService { return true; } + public function setSIPEnabled(Room $room, int $newSipEnabled): bool { + $oldSipEnabled = $room->getSIPEnabled(); + + if ($newSipEnabled === $oldSipEnabled) { + return false; + } + + if (!in_array($room->getType(), [Room::TYPE_GROUP, Room::TYPE_PUBLIC], true)) { + return false; + } + + if (!in_array($newSipEnabled, [Webinary::SIP_ENABLED_NO_PIN, Webinary::SIP_ENABLED, Webinary::SIP_DISABLED], true)) { + return false; + } + + if (preg_match(Room::SIP_INCOMPATIBLE_REGEX, $room->getToken())) { + return false; + } + + $event = new ModifyRoomEvent($room, 'sipEnabled', $newSipEnabled, $oldSipEnabled); + $this->dispatcher->dispatch(Room::EVENT_BEFORE_SIP_ENABLED_SET, $event); + + $update = $this->db->getQueryBuilder(); + $update->update('talk_rooms') + ->set('sip_enabled', $update->createNamedParameter($newSipEnabled, IQueryBuilder::PARAM_INT)) + ->where($update->expr()->eq('id', $update->createNamedParameter($room->getId(), IQueryBuilder::PARAM_INT))); + $update->executeStatement(); + + $room->setSIPEnabled($newSipEnabled); + + $this->dispatcher->dispatch(Room::EVENT_AFTER_SIP_ENABLED_SET, $event); + + return true; + } + public function verifyPassword(Room $room, string $password): array { $event = new VerifyRoomPasswordEvent($room, $password); $this->dispatcher->dispatch(Room::EVENT_PASSWORD_VERIFY, $event); |