Skip to content

Commit 1fc1ab0

Browse files
committed
Complete API features from BigBlueButton 2.4 with create and join.
1 parent 4e9384e commit 1fc1ab0

File tree

6 files changed

+100
-16
lines changed

6 files changed

+100
-16
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,6 @@ composer.lock
88
/nbproject
99

1010
# PHP CS Fixer cache file
11-
.php_cs.cache
11+
.php-cs-fixer.cache
12+
13+
.phpunit.result.cache

src/Enum/Role.php

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
3+
/*
4+
* BigBlueButton open source conferencing system - https://www.bigbluebutton.org/.
5+
*
6+
* Copyright (c) 2016-2022 BigBlueButton Inc. and by respective authors (see below).
7+
*
8+
* This program is free software; you can redistribute it and/or modify it under the
9+
* terms of the GNU Lesser General Public License as published by the Free Software
10+
* Foundation; either version 3.0 of the License, or (at your option) any later
11+
* version.
12+
*
13+
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
14+
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
15+
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
16+
*
17+
* You should have received a copy of the GNU Lesser General Public License along
18+
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
19+
*/
20+
21+
namespace BigBlueButton\Enum;
22+
23+
use MabeEnum\Enum;
24+
25+
class Role extends Enum
26+
{
27+
public const MODERATOR = 'MODERATOR';
28+
public const VIEWER = 'VIEWER';
29+
}

src/Parameters/CreateMeetingParameters.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,6 @@ class CreateMeetingParameters extends MetaParameters
295295
*/
296296
private $userCameraCap;
297297

298-
299298
/**
300299
* CreateMeetingParameters constructor.
301300
*
@@ -1303,21 +1302,20 @@ public function setAllowRequestsWithoutSession($allowRequestsWithoutSession)
13031302
return $this;
13041303
}
13051304

1306-
/**
1307-
* @return int
1308-
*/
13091305
public function getUserCameraCap(): int
13101306
{
13111307
return $this->userCameraCap;
13121308
}
13131309

13141310
/**
13151311
* @param int $userCameraCap
1312+
*
13161313
* @return CreateMeetingParameters
13171314
*/
13181315
public function setUserCameraCap($userCameraCap)
13191316
{
13201317
$this->userCameraCap = $userCameraCap;
1318+
13211319
return $this;
13221320
}
13231321

src/Parameters/JoinMeetingParameters.php

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ class JoinMeetingParameters extends UserDataParameters
7373
private $redirect;
7474

7575
/**
76-
* @var
76+
* @var string
7777
*/
7878
private $clientURL;
7979

@@ -82,6 +82,16 @@ class JoinMeetingParameters extends UserDataParameters
8282
*/
8383
private $customParameters;
8484

