From 889ed1b305bd71c4fa583ae4eda18baa9bc84f59 Mon Sep 17 00:00:00 2001 From: Samuel Weirich <4281791+SamuelWei@users.noreply.github.com> Date: Mon, 9 Nov 2026 16:51:30 +0100 Subject: [PATCH 1/2] Deprecate defaultLayout --- src/Parameters/JoinMeetingParameters.php | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/Parameters/JoinMeetingParameters.php b/src/Parameters/JoinMeetingParameters.php index dfc97f22..49d09e6d 100644 --- a/src/Parameters/JoinMeetingParameters.php +++ b/src/Parameters/JoinMeetingParameters.php @@ -38,8 +38,6 @@ * @method $this setUserID(string $userID) * @method string|null getWebVoiceConf() * @method $this setWebVoiceConf(string $webVoiceConf) - * @method string|null getDefaultLayout() - * @method $this setDefaultLayout(string $defaultLayout) * @method string|null getAvatarURL() * @method $this setAvatarURL(string $avatarURL) * @method bool|null isRedirect() @@ -86,4 +84,22 @@ final class JoinMeetingParameters extends UserDataParameters public function __construct(protected string $meetingID, protected string $fullName, protected Role $role) { } + + /** + * @deprecated Removed in BBB 3.0 — use addUserData('bbb_default_layout', ...) instead; will be removed in 8.0. + */ + public function getDefaultLayout(): ?string + { + return $this->defaultLayout; + } + + /** + * @deprecated Removed in BBB 3.0 — use addUserData('bbb_default_layout', ...) instead; will be removed in 8.0. + */ + public function setDefaultLayout(string $defaultLayout): self + { + $this->defaultLayout = $defaultLayout; + + return $this; + } } From d707bf6da7f18fa2191e655bb515e97828af5165 Mon Sep 17 00:00:00 2001 From: Samuel Weirich <4281791+SamuelWei@users.noreply.github.com> Date: Mon, 9 Nov 2026 17:09:32 +0100 Subject: [PATCH 2/2] Deprecate features not supported by BBB 3.0 --- src/Enum/ApiMethod.php | 1 + src/Enum/Feature.php | 1 + src/Enum/MeetingLayout.php | 7 ++++++- tests/common/TestCase.php | 11 +++++------ tests/unit/Parameters/CreateMeetingParametersTest.php | 4 ++-- 5 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/Enum/ApiMethod.php b/src/Enum/ApiMethod.php index e8b9e79a..204e43d5 100644 --- a/src/Enum/ApiMethod.php +++ b/src/Enum/ApiMethod.php @@ -29,6 +29,7 @@ enum ApiMethod: string { case CREATE = 'create'; case JOIN = 'join'; + /** @deprecated Removed in BBB 3.0; will be removed in 8.0. */ case ENTER = 'enter'; case END = 'end'; case IS_MEETING_RUNNING = 'isMeetingRunning'; diff --git a/src/Enum/Feature.php b/src/Enum/Feature.php index 05be5571..3b1ba637 100644 --- a/src/Enum/Feature.php +++ b/src/Enum/Feature.php @@ -28,6 +28,7 @@ enum Feature: string { case BREAKOUT_ROOMS = 'breakoutRooms'; + /** @deprecated Removed as a disabledFeatures option in BBB 3.0 — use Feature::LIVE_TRANSCRIPTION instead; will be removed in 8.0. */ case CAPTIONS = 'captions'; case CHAT = 'chat'; case PRIVATE_CHAT = 'privateChat'; diff --git a/src/Enum/MeetingLayout.php b/src/Enum/MeetingLayout.php index b359459d..bc36450f 100644 --- a/src/Enum/MeetingLayout.php +++ b/src/Enum/MeetingLayout.php @@ -33,7 +33,12 @@ enum MeetingLayout: string case PRESENTATION_FOCUS = 'PRESENTATION_FOCUS'; case VIDEO_FOCUS = 'VIDEO_FOCUS'; case CAMERAS_ONLY = 'CAMERAS_ONLY'; - case PARTICIPANTS_CHAT_ONLY = 'PARTICIPANTS_CHAT_ONLY'; + case PARTICIPANTS_AND_CHAT_ONLY = 'PARTICIPANTS_AND_CHAT_ONLY'; case PRESENTATION_ONLY = 'PRESENTATION_ONLY'; case MEDIA_ONLY = 'MEDIA_ONLY'; + + /** + * @deprecated BC only. Use MeetingLayout::PARTICIPANTS_AND_CHAT_ONLY instead; will be removed in 8.0. + */ + public const PARTICIPANTS_CHAT_ONLY = self::PARTICIPANTS_AND_CHAT_ONLY; } diff --git a/tests/common/TestCase.php b/tests/common/TestCase.php index 1300cb46..58f07b2c 100644 --- a/tests/common/TestCase.php +++ b/tests/common/TestCase.php @@ -102,18 +102,17 @@ protected function generateCreateParams(): array 'endWhenNoModerator' => $this->faker->boolean(50), 'endWhenNoModeratorDelayInMinutes' => $this->faker->numberBetween(1, 100), 'meetingLayout' => $this->faker->randomElement([ - MeetingLayout::CUSTOM_LAYOUT, - MeetingLayout::SMART_LAYOUT, - MeetingLayout::PRESENTATION_FOCUS, - MeetingLayout::VIDEO_FOCUS, + MeetingLayout::UNIFIED_LAYOUT, + MeetingLayout::CAMERAS_ONLY, + MeetingLayout::PARTICIPANTS_AND_CHAT_ONLY, + MeetingLayout::PRESENTATION_ONLY, + MeetingLayout::MEDIA_ONLY, ]), 'learningDashboardCleanupDelayInMinutes' => $this->faker->numberBetween(1, 100), - 'breakoutRoomsEnabled' => $this->faker->boolean(50), 'breakoutRoomsPrivateChatEnabled' => $this->faker->boolean(50), 'meetingEndedURL' => $this->faker->url, 'breakoutRoomsRecord' => $this->faker->boolean(50), 'allowRequestsWithoutSession' => $this->faker->boolean(50), - 'virtualBackgroundsDisabled' => $this->faker->boolean(50), 'userCameraCap' => $this->faker->numberBetween(1, 5), 'groups' => $this->generateBreakoutRoomsGroups(), ]; diff --git a/tests/unit/Parameters/CreateMeetingParametersTest.php b/tests/unit/Parameters/CreateMeetingParametersTest.php index f64933de..dfa3c2ea 100644 --- a/tests/unit/Parameters/CreateMeetingParametersTest.php +++ b/tests/unit/Parameters/CreateMeetingParametersTest.php @@ -138,9 +138,9 @@ public function testDisabledFeatures(): void $this->assertStringNotContainsString('disabledFeatures=', $params); // Test with multiple disabled features - $createMeetingParams->setDisabledFeatures([Feature::CHAT, Feature::POLLS, Feature::CAPTIONS]); + $createMeetingParams->setDisabledFeatures([Feature::CHAT, Feature::POLLS, Feature::LIVE_TRANSCRIPTION]); $params = urldecode($createMeetingParams->getHTTPQuery()); - $this->assertStringContainsString('disabledFeatures=chat,polls,captions', $params); + $this->assertStringContainsString('disabledFeatures=chat,polls,liveTranscription', $params); // Test empty disabled features exclude $createMeetingParams->setDisabledFeaturesExclude([]);