Skip to content

Commit d2d24d4

Browse files
authored
Merge branch 'master' into patch-1
2 parents f5f3bbd + 1c8fb60 commit d2d24d4

File tree

8 files changed

+107
-25
lines changed

8 files changed

+107
-25
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
composer.phar
22
/vendor/
33
composer.lock
4+
.DS_Store
45

56
## Directory-based project format:
67
.idea/

README.md

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# BigBlueButton API for PHP
22

33
![Home Image](https://raw.githubusercontent.com/wiki/bigbluebutton/bigbluebutton-api-php/images/header.png)
4+
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fbigbluebutton%2Fbigbluebutton-api-php.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fbigbluebutton%2Fbigbluebutton-api-php?ref=badge_shield)
45

56
The official and easy to use **BigBlueButton API for PHP**, makes easy for developers to use [BigBlueButton][bbb] API for **PHP 5.4+**.
67

@@ -15,12 +16,12 @@ The official and easy to use **BigBlueButton API for PHP**, makes easy for devel
1516
[![@bigbluebutton on Twitter](https://img.shields.io/badge/twitter-%40bigbluebutton-blue.svg?style=flat)](https://twitter.com/bigbluebutton)
1617
![Website](https://img.shields.io/website-up-down-green-red/http/bigbluebutton.org.svg?label=BigBlueButton.org)
1718

18-
[![PHP 5.5](https://img.shields.io/badge/php-5.5-f33.svg?style=flat-square)](https://php.net/)
1919
[![PHP 5.6](https://img.shields.io/badge/php-5.6-f33.svg?style=flat-square)](https://php.net/)
2020
[![PHP 7.0](https://img.shields.io/badge/php-7.0-f33.svg?style=flat-square)](https://php.net/)
21-
[![PHP 7.1](https://img.shields.io/badge/php-7.1-f93.svg?style=flat-square)](https://php.net/)
22-
[![PHP 7.2](https://img.shields.io/badge/php-7.2-9c9.svg?style=flat-square)](https://php.net/)
21+
[![PHP 7.1](https://img.shields.io/badge/php-7.1-f33.svg?style=flat-square)](https://php.net/)
22+
[![PHP 7.2](https://img.shields.io/badge/php-7.2-f93.svg?style=flat-square)](https://php.net/)
2323
[![PHP 7.3](https://img.shields.io/badge/php-7.3-9c9.svg?style=flat-square)](https://php.net/)
24+
[![PHP 7.4](https://img.shields.io/badge/php-7.4-9c9.svg?style=flat-square)](https://php.net/)
2425

2526
## Installation and usage
2627

@@ -44,11 +45,20 @@ Make sure the code style configuration is applied by running PHPCS-Fixer.
4445

4546
For every implemented feature add unit tests and check all is green by running the command below.
4647

47-
```
48+
```bash
4849
./vendor/bin/phpunit
4950
```
5051

52+
To run a single test
53+
54+
```bash
55+
./vendor/bin/phpunit --filter "BigBlueButtonTest::testApiVersion"
56+
```
57+
5158
[bbb]: http://bigbluebutton.org
5259
[composer]: https://getcomposer.org
5360
[INSTALL]: samples/README.md
54-
[wiki]: https://github.com/bigbluebutton/bigbluebutton-api-php/wiki
61+
[wiki]: https://github.com/bigbluebutton/bigbluebutton-api-php/wiki
62+
63+
## License
64+
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fbigbluebutton%2Fbigbluebutton-api-php.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fbigbluebutton%2Fbigbluebutton-api-php?ref=badge_large)

src/BigBlueButton.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -461,6 +461,7 @@ private function processXmlResponse($url, $payload = '', $contentType = 'applica
461461
curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8');
462462
curl_setopt($ch, CURLOPT_URL, $url);
463463
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
464+
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
464465
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
465466
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefilepath);
466467
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefilepath);

src/Core/Attendee.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ class Attendee
5858
/**
5959
* @var array
6060
*/
61-
private $customData;
61+
private $customData = [];
6262

6363
/**
6464
* @var string
@@ -80,8 +80,10 @@ public function __construct($xml)
8080
$this->hasVideo = $xml->hasVideo->__toString() === 'true';
8181
$this->clientType = $xml->clientType->__toString();
8282

83-
foreach ($xml->customdata->children() as $data) {
84-
$this->customData[$data->getName()] = $data->__toString();
83+
if ($xml->customData) {
84+
foreach ($xml->customdata->children() as $data) {
85+
$this->customData[$data->getName()] = $data->__toString();
86+
}
8587
}
8688
}
8789

src/Parameters/CreateMeetingParameters.php

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,11 @@ class CreateMeetingParameters extends MetaParameters
167167
*/
168168
private $lockSettingsLockOnJoinConfigurable;
169169

170+
/**
171+
* @var bool
172+
*/
173+
private $allowModsToUnmuteUsers;
174+
170175
/**
171176
* @var array
172177
*/
@@ -756,13 +761,32 @@ public function setLockSettingsLockOnJoinConfigurable($lockOnJoinConfigurable)
756761
return $this;
757762
}
758763

764+
/**
765+
* @return bool
766+
*/
767+
public function isAllowModsToUnmuteUsers()
768+
{
769+
return $this->allowModsToUnmuteUsers;
770+
}
771+
772+
/**
773+
* @param bool $allowModsToUnmuteUsers
774+
* @return CreateMeetingParameters
775+
*/
776+
public function setAllowModsToUnmuteUsers($allowModsToUnmuteUsers)
777+
{
778+
$this->allowModsToUnmuteUsers = $allowModsToUnmuteUsers;
779+
780+
return $this;
781+
}
782+
759783
/**
760784
* @param $endCallbackUrl
761785
* @return CreateMeetingParameters
762786
*/
763787
public function setEndCallbackUrl($endCallbackUrl)
764788
{
765-
$this->addMeta('endCallbackUrl', urlencode($endCallbackUrl));
789+
$this->addMeta('endCallbackUrl', $endCallbackUrl);
766790

767791
return $this;
768792
}
@@ -773,7 +797,7 @@ public function setEndCallbackUrl($endCallbackUrl)
773797
*/
774798
public function setRecordingReadyCallbackUrl($recordingReadyCallbackUrl)
775799
{
776-
$this->addMeta('bbb-recording-ready-url', urlencode($recordingReadyCallbackUrl));
800+
$this->addMeta('bbb-recording-ready-url', $recordingReadyCallbackUrl);
777801

778802
return $this;
779803
}
@@ -954,7 +978,7 @@ public function getHTTPQuery()
954978
'webcamsOnlyForModerator' => $this->webcamsOnlyForModerator ? 'true' : 'false',
955979
'logo' => $this->logo,
956980
'copyright' => $this->copyright,
957-
'muteOnStart' => $this->muteOnStart,
981+
'muteOnStart' => $this->muteOnStart ? 'true' : 'false',
958982
'guestPolicy' => $this->guestPolicy,
959983
'lockSettingsDisableCam' => $this->isLockSettingsDisableCam() ? 'true' : 'false',
960984
'lockSettingsDisableMic' => $this->isLockSettingsDisableMic() ? 'true' : 'false',
@@ -965,6 +989,7 @@ public function getHTTPQuery()
965989
'lockSettingsLockedLayout' => $this->isLockSettingsLockedLayout() ? 'true' : 'false',
966990
'lockSettingsLockOnJoin' => $this->isLockSettingsLockOnJoin() ? 'true' : 'false',
967991
'lockSettingsLockOnJoinConfigurable' => $this->isLockSettingsLockOnJoinConfigurable() ? 'true' : 'false',
992+
'allowModsToUnmuteUsers' => $this->isAllowModsToUnmuteUsers() ? 'true' : 'false',
968993
];
969994

970995
// Add breakout rooms parameters only if the meeting is a breakout room

src/Parameters/JoinMeetingParameters.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,11 @@ class JoinMeetingParameters extends UserDataParameters
7878
*/
7979
private $joinViaHtml5;
8080

81+
/**
82+
* @var array
83+
*/
84+
private $customParameters;
85+
8186
/**
8287
* JoinMeetingParametersTest constructor.
8388
*
@@ -90,6 +95,7 @@ public function __construct($meetingId, $username, $password)
9095
$this->meetingId = $meetingId;
9196
$this->username = $username;
9297
$this->password = $password;
98+
$this->customParameters = array();
9399
}
94100

95101
/**
@@ -307,6 +313,18 @@ public function setJoinViaHtml5($joinViaHtml5)
307313
return $this;
308314
}
309315

316+
/**
317+
* @param string $paramName
318+
* @param string $paramValue
319+
* @return JoinMeetingParameters
320+
*/
321+
public function setCustomParameter($paramName, $paramValue)
322+
{
323+
$this->customParameters[$paramName] = $paramValue;
324+
325+
return $this;
326+
}
327+
310328
/**
311329
* @return string
312330
*/
@@ -325,6 +343,11 @@ public function getHTTPQuery()
325343
'joinViaHtml5' => $this->joinViaHtml5 ? 'true' : 'false',
326344
'clientURL' => $this->clientURL
327345
];
346+
347+
foreach( $this->customParameters as $key => $value ) {
348+
$queries[$key] = $value;
349+
}
350+
328351
$this->buildUserData($queries);
329352

330353
return $this->buildHTTPQuery($queries);

tests/Parameters/CreateMeetingParametersTest.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,10 @@ public function testCreateMeetingParameters()
5959
$this->assertEquals($params['lockSettingsLockedLayout'], $createMeetingParams->isLockSettingsLockedLayout());
6060
$this->assertEquals($params['lockSettingsLockOnJoin'], $createMeetingParams->isLockSettingsLockOnJoin());
6161
$this->assertEquals($params['lockSettingsLockOnJoinConfigurable'], $createMeetingParams->isLockSettingsLockOnJoinConfigurable());
62+
$this->assertEquals($params['allowModsToUnmuteUsers'], $createMeetingParams->isAllowModsToUnmuteUsers());
6263
$this->assertEquals($params['meta_presenter'], $createMeetingParams->getMeta('presenter'));
63-
$this->assertEquals($params['meta_endCallbackUrl'], urlencode($createMeetingParams->getMeta('endCallbackUrl')));
64-
$this->assertEquals($params['meta_bbb-recording-ready-url'], urlencode($createMeetingParams->getMeta('bbb-recording-ready-url')));
64+
$this->assertEquals($params['meta_endCallbackUrl'], $createMeetingParams->getMeta('endCallbackUrl'));
65+
$this->assertEquals($params['meta_bbb-recording-ready-url'], $createMeetingParams->getMeta('bbb-recording-ready-url'));
6566

6667
// Check values are empty of this is not a breakout room
6768
$this->assertNull($createMeetingParams->isBreakout());

tests/TestCase.php

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ protected function generateCreateParams()
9595
'lockSettingsLockedLayout' => $this->faker->boolean(50),
9696
'lockSettingsLockOnJoin' => $this->faker->boolean(50),
9797
'lockSettingsLockOnJoinConfigurable' => $this->faker->boolean(50),
98+
'allowModsToUnmuteUsers' => $this->faker->boolean(50),
9899
'meta_presenter' => $this->faker->name,
99100
'meta_endCallbackUrl' => $this->faker->url,
100101
'meta_bbb-recording-ready-url' => $this->faker->url,
@@ -124,18 +125,36 @@ protected function getCreateMock($params)
124125
{
125126
$createMeetingParams = new CreateMeetingParameters($params['meetingId'], $params['meetingName']);
126127

127-
return $createMeetingParams->setAttendeePassword($params['attendeePassword'])->setModeratorPassword($params['moderatorPassword'])
128-
->setDialNumber($params['dialNumber'])->setVoiceBridge($params['voiceBridge'])->setWebVoice($params['webVoice'])
129-
->setLogoutUrl($params['logoutUrl'])->setMaxParticipants($params['maxParticipants'])->setRecord($params['record'])
130-
->setDuration($params['duration'])->setWelcomeMessage($params['welcomeMessage'])->setAutoStartRecording($params['autoStartRecording'])
131-
->setAllowStartStopRecording($params['allowStartStopRecording'])->setModeratorOnlyMessage($params['moderatorOnlyMessage'])
132-
->setWebcamsOnlyForModerator($params['webcamsOnlyForModerator'])->setLogo($params['logo'])->setCopyright($params['copyright'])
133-
->setEndCallbackUrl($params['meta_endCallbackUrl'])->setMuteOnStart($params['muteOnStart'])->setLockSettingsDisableCam($params['lockSettingsDisableCam'])
134-
->setLockSettingsDisableMic($params['lockSettingsDisableMic'])->setLockSettingsDisablePrivateChat($params['lockSettingsDisablePrivateChat'])
135-
->setLockSettingsDisablePublicChat($params['lockSettingsDisablePublicChat'])->setLockSettingsDisableNote($params['lockSettingsDisableNote'])
136-
->setLockSettingsHideUserList($params['lockSettingsHideUserList'])->setLockSettingsLockedLayout($params['lockSettingsLockedLayout'])
137-
->setLockSettingsLockOnJoin($params['lockSettingsLockOnJoin'])->setLockSettingsLockOnJoinConfigurable($params['lockSettingsLockOnJoin'])
138-
->addMeta('presenter', $params['meta_presenter']);
128+
return $createMeetingParams
129+
->setAttendeePassword($params['attendeePassword'])
130+
->setModeratorPassword($params['moderatorPassword'])
131+
->setDialNumber($params['dialNumber'])
132+
->setVoiceBridge($params['voiceBridge'])
133+
->setWebVoice($params['webVoice'])
134+
->setLogoutUrl($params['logoutUrl'])
135+
->setMaxParticipants($params['maxParticipants'])
136+
->setRecord($params['record'])
137+
->setDuration($params['duration'])
138+
->setWelcomeMessage($params['welcomeMessage'])
139+
->setAutoStartRecording($params['autoStartRecording'])
140+
->setAllowStartStopRecording($params['allowStartStopRecording'])
141+
->setModeratorOnlyMessage($params['moderatorOnlyMessage'])
142+
->setWebcamsOnlyForModerator($params['webcamsOnlyForModerator'])
143+
->setLogo($params['logo'])
144+
->setCopyright($params['copyright'])
145+
->setEndCallbackUrl($params['meta_endCallbackUrl'])
146+
->setMuteOnStart($params['muteOnStart'])
147+
->setLockSettingsDisableCam($params['lockSettingsDisableCam'])
148+
->setLockSettingsDisableMic($params['lockSettingsDisableMic'])
149+
->setLockSettingsDisablePrivateChat($params['lockSettingsDisablePrivateChat'])
150+
->setLockSettingsDisablePublicChat($params['lockSettingsDisablePublicChat'])
151+
->setLockSettingsDisableNote($params['lockSettingsDisableNote'])
152+
->setLockSettingsHideUserList($params['lockSettingsHideUserList'])
153+
->setLockSettingsLockedLayout($params['lockSettingsLockedLayout'])
154+
->setLockSettingsLockOnJoin($params['lockSettingsLockOnJoin'])
155+
->setLockSettingsLockOnJoinConfigurable($params['lockSettingsLockOnJoinConfigurable'])
156+
->addMeta('presenter', $params['meta_presenter'])
157+
->addMeta('bbb-recording-ready-url', $params['meta_bbb-recording-ready-url']);
139158
}
140159

141160
/**

0 commit comments

Comments
 (0)