85+
/**
86+
* @var string
87+
*/
88+
private $role;
89+
90+
/**
91+
* @var bool
92+
*/
93+
private $excludeFromDashboard;
94+
8595
/**
8696
* JoinMeetingParametersTest constructor.
8797
*
@@ -301,6 +311,42 @@ public function setClientURL($clientURL)
301311
return $this;
302312
}
303313

314+
/**
315+
* @return string
316+
*/
317+
public function getRole()
318+
{
319+
return $this->role;
320+
}
321+
322+
/**
323+
* @param string $role
324+
*/
325+
public function setRole($role): JoinMeetingParameters
326+
{
327+
$this->role = $role;
328+
329+
return $this;
330+
}
331+
332+
/**
333+
* @return bool
334+
*/
335+
public function isExcludeFromDashboard()
336+
{
337+
return $this->excludeFromDashboard;
338+
}
339+
340+
/**
341+
* @param bool $excludeFromDashboard
342+
*/
343+
public function setExcludeFromDashboard($excludeFromDashboard): JoinMeetingParameters
344+
{
345+
$this->excludeFromDashboard = $excludeFromDashboard;
346+
347+
return $this;
348+
}
349+
304350
/**
305351
* @param string $paramName
306352
* @param string $paramValue

tests/Parameters/JoinMeetingParametersTest.php

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
namespace BigBlueButton\Parameters;
2222

23+
use BigBlueButton\Enum\Role;
2324
use BigBlueButton\TestCase;
2425

2526
/**
@@ -39,21 +40,26 @@ public function testJoinMeetingParameters()
3940
$this->assertEquals($params['userId'], $joinMeetingParams->getUserId());
4041
$this->assertEquals($params['webVoiceConf'], $joinMeetingParams->getWebVoiceConf());
4142
$this->assertEquals($params['creationTime'], $joinMeetingParams->getCreationTime());
43+
$this->assertEquals($params['role'], $joinMeetingParams->getRole());
4244
$this->assertEquals($params['userdata_countrycode'], $joinMeetingParams->getUserData('countrycode'));
4345
$this->assertEquals($params['userdata_email'], $joinMeetingParams->getUserData('email'));
4446
$this->assertEquals($params['userdata_commercial'], $joinMeetingParams->getUserData('commercial'));
4547

4648
// Test setters that are ignored by the constructor
47-
$joinMeetingParams->setMeetingId($newId = $this->faker->uuid);
48-
$joinMeetingParams->setUsername($newName = $this->faker->name);
49-
$joinMeetingParams->setPassword($newPassword = $this->faker->password);
50-
$joinMeetingParams->setConfigToken($configToken = $this->faker->md5);
51-
$joinMeetingParams->setAvatarURL($avatarUrl = $this->faker->url);
52-
$joinMeetingParams->setRedirect($redirect = $this->faker->boolean(50));
53-
$joinMeetingParams->setClientURL($clientUrl = $this->faker->url);
49+
$joinMeetingParams->setMeetingId($newId = $this->faker->uuid);
50+
$joinMeetingParams->setUsername($newName = $this->faker->name);
51+
$joinMeetingParams->setRole($newRole = $this->faker->randomElement(Role::getValues()));
52+
$joinMeetingParams->setPassword($newPassword = $this->faker->password);
53+
$joinMeetingParams->setExcludeFromDashboard($excludeFromDashboard = $this->faker->boolean);
54+
$joinMeetingParams->setConfigToken($configToken = $this->faker->md5);
55+
$joinMeetingParams->setAvatarURL($avatarUrl = $this->faker->url);
56+
$joinMeetingParams->setRedirect($redirect = $this->faker->boolean(50));
57+
$joinMeetingParams->setClientURL($clientUrl = $this->faker->url);
5458
$this->assertEquals($newId, $joinMeetingParams->getMeetingId());
5559
$this->assertEquals($newName, $joinMeetingParams->getUsername());
60+
$this->assertEquals($newRole, $joinMeetingParams->getRole());
5661
$this->assertEquals($newPassword, $joinMeetingParams->getPassword());
62+
$this->assertEquals($excludeFromDashboard, $joinMeetingParams->isExcludeFromDashboard());
5763
$this->assertEquals($configToken, $joinMeetingParams->getConfigToken());
5864
$this->assertEquals($avatarUrl, $joinMeetingParams->getAvatarURL());
5965
$this->assertEquals($redirect, $joinMeetingParams->isRedirect());

tests/TestCase.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,9 @@
2020

2121
namespace BigBlueButton;
2222

23-
use BigBlueButton\Core\MeetingLayout;
2423
use BigBlueButton\Enum\GuestPolicy;
24+
use BigBlueButton\Enum\MeetingLayout;
25+
use BigBlueButton\Enum\Role;
2526
use BigBlueButton\Parameters\CreateMeetingParameters;
2627
use BigBlueButton\Parameters\EndMeetingParameters;
2728
use BigBlueButton\Parameters\JoinMeetingParameters;
@@ -158,7 +159,7 @@ protected function generateCreateParams()
158159
'lockSettingsHideViewersCursor' => $this->faker->boolean(50),
159160
'allowModsToUnmuteUsers' => $this->faker->boolean(50),
160161
'allowModsToEjectCameras' => $this->faker->boolean(50),
161-
'guestPolicy' => $this->faker->randomElement([GuestPolicy::ALWAYS_ACCEPT, GuestPolicy::ALWAYS_DENY, GuestPolicy::ASK_MODERATOR]),
162+
'guestPolicy' => $this->faker->randomElement(GuestPolicy::getValues()),
162163
'endWhenNoModerator' => $this->faker->boolean(50),
163164
'endWhenNoModeratorDelayInMinutes' => $this->faker->numberBetween(1, 30),
164165
'meetingKeepEvents' => $this->faker->boolean(50),
@@ -173,7 +174,7 @@ protected function generateCreateParams()
173174
'breakoutRoomsRecord' => $this->faker->boolean(50),
174175
'breakoutRoomsPrivateChatEnabled' => $this->faker->boolean(50),
175176
'meetingEndedURL' => $this->faker->url,
176-
'meetingLayout' => $this->faker->randomElement([MeetingLayout::CUSTOM_LAYOUT, MeetingLayout::SMART_LAYOUT, MeetingLayout::PRESENTATION_FOCUS, MeetingLayout::VIDEO_FOCUS]),
177+
'meetingLayout' => $this->faker->randomElement(MeetingLayout::getValues()),
177178
'meta_presenter' => $this->faker->name,
178179
'meta_endCallbackUrl' => $this->faker->url,
179180
'meta_bbb-recording-ready-url' => $this->faker->url,
@@ -281,6 +282,8 @@ protected function generateJoinMeetingParams()
281282
'userId' => $this->faker->numberBetween(1, 1000),
282283
'webVoiceConf' => $this->faker->word,
283284
'creationTime' => $this->faker->unixTime,
285+
'role' => $this->faker->randomElement(Role::getValues()),
286+
'excludeFromDashboard' => $this->faker->boolean,
284287
'userdata_countrycode' => $this->faker->countryCode,
285288
'userdata_email' => $this->faker->email,
286289
'userdata_commercial' => false,

0 commit comments

Comments
 (0)