Skip to content

Commit 811d3f0

Browse files
authored
Merge pull request #44 from jonaslm/master
Added support for lock settings when creating meetings
2 parents 8b58303 + 93351df commit 811d3f0

3 files changed

Lines changed: 287 additions & 41 deletions

File tree

src/Parameters/CreateMeetingParameters.php

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

121+
/**
122+
* @var bool
123+
*/
124+
private $lockSettingsDisableCam;
125+
126+
/**
127+
* @var bool
128+
*/
129+
private $lockSettingsDisableMic;
130+
131+
/**
132+
* @var bool
133+
*/
134+
private $lockSettingsDisablePrivateChat;
135+
136+
/**
137+
* @var bool
138+
*/
139+
private $lockSettingsDisablePublicChat;
140+
141+
/**
142+
* @var bool
143+
*/
144+
private $lockSettingsDisableNote;
145+
146+
/**
147+
* @var bool
148+
*/
149+
private $lockSettingsHideUserList;
150+
151+
/**
152+
* @var bool
153+
*/
154+
private $lockSettingsLockedLayout;
155+
156+
/**
157+
* @var bool
158+
*/
159+
private $lockSettingsLockOnJoin = true;
160+
161+
/**
162+
* @var bool
163+
*/
164+
private $lockSettingsLockOnJoinConfigurable;
165+
121166
/**
122167
* @var array
123168
*/
@@ -531,6 +576,177 @@ public function setMuteOnStart($muteOnStart)
531576
return $this;
532577
}
533578

579+
/**
580+
* @return bool
581+
*/
582+
public function isLockSettingsDisableCam()
583+
{
584+
return $this->lockSettingsDisableCam;
585+
}
586+
587+
/**
588+
* @param bool $lockSettingsDisableCam
589+
* @return CreateMeetingParameters
590+
*/
591+
public function setLockSettingsDisableCam($lockSettingsDisableCam)
592+
{
593+
$this->lockSettingsDisableCam = $lockSettingsDisableCam;
594+
595+
return $this;
596+
}
597+
598+
/**
599+
* @return bool
600+
*/
601+
public function isLockSettingsDisableMic()
602+
{
603+
return $this->lockSettingsDisableMic;
604+
}
605+
606+
/**
607+
* @param bool $lockSettingsDisableMic
608+
* @return CreateMeetingParameters
609+
*/
610+
public function setLockSettingsDisableMic($lockSettingsDisableMic)
611+
{
612+
$this->lockSettingsDisableMic = $lockSettingsDisableMic;
613+
614+
return $this;
615+
}
616+
617+
/**
618+
* @return bool
619+
*/
620+
public function isLockSettingsDisablePrivateChat()
621+
{
622+
return $this->lockSettingsDisablePrivateChat;
623+
}
624+
625+
/**
626+
* @param bool $lockSettingsDisablePrivateChat
627+
* @return CreateMeetingParameters
628+
*/
629+
public function setLockSettingsDisablePrivateChat($lockSettingsDisablePrivateChat)
630+
{
631+
$this->lockSettingsDisablePrivateChat = $lockSettingsDisablePrivateChat;
632+
633+
return $this;
634+
}
635+
636+
/**
637+
* @return bool
638+
*/
639+
public function isLockSettingsDisablePublicChat()
640+
{
641+
return $this->lockSettingsDisablePublicChat;
642+
}
643+
644+
/**
645+
* @param bool $lockSettingsDisablePublicChat
646+
* @return CreateMeetingParameters
647+
*/
648+
public function setLockSettingsDisablePublicChat($lockSettingsDisablePublicChat)
649+
{
650+
$this->lockSettingsDisablePublicChat = $lockSettingsDisablePublicChat;
651+
652+
return $this;
653+
}
654+
655+
/**
656+
* @return bool
657+
*/
658+
public function isLockSettingsDisableNote()
659+
{
660+
return $this->lockSettingsDisableNote;
661+
}
662+
663+
/**
664+
* @param bool $lockSettingsDisableNote
665+
* @return CreateMeetingParameters
666+
*/
667+
public function setLockSettingsDisableNote($lockSettingsDisableNote)
668+
{
669+
$this->lockSettingsDisableNote = $lockSettingsDisableNote;
670+
671+
return $this;
672+
}
673+
674+
/**
675+
* @return bool
676+
*/
677+
public function isLockSettingsHideUserList()
678+
{
679+
return $this->lockSettingsHideUserList;
680+
}
681+
682+
/**
683+
* @param bool $lockSettingsHideUserList
684+
* @return CreateMeetingParameters
685+
*/
686+
public function setLockSettingsHideUserList($lockSettingsHideUserList)
687+
{
688+
$this->lockSettingsHideUserList = $lockSettingsHideUserList;
689+
690+
return $this;
691+
}
692+
693+
/**
694+
* @return bool
695+
*/
696+
public function isLockSettingsLockedLayout()
697+
{
698+
return $this->lockSettingsLockedLayout;
699+
}
700+
701+
/**
702+
* @param bool $lockSettingsLockedLayout
703+
* @return CreateMeetingParameters
704+
*/
705+
public function setLockSettingsLockedLayout($lockSettingsLockedLayout)
706+
{
707+
$this->lockSettingsLockedLayout = $lockSettingsLockedLayout;
708+
709+
return $this;
710+
}
711+
712+
/**
713+
* @return bool
714+
*/
715+
public function isLockSettingsLockOnJoin()
716+
{
717+
return $this->lockSettingsLockOnJoin;
718+
}
719+
720+
/**
721+
* @param bool $lockOnJoin
722+
* @return CreateMeetingParameters
723+
*/
724+
public function setLockSettingsLockOnJoin($lockOnJoin)
725+
{
726+
$this->lockSettingsLockOnJoin = $lockOnJoin;
727+
728+
return $this;
729+
}
730+
731+
/**
732+
* @return bool
733+
*/
734+
public function isLockSettingsLockOnJoinConfigurable()
735+
{
736+
return $this->lockSettingsLockOnJoinConfigurable;
737+
}
738+
739+
/**
740+
* @param bool $lockOnJoinConfigurable
741+
* @return CreateMeetingParameters
742+
*/
743+
public function setLockSettingsLockOnJoinConfigurable($lockOnJoinConfigurable)
744+
{
745+
$this->lockSettingsLockOnJoinConfigurable = $lockOnJoinConfigurable;
746+
747+
return $this;
748+
}
749+
534750
/**
535751
* @param $endCallbackUrl
536752
* @return CreateMeetingParameters
@@ -681,25 +897,32 @@ public function getPresentationsAsXML()
681897
public function getHTTPQuery()
682898
{
683899
$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,
900+
'name' => $this->meetingName,
901+
'meetingID' => $this->meetingId,
902+
'attendeePW' => $this->attendeePassword,
903+
'moderatorPW' => $this->moderatorPassword,
904+
'dialNumber' => $this->dialNumber,
905+
'voiceBridge' => $this->voiceBridge,
906+
'webVoice' => $this->webVoice,
907+
'logoutURL' => $this->logoutUrl,
908+
'record' => $this->record ? 'true' : 'false',
909+
'duration' => $this->duration,
910+
'maxParticipants' => $this->maxParticipants,
911+
'autoStartRecording' => $this->autoStartRecording ? 'true' : 'false',
912+
'allowStartStopRecording' => $this->allowStartStopRecording ? 'true' : 'false',
913+
'welcome' => trim($this->welcomeMessage),
914+
'moderatorOnlyMessage' => trim($this->moderatorOnlyMessage),
915+
'webcamsOnlyForModerator' => $this->webcamsOnlyForModerator ? 'true' : 'false',
916+
'logo' => $this->logo,
917+
'copyright' => $this->copyright,
918+
'muteOnStart' => $this->muteOnStart,
919+
'lockSettingsDisableCam' => $this->isLockSettingsDisableCam() ? 'true' : 'false',
920+
'lockSettingsDisableMic' => $this->isLockSettingsDisableMic() ? 'true' : 'false',
921+
'lockSettingsDisablePrivateChat' => $this->isLockSettingsDisablePrivateChat() ? 'true' : 'false',
922+
'lockSettingsDisablePublicChat' => $this->isLockSettingsDisablePublicChat() ? 'true' : 'false',
923+
'lockSettingsDisableNote' => $this->isLockSettingsDisableNote() ? 'true' : 'false',
924+
'lockSettingsLockedLayout' => $this->isLockSettingsLockedLayout() ? 'true' : 'false',
925+
'lockSettingsLockOnJoin' => $this->isLockSettingsLockOnJoin() ? 'true' : 'false',
703926
];
704927

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

tests/Parameters/CreateMeetingParametersTest.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,15 @@ 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['lockSettingsHideUserList'], $createMeetingParams->isLockSettingsHideUserList());
59+
$this->assertEquals($params['lockSettingsLockedLayout'], $createMeetingParams->isLockSettingsLockedLayout());
60+
$this->assertEquals($params['lockSettingsLockOnJoin'], $createMeetingParams->isLockSettingsLockOnJoin());
61+
$this->assertEquals($params['lockSettingsLockOnJoinConfigurable'], $createMeetingParams->isLockSettingsLockOnJoinConfigurable());
5362
$this->assertEquals($params['meta_presenter'], $createMeetingParams->getMeta('presenter'));
5463
$this->assertEquals($params['meta_endCallbackUrl'], $createMeetingParams->getMeta('endCallbackUrl'));
5564

tests/TestCase.php

Lines changed: 36 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -67,27 +67,36 @@ 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+
'lockSettingsHideUserList' => $this->faker->boolean(50),
95+
'lockSettingsLockedLayout' => $this->faker->boolean(50),
96+
'lockSettingsLockOnJoin' => $this->faker->boolean(50),
97+
'lockSettingsLockOnJoinConfigurable' => $this->faker->boolean(50),
98+
'meta_presenter' => $this->faker->name,
99+
'meta_endCallbackUrl' => $this->faker->url
91100
];
92101
}
93102

@@ -120,7 +129,12 @@ protected function getCreateMock($params)
120129
->setDuration($params['duration'])->setWelcomeMessage($params['welcomeMessage'])->setAutoStartRecording($params['autoStartRecording'])
121130
->setAllowStartStopRecording($params['allowStartStopRecording'])->setModeratorOnlyMessage($params['moderatorOnlyMessage'])
122131
->setWebcamsOnlyForModerator($params['webcamsOnlyForModerator'])->setLogo($params['logo'])->setCopyright($params['copyright'])
123-
->setEndCallbackUrl($params['meta_endCallbackUrl'])->setMuteOnStart($params['muteOnStart'])->addMeta('presenter', $params['meta_presenter']);
132+
->setEndCallbackUrl($params['meta_endCallbackUrl'])->setMuteOnStart($params['muteOnStart'])->setLockSettingsDisableCam($params['lockSettingsDisableCam'])
133+
->setLockSettingsDisableMic($params['lockSettingsDisableMic'])->setLockSettingsDisablePrivateChat($params['lockSettingsDisablePrivateChat'])
134+
->setLockSettingsDisablePublicChat($params['lockSettingsDisablePublicChat'])->setLockSettingsDisableNote($params['lockSettingsDisableNote'])
135+
->setLockSettingsHideUserList($params['lockSettingsHideUserList'])->setLockSettingsLockedLayout($params['lockSettingsLockedLayout'])
136+
->setLockSettingsLockOnJoin($params['lockSettingsLockOnJoin'])->setLockSettingsLockOnJoinConfigurable($params['lockSettingsLockOnJoin'])
137+
->addMeta('presenter', $params['meta_presenter']);
124138
}
125139

126140
/**

0 commit comments

Comments
 (0)