Skip to content

Commit 441cebb

Browse files
committed
Added support for lock settings when creating meetings
1 parent 8b58303 commit 441cebb

File tree

3 files changed

+234
-41
lines changed

3 files changed

+234
-41
lines changed

src/Parameters/CreateMeetingParameters.php

Lines changed: 194 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,41 @@ class CreateMeetingParameters extends MetaParameters
118118
*/
119119
private $muteOnStart;
120120

121+
/**
122+
* @var bool
123+
*/
124+
private $lockSettingsDisableCam = true;
125+
126+
/**
127+
* @var bool
128+
*/
129+
private $lockSettingsDisableMic = true;
130+
131+
/**
132+
* @var bool
133+
*/
134+
private $lockSettingsDisablePrivateChat = true;
135+
136+
/**
137+
* @var bool
138+
*/
139+
private $lockSettingsDisablePublicChat = true;
140+
141+
/**
142+
* @var bool
143+
*/
144+
private $lockSettingsDisableNote = true;
145+
146+
/**
147+
* @var bool
148+
*/
149+
private $lockSettingsLockedLayout = true;
150+
151+
/**
152+
* @var bool
153+
*/
154+
private $lockSettingsLockedOnJoin = true;
155+
121156
/**
122157
* @var array
123158
*/
@@ -531,6 +566,139 @@ public function setMuteOnStart($muteOnStart)
531566
return $this;
532567
}
533568

569+
/**
570+
* @return bool
571+
*/
572+
public function isLockSettingsDisableCam()
573+
{
574+
return $this->lockSettingsDisableCam;
575+
}
576+
577+
/**
578+
* @param bool $lockSettingsDisableCam
579+
* @return CreateMeetingParameters
580+
*/
581+
public function setLockSettingsDisableCam($lockSettingsDisableCam)
582+
{
583+
$this->lockSettingsDisableCam = $lockSettingsDisableCam;
584+
585+
return $this;
586+
}
587+
588+
/**
589+
* @return bool
590+
*/
591+
public function isLockSettingsDisableMic()
592+
{
593+
return $this->lockSettingsDisableMic;
594+
}
595+
596+
/**
597+
* @param bool $lockSettingsDisableMic
598+
* @return CreateMeetingParameters
599+
*/
600+
public function setLockSettingsDisableMic($lockSettingsDisableMic)
601+
{
602+
$this->lockSettingsDisableMic = $lockSettingsDisableMic;
603+
604+
return $this;
605+
}
606+
607+
/**
608+
* @return bool
609+
*/
610+
public function isLockSettingsDisablePrivateChat()
611+
{
612+
return $this->lockSettingsDisablePrivateChat;
613+
}
614+
615+
/**
616+
* @param bool $lockSettingsDisablePrivateChat
617+
* @return CreateMeetingParameters
618+
*/
619+
public function setLockSettingsDisablePrivateChat($lockSettingsDisablePrivateChat)
620+
{
621+
$this->lockSettingsDisablePrivateChat = $lockSettingsDisablePrivateChat;
622+
623+
return $this;
624+
}
625+
626+
/**
627+
* @return bool
628+
*/
629+
public function isLockSettingsDisablePublicChat()
630+
{
631+
return $this->lockSettingsDisablePublicChat;
632+
}
633+
634+
/**
635+
* @param bool $lockSettingsDisablePublicChat
636+
* @return CreateMeetingParameters
637+
*/
638+
public function setLockSettingsDisablePublicChat($lockSettingsDisablePublicChat)
639+
{
640+
$this->lockSettingsDisablePublicChat = $lockSettingsDisablePublicChat;
641+
642+
return $this;
643+
}
644+
645+
/**
646+
* @return bool
647+
*/
648+
public function isLockSettingsDisableNote()
649+
{
650+
return $this->lockSettingsDisableNote;
651+
}
652+
653+
/**
654+
* @param bool $lockSettingsDisableNote
655+
* @return CreateMeetingParameters
656+
*/
657+
public function setLockSettingsDisableNote($lockSettingsDisableNote)
658+
{
659+
$this->lockSettingsDisableNote = $lockSettingsDisableNote;
660+
661+
return $this;
662+
}
663+
664+
/**
665+
* @return bool
666+
*/
667+
public function isLockSettingsLockedLayout()
668+
{
669+
return $this->lockSettingsLockedLayout;
670+
}
671+
672+
/**
673+
* @param bool $lockSettingsLockedLayout
674+
* @return CreateMeetingParameters
675+
*/
676+
public function setLockSettingsLockedLayout($lockSettingsLockedLayout)
677+
{
678+
$this->lockSettingsLockedLayout = $lockSettingsLockedLayout;
679+
680+
return $this;
681+
}
682+
683+
/**
684+
* @return bool
685+
*/
686+
public function isLockSettingsLockedOnJoin()
687+
{
688+
return $this->lockSettingsLockedOnJoin;
689+
}
690+
691+
/**
692+
* @param bool $lockedOnJoin
693+
* @return CreateMeetingParameters
694+
*/
695+
public function setLockSettingsLockedOnJoin($lockedOnJoin)
696+
{
697+
$this->lockedOnJoin = $lockedOnJoin;
698+
699+
return $this;
700+
}
701+
534702
/**
535703
* @param $endCallbackUrl
536704
* @return CreateMeetingParameters
@@ -681,25 +849,32 @@ public function getPresentationsAsXML()
681849
public function getHTTPQuery()
682850
{
683851
$queries = [
684-
'name' => $this->meetingName,
685-
'meetingID' => $this->meetingId,
686-
'attendeePW' => $this->attendeePassword,
687-
'moderatorPW' => $this->moderatorPassword,
688-
'dialNumber' => $this->dialNumber,
689-
'voiceBridge' => $this->voiceBridge,
690-
'webVoice' => $this->webVoice,
691-
'logoutURL' => $this->logoutUrl,
692-
'record' => $this->record ? 'true' : 'false',
693-
'duration' => $this->duration,
694-
'maxParticipants' => $this->maxParticipants,
695-
'autoStartRecording' => $this->autoStartRecording ? 'true' : 'false',
696-
'allowStartStopRecording' => $this->allowStartStopRecording ? 'true' : 'false',
697-
'welcome' => trim($this->welcomeMessage),
698-
'moderatorOnlyMessage' => trim($this->moderatorOnlyMessage),
699-
'webcamsOnlyForModerator' => $this->webcamsOnlyForModerator ? 'true' : 'false',
700-
'logo' => $this->logo,
701-
'copyright' => $this->copyright,
702-
'muteOnStart' => $this->muteOnStart,
852+
'name' => $this->meetingName,
853+
'meetingID' => $this->meetingId,
854+
'attendeePW' => $this->attendeePassword,
855+
'moderatorPW' => $this->moderatorPassword,
856+
'dialNumber' => $this->dialNumber,
857+
'voiceBridge' => $this->voiceBridge,
858+
'webVoice' => $this->webVoice,
859+
'logoutURL' => $this->logoutUrl,
860+
'record' => $this->record ? 'true' : 'false',
861+
'duration' => $this->duration,
862+
'maxParticipants' => $this->maxParticipants,
863+
'autoStartRecording' => $this->autoStartRecording ? 'true' : 'false',
864+
'allowStartStopRecording' => $this->allowStartStopRecording ? 'true' : 'false',
865+
'welcome' => trim($this->welcomeMessage),
866+
'moderatorOnlyMessage' => trim($this->moderatorOnlyMessage),
867+
'webcamsOnlyForModerator' => $this->webcamsOnlyForModerator ? 'true' : 'false',
868+
'logo' => $this->logo,
869+
'copyright' => $this->copyright,
870+
'muteOnStart' => $this->muteOnStart,
871+
'lockSettingsDisableCam' => $this->isLockSettingsDisableCam() ? 'true' : 'false',
872+
'lockSettingsDisableMic' => $this->isLockSettingsDisableMic() ? 'true' : 'false',
873+
'lockSettingsDisablePrivateChat' => $this->isLockSettingsDisablePrivateChat() ? 'true' : 'false',
874+
'lockSettingsDisablePublicChat' => $this->isLockSettingsDisablePublicChat() ? 'true' : 'false',
875+
'lockSettingsDisableNote' => $this->isLockSettingsDisableNote() ? 'true' : 'false',
876+
'lockSettingsLockedLayout' => $this->isLockSettingsLockedLayout() ? 'true' : 'false',
877+
'lockSettingsLockOnJoin' => $this->isLockSettingsLockedOnJoin() ? 'true' : 'false',
703878
];
704879

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

tests/Parameters/CreateMeetingParametersTest.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,13 @@ public function testCreateMeetingParameters()
5050
$this->assertEquals($params['logo'], $createMeetingParams->getLogo());
5151
$this->assertEquals($params['copyright'], $createMeetingParams->getCopyright());
5252
$this->assertEquals($params['muteOnStart'], $createMeetingParams->isMuteOnStart());
53+
$this->assertEquals($params['lockSettingsDisableCam'], $createMeetingParams->isLockSettingsDisableCam());
54+
$this->assertEquals($params['lockSettingsDisableMic'], $createMeetingParams->isLockSettingsDisableMic());
55+
$this->assertEquals($params['lockSettingsDisablePrivateChat'], $createMeetingParams->isLockSettingsDisablePrivateChat());
56+
$this->assertEquals($params['lockSettingsDisablePublicChat'], $createMeetingParams->isLockSettingsDisablePublicChat());
57+
$this->assertEquals($params['lockSettingsDisableNote'], $createMeetingParams->isLockSettingsDisableNote());
58+
$this->assertEquals($params['lockSettingsLockedLayout'], $createMeetingParams->isLockSettingsLockedLayout());
59+
$this->assertEquals($params['lockSettingsLockedOnJoin'], $createMeetingParams->isLockSettingsLockedOnJoin());
5360
$this->assertEquals($params['meta_presenter'], $createMeetingParams->getMeta('presenter'));
5461
$this->assertEquals($params['meta_endCallbackUrl'], $createMeetingParams->getMeta('endCallbackUrl'));
5562

tests/TestCase.php

Lines changed: 33 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -67,27 +67,34 @@ protected function createRealMeeting($bbb)
6767
protected function generateCreateParams()
6868
{
6969
return [
70-
'meetingName' => $this->faker->name,
71-
'meetingId' => $this->faker->uuid,
72-
'attendeePassword' => $this->faker->password,
73-
'moderatorPassword' => $this->faker->password,
74-
'autoStartRecording' => $this->faker->boolean(50),
75-
'dialNumber' => $this->faker->phoneNumber,
76-
'voiceBridge' => $this->faker->randomNumber(5),
77-
'webVoice' => $this->faker->word,
78-
'logoutUrl' => $this->faker->url,
79-
'maxParticipants' => $this->faker->numberBetween(2, 100),
80-
'record' => $this->faker->boolean(50),
81-
'duration' => $this->faker->numberBetween(0, 6000),
82-
'welcomeMessage' => $this->faker->sentence,
83-
'allowStartStopRecording' => $this->faker->boolean(50),
84-
'moderatorOnlyMessage' => $this->faker->sentence,
85-
'webcamsOnlyForModerator' => $this->faker->boolean(50),
86-
'logo' => $this->faker->imageUrl(330, 70),
87-
'copyright' => $this->faker->text,
88-
'muteOnStart' => $this->faker->boolean(50),
89-
'meta_presenter' => $this->faker->name,
90-
'meta_endCallbackUrl' => $this->faker->url
70+
'meetingName' => $this->faker->name,
71+
'meetingId' => $this->faker->uuid,
72+
'attendeePassword' => $this->faker->password,
73+
'moderatorPassword' => $this->faker->password,
74+
'autoStartRecording' => $this->faker->boolean(50),
75+
'dialNumber' => $this->faker->phoneNumber,
76+
'voiceBridge' => $this->faker->randomNumber(5),
77+
'webVoice' => $this->faker->word,
78+
'logoutUrl' => $this->faker->url,
79+
'maxParticipants' => $this->faker->numberBetween(2, 100),
80+
'record' => $this->faker->boolean(50),
81+
'duration' => $this->faker->numberBetween(0, 6000),
82+
'welcomeMessage' => $this->faker->sentence,
83+
'allowStartStopRecording' => $this->faker->boolean(50),
84+
'moderatorOnlyMessage' => $this->faker->sentence,
85+
'webcamsOnlyForModerator' => $this->faker->boolean(50),
86+
'logo' => $this->faker->imageUrl(330, 70),
87+
'copyright' => $this->faker->text,
88+
'muteOnStart' => $this->faker->boolean(50),
89+
'lockSettingsDisableCam' => $this->faker->boolean(50),
90+
'lockSettingsDisableMic' => $this->faker->boolean(50),
91+
'lockSettingsDisablePrivateChat' => $this->faker->boolean(50),
92+
'lockSettingsDisablePublicChat' => $this->faker->boolean(50),
93+
'lockSettingsDisableNote' => $this->faker->boolean(50),
94+
'lockSettingsLockedLayout' => $this->faker->boolean(50),
95+
'lockSettingsLockedOnJoin' => $this->faker->boolean(50),
96+
'meta_presenter' => $this->faker->name,
97+
'meta_endCallbackUrl' => $this->faker->url
9198
];
9299
}
93100

@@ -120,7 +127,11 @@ protected function getCreateMock($params)
120127
->setDuration($params['duration'])->setWelcomeMessage($params['welcomeMessage'])->setAutoStartRecording($params['autoStartRecording'])
121128
->setAllowStartStopRecording($params['allowStartStopRecording'])->setModeratorOnlyMessage($params['moderatorOnlyMessage'])
122129
->setWebcamsOnlyForModerator($params['webcamsOnlyForModerator'])->setLogo($params['logo'])->setCopyright($params['copyright'])
123-
->setEndCallbackUrl($params['meta_endCallbackUrl'])->setMuteOnStart($params['muteOnStart'])->addMeta('presenter', $params['meta_presenter']);
130+
->setEndCallbackUrl($params['meta_endCallbackUrl'])->setMuteOnStart($params['muteOnStart'])->setLockSettingsDisableCam($params['lockSettingsDisableCam'])
131+
->setLockSettingsDisableMic($params['lockSettingsDisableMic'])->setLockSettingsDisablePrivateChat($params['lockSettingsDisablePrivateChat'])
132+
->setLockSettingsDisablePublicChat($params['lockSettingsDisablePublicChat'])->setLockSettingsDisableNote($params['lockSettingsDisableNote'])
133+
->setLockSettingsLockedLayout($params['lockSettingsLockedLayout'])->setLockSettingsLockedOnJoin($params['lockSettingsLockedOnJoin'])
134+
->addMeta('presenter', $params['meta_presenter']);
124135
}
125136

126137
/**

0 commit comments

Comments
 (0)