diff --git a/lib/BigBlueButton/API.php b/lib/BigBlueButton/API.php index 1e56b6e..378b2e4 100644 --- a/lib/BigBlueButton/API.php +++ b/lib/BigBlueButton/API.php @@ -106,7 +106,9 @@ class API { $joinMeetingParams->setCreateTime(sprintf("%.0f", $creationTime)); $joinMeetingParams->setJoinViaHtml5(true); $joinMeetingParams->setRedirect(true); - $joinMeetingParams->setGuest($uid === null); + + // set the guest parameter for everyone but moderators to send all users to the waiting room if setting is selected + $joinMeetingParams->setGuest((($room->access === Room::ACCESS_WAITING_ROOM_ALL) && !$isModerator) || $uid === null); $joinMeetingParams->addUserData('bbb_listen_only_mode', $room->getListenOnly()); @@ -206,7 +208,7 @@ class API { $createMeetingParams->addPresentation($presentation->getUrl(), null, $presentation->getFilename()); } - if ($room->access === Room::ACCESS_WAITING_ROOM) { + if ($room->access === Room::ACCESS_WAITING_ROOM || $room->access === Room::ACCESS_WAITING_ROOM_ALL) { $createMeetingParams->setGuestPolicyAskModerator(); } diff --git a/lib/Db/Room.php b/lib/Db/Room.php index 318c3ef..e7881b8 100644 --- a/lib/Db/Room.php +++ b/lib/Db/Room.php @@ -47,10 +47,11 @@ class Room extends Entity implements JsonSerializable { public const ACCESS_PUBLIC = 'public'; public const ACCESS_PASSWORD = 'password'; public const ACCESS_WAITING_ROOM = 'waiting_room'; + public const ACCESS_WAITING_ROOM_ALL = 'waiting_room_all'; public const ACCESS_INTERNAL = 'internal'; public const ACCESS_INTERNAL_RESTRICTED = 'internal_restricted'; - public const ACCESS = [self::ACCESS_PUBLIC, self::ACCESS_PASSWORD, self::ACCESS_WAITING_ROOM, self::ACCESS_INTERNAL, self::ACCESS_INTERNAL_RESTRICTED]; + public const ACCESS = [self::ACCESS_PUBLIC, self::ACCESS_PASSWORD, self::ACCESS_WAITING_ROOM, self::ACCESS_WAITING_ROOM_ALL, self::ACCESS_INTERNAL, self::ACCESS_INTERNAL_RESTRICTED]; public $uid; public $name; diff --git a/ts/Common/Api.ts b/ts/Common/Api.ts index 198f6ce..61c128a 100644 --- a/ts/Common/Api.ts +++ b/ts/Common/Api.ts @@ -12,6 +12,7 @@ export enum Access { Public = 'public', Password = 'password', WaitingRoom = 'waiting_room', + WaitingRoomAll = 'waiting_room_all', Internal = 'internal', InternalRestricted = 'internal_restricted', } diff --git a/ts/Common/Translation.ts b/ts/Common/Translation.ts index 811399a..d80eb5d 100644 --- a/ts/Common/Translation.ts +++ b/ts/Common/Translation.ts @@ -4,6 +4,7 @@ export const AccessOptions = { [Access.Public]: t('bbb', 'Public'), [Access.Password]: t('bbb', 'Internal + Password protection for guests'), [Access.WaitingRoom]: t('bbb', 'Internal + Waiting room for guests'), + [Access.WaitingRoomAll]: t('bbb', 'Waiting room for all users'), [Access.Internal]: t('bbb', 'Internal'), [Access.InternalRestricted]: t('bbb', 'Internal restricted'), };