isAllowModsToUnmuteUsers()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 1
c 1
b 0
f 0
dl 0
loc 3
rs 10
cc 1
nc 1
nop 0
1
<?php
2
3
/*
4
 * BigBlueButton open source conferencing system - https://www.bigbluebutton.org/.
5
 *
6
 * Copyright (c) 2016-2024 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 <https://www.gnu.org/licenses/>.
19
 */
20
21
namespace BigBlueButton\Parameters;
22
23
/**
24
 * Class CreateMeetingParameters.
25
 */
26
class CreateMeetingParameters extends MetaParameters
27
{
28
    use DocumentableTrait;
29
30
    private ?string $meetingId = null;
31
32
    private ?string $meetingName = null;
33
34
    /**
35
     * @deprecated Password-string replaced by an Enum\Role-constant in JoinMeetingParameters::__construct()
36
     */
37
    private ?string $attendeePassword = null;
38
39
    /**
40
     * @deprecated Password-string replaced by an Enum\Role-constant in JoinMeetingParameters::__construct()
41
     */
42
    private ?string $moderatorPassword = null;
43
44
    private ?string $dialNumber = null;
45
46
    private ?int $voiceBridge = null;
47
48
    private ?string $webVoice = null;
49
50
    private ?string $logoutUrl = null;
51
52
    private ?int $maxParticipants = null;
53
54
    private ?bool $record = null;
55
56
    private ?bool $autoStartRecording = null;
57
58
    private ?bool $allowStartStopRecording = null;
59
60
    private ?int $duration = null;
61
62
    private ?string $welcomeMessage = null;
63
64
    private ?string $moderatorOnlyMessage = null;
65
66
    private ?bool $webcamsOnlyForModerator = null;
67
68
    private ?string $logo = null;
69
70
    private ?string $copyright = null;
71
72
    private ?bool $muteOnStart = null;
73
74
    private ?bool $lockSettingsDisableCam = null;
75
76
    private ?bool $lockSettingsDisableMic = null;
77
78
    private ?bool $lockSettingsDisablePrivateChat = null;
79
80
    private ?bool $lockSettingsDisablePublicChat = null;
81
82
    private ?bool $lockSettingsDisableNote = null;
83
84
    private ?bool $lockSettingsHideUserList = null;
85
86
    private ?bool $lockSettingsLockedLayout = null;
87
88
    private ?bool $lockSettingsLockOnJoin = null;
89
90
    private ?bool $lockSettingsLockOnJoinConfigurable = null;
91
92
    private ?bool $lockSettingsHideViewersCursor = null;
93
94
    private ?bool $allowModsToUnmuteUsers = null;
95
96
    private ?bool $allowModsToEjectCameras = null;
97
98
    private ?bool $allowRequestsWithoutSession = null;
99
100
    private ?bool $isBreakout = null;
101
102
    private ?string $parentMeetingId = null;
103
104
    private ?int $sequence = null;
105
106
    private ?bool $freeJoin = null;
107
108
    private ?string $guestPolicy = null;
109
110
    private ?string $bannerText = null;
111
112
    private ?string $bannerColor = null;
113
114
    /**
115
     * @deprecated Removed in 2.5, temporarily still handled, please transition to disabledFeatures.
116
     */
117
    private ?bool $learningDashboardEnabled = null;
118
119
    /**
120
     * @deprecated Removed in 2.5, temporarily still handled, please transition to disabledFeatures.
121
     */
122
    private ?bool $virtualBackgroundsDisabled = null;
123
124
    private ?int $learningDashboardCleanupDelayInMinutes = null;
125
126
    private ?int $endWhenNoModeratorDelayInMinutes = null;
127
128
    private ?bool $endWhenNoModerator = null;
129
130
    private ?bool $meetingKeepEvents = null;
131
132
    /**
133
     * @deprecated Removed in 2.5, temporarily still handled, please transition to disabledFeatures.
134
     */
135
    private ?bool $breakoutRoomsEnabled = null;
136
137
    private ?bool $breakoutRoomsRecord = null;
138
139
    private ?bool $breakoutRoomsPrivateChatEnabled = null;
140
141
    private ?string $meetingEndedURL = null;
142
143
    private ?string $meetingLayout = null;
144
145
    private ?int $userCameraCap = null;
146
147
    private ?int $meetingCameraCap = null;
148
149
    private ?int $meetingExpireIfNoUserJoinedInMinutes = null;
150
151
    private ?int $meetingExpireWhenLastUserLeftInMinutes = null;
152
153
    private ?bool $preUploadedPresentationOverrideDefault = null;
154
155
    /**
156
     * @var array<string, mixed>
157
     */
158
    private array $disabledFeatures = [];
159
160
    /**
161
     * @var array<string, mixed>
162
     */
163
    private array $disabledFeaturesExclude = [];
164
165
    private ?bool $recordFullDurationMedia = null;
166
167
    /**
168
     * @var array<int, array<string, mixed>>
169
     */
170
    private array $breakoutRoomsGroups = [];
171
172
    private ?bool $notifyRecordingIsOn = null;
173
174
    private ?string $presentationUploadExternalUrl = null;
175
176
    private ?string $presentationUploadExternalDescription = null;
177
178
    /**
179
     * CreateMeetingParameters constructor.
180
     *
181
     * @param mixed $meetingId
182
     * @param mixed $meetingName
183
     */
184
    public function __construct($meetingId = null, $meetingName = null)
185
    {
186
        $this->meetingId   = $meetingId;
187
        $this->meetingName = $meetingName;
188
    }
189
190
    public function getMeetingId(): ?string
191
    {
192
        return $this->meetingId;
193
    }
194
195
    /**
196
     * A meeting ID that can be used to identify this meeting by the 3rd-party application.
197
     *
198
     * This must be unique to the server that you are calling: different active meetings can not have the same meeting
199
     * ID. If you supply a non-unique meeting ID (a meeting is already in progress with the same meeting ID), then if
200
     * the other parameters in the create call are identical, the create call will succeed (but will receive a warning
201
     * message in the response). The create call is idempotent: calling multiple times does not have any side effect.
202
     * This enables a 3rd-party applications to avoid checking if the meeting is running and always call create before
203
     * joining each user.
204
     *
205
     * Meeting IDs should only contain upper/lower ASCII letters, numbers, dashes, or underscores. A good choice for
206
     * the meeting ID is to generate a GUID value as this all but guarantees that different meetings will not have the
207
     * same meetingID.
208
     */
209
    public function setMeetingId(string $meetingId): self
210
    {
211
        $this->meetingId = $meetingId;
212
213
        return $this;
214
    }
215
216
    public function getMeetingName(): ?string
217
    {
218
        return $this->meetingName;
219
    }
220
221
    /**
222
     * A name for the meeting. This is now required as of BigBlueButton 2.4.
223
     */
224
    public function setMeetingName(string $meetingName): self
225
    {
226
        $this->meetingName = $meetingName;
227
228
        return $this;
229
    }
230
231
    /**
232
     * @deprecated Password-string replaced by an Enum\Role-constant in JoinMeetingParameters::__construct()
233
     */
234
    public function getAttendeePassword(): ?string
235
    {
236
        return $this->attendeePassword;
0 ignored issues
show
Deprecated Code introduced by
The property BigBlueButton\Parameters...ters::$attendeePassword has been deprecated: Password-string replaced by an Enum\Role-constant in JoinMeetingParameters::__construct() ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

236
        return /** @scrutinizer ignore-deprecated */ $this->attendeePassword;

This property has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the property will be removed from the class and what other property to use instead.

Loading history...
237
    }
238
239
    /**
240
     * The password that the join URL can later provide as its password parameter to indicate the user will join as a
241
     * viewer. If no attendeePW is provided, the create call will return a randomly generated attendeePW password for
242
     * the meeting.
243
     *
244
     * @deprecated Password-string replaced by an Enum\Role-constant in JoinMeetingParameters::__construct()
245
     */
246
    public function setAttendeePassword(string $attendeePassword): self
247
    {
248
        $this->attendeePassword = $attendeePassword;
0 ignored issues
show
Deprecated Code introduced by
The property BigBlueButton\Parameters...ters::$attendeePassword has been deprecated: Password-string replaced by an Enum\Role-constant in JoinMeetingParameters::__construct() ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

248
        /** @scrutinizer ignore-deprecated */ $this->attendeePassword = $attendeePassword;

This property has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the property will be removed from the class and what other property to use instead.

Loading history...
249
250
        return $this;
251
    }
252
253
    /**
254
     * @deprecated Password-string replaced by an Enum\Role-constant in JoinMeetingParameters::__construct()
255
     */
256
    public function getModeratorPassword(): ?string
257
    {
258
        return $this->moderatorPassword;
0 ignored issues
show
Deprecated Code introduced by
The property BigBlueButton\Parameters...ers::$moderatorPassword has been deprecated: Password-string replaced by an Enum\Role-constant in JoinMeetingParameters::__construct() ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

258
        return /** @scrutinizer ignore-deprecated */ $this->moderatorPassword;

This property has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the property will be removed from the class and what other property to use instead.

Loading history...
259
    }
260
261
    /**
262
     * The password that will join URL can later provide as its password parameter to indicate the user will as a
263
     * moderator. if no moderatorPW is provided, create will return a randomly generated moderatorPW password for
264
     * the meeting.
265
     *
266
     * @deprecated Password-string replaced by an Enum\Role-constant in JoinMeetingParameters::__construct()
267
     */
268
    public function setModeratorPassword(string $moderatorPassword): self
269
    {
270
        $this->moderatorPassword = $moderatorPassword;
0 ignored issues
show
Deprecated Code introduced by
The property BigBlueButton\Parameters...ers::$moderatorPassword has been deprecated: Password-string replaced by an Enum\Role-constant in JoinMeetingParameters::__construct() ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

270
        /** @scrutinizer ignore-deprecated */ $this->moderatorPassword = $moderatorPassword;

This property has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the property will be removed from the class and what other property to use instead.

Loading history...
271
272
        return $this;
273
    }
274
275
    public function getDialNumber(): ?string
276
    {
277
        return $this->dialNumber;
278
    }
279
280
    /**
281
     * The dial access number that participants can call in using regular phone. You can set a default dial number
282
     * via defaultDialAccessNumber in 'bigbluebutton.properties'.
283
     */
284
    public function setDialNumber(string $dialNumber): self
285
    {
286
        $this->dialNumber = $dialNumber;
287
288
        return $this;
289
    }
290
291
    public function getVoiceBridge(): ?int
292
    {
293
        return $this->voiceBridge;
294
    }
295
296
    /**
297
     * Voice conference number for the FreeSWITCH voice conference associated with this meeting. This must be a 5-digit
298
     * number in the range 10000 to 99999. If you add a phone number to your BigBlueButton server, This parameter sets
299
     * the personal identification number (PIN) that FreeSWITCH will prompt for a phone-only user to enter. If you want
300
     * to change this range, edit FreeSWITCH dialplan and defaultNumDigitsForTelVoice of bigbluebutton.properties.
301
     *
302
     * The voiceBridge number must be different for every meeting.
303
     *
304
     * This parameter is optional. If you do not specify a voiceBridge number, then BigBlueButton will assign a random
305
     * unused number for the meeting.
306
     *
307
     * If do you pass a voiceBridge number, then you must ensure that each meeting has a unique voiceBridge number;
308
     * otherwise, reusing same voiceBridge number for two different meetings will cause users from one meeting to appear
309
     * as phone users in the other, which will be very confusing to users in both meetings.
310
     */
311
    public function setVoiceBridge(int $voiceBridge): self
312
    {
313
        $this->voiceBridge = $voiceBridge;
314
315
        return $this;
316
    }
317
318
    public function getWebVoice(): ?string
319
    {
320
        return $this->webVoice;
321
    }
322
323
    public function setWebVoice(string $webVoice): self
324
    {
325
        $this->webVoice = $webVoice;
326
327
        return $this;
328
    }
329
330
    public function getLogoutUrl(): ?string
331
    {
332
        return $this->logoutUrl;
333
    }
334
335
    /**
336
     * The URL that the BigBlueButton client will go to after users click the OK button on the ‘You have been logged
337
     * out message’. This overrides the value for bigbluebutton.web.logoutURL in bigbluebutton.properties.
338
     */
339
    public function setLogoutUrl(string $logoutUrl): self
340
    {
341
        $this->logoutUrl = $logoutUrl;
342
343
        return $this;
344
    }
345
346
    public function getMaxParticipants(): ?int
347
    {
348
        return $this->maxParticipants;
349
    }
350
351
    /**
352
     * Set the maximum number of users allowed to join the conference at the same time.
353
     */
354
    public function setMaxParticipants(int $maxParticipants): self
355
    {
356
        $this->maxParticipants = $maxParticipants;
357
358
        return $this;
359
    }
360
361
    public function isRecorded(): ?bool
362
    {
363
        return $this->record;
364
    }
365
366
    /**
367
     * Setting ‘record=true’ instructs the BigBlueButton server to record the media and events in the session for
368
     * later playback. The default is false.
369
     *
370
     * In order for a playback file to be generated, a moderator must click the Start/Stop Recording button at least
371
     * once during the session; otherwise, in the absence of any recording marks, the record and playback scripts will
372
     * not generate a playback file. See also the autoStartRecording and allowStartStopRecording parameters in
373
     * 'bigbluebutton.properties'.
374
     */
375
    public function setRecord(bool $record): self
376
    {
377
        $this->record = $record;
378
379
        return $this;
380
    }
381
382
    public function isAutoStartRecording(): ?bool
383
    {
384
        return $this->autoStartRecording;
385
    }
386
387
    /**
388
     * Whether to automatically start recording when first user joins (default false).
389
     *
390
     * When this parameter is true, the recording UI in BigBlueButton will be initially active. Moderators in the
391
     * session can still pause and restart recording using the UI control.
392
     *
393
     * NOTE: Don’t pass autoStartRecording=false and allowStartStopRecording=false - the moderator won’t be able to
394
     * start recording!
395
     */
396
    public function setAutoStartRecording(bool $autoStartRecording): self
397
    {
398
        $this->autoStartRecording = $autoStartRecording;
399
400
        return $this;
401
    }
402
403
    public function isAllowStartStopRecording(): ?bool
404
    {
405
        return $this->allowStartStopRecording;
406
    }
407
408
    /**
409
     * Allow the user to start/stop recording (default true).
410
     *
411
     * If you set both allowStartStopRecording=false and autoStartRecording=true, then the entire length of the
412
     * session will be recorded, and the moderators in the session will not be able to pause/resume the recording.
413
     */
414
    public function setAllowStartStopRecording(bool $allowStartStopRecording): self
415
    {
416
        $this->allowStartStopRecording = $allowStartStopRecording;
417
418
        return $this;
419
    }
420
421
    public function getDuration(): ?int
422
    {
423
        return $this->duration;
424
    }
425
426
    /**
427
     * The maximum length (in minutes) for the meeting.
428
     *
429
     * Normally, the BigBlueButton server will end the meeting when either (a) the last person leaves (it takes a
430
     * minute or two for the server to clear the meeting from memory) or when the server receives an end API request
431
     * with the associated meetingID (everyone is kicked and the meeting is immediately cleared from memory).
432
     *
433
     * BigBlueButton begins tracking the length of a meeting when it is created. If duration contains a non-zero
434
     * value, then when the length of the meeting exceeds the duration value the server will immediately end the
435
     * meeting (equivalent to receiving an end API request at that moment).
436
     */
437
    public function setDuration(int $duration): self
438
    {
439
        $this->duration = $duration;
440
441
        return $this;
442
    }
443
444
    public function getWelcomeMessage(): ?string
445
    {
446
        return $this->welcomeMessage;
447
    }
448
449
    /**
450
     * A welcome message that gets displayed on the chat window when the participant joins. You can include keywords
451
     * (%%CONFNAME%%, %%DIALNUM%%, %%CONFNUM%%) which will be substituted automatically.
452
     *
453
     * This parameter overrides the default 'defaultWelcomeMessage' in 'bigbluebutton.properties'.
454
     */
455
    public function setWelcomeMessage(string $welcomeMessage): self
456
    {
457
        $this->welcomeMessage = $welcomeMessage;
458
459
        return $this;
460
    }
461
462
    public function getModeratorOnlyMessage(): ?string
463
    {
464
        return $this->moderatorOnlyMessage;
465
    }
466
467
    /**
468
     * Display a message to all moderators in the public chat.
469
     *
470
     * The value is interpreted in the same way as the welcome parameter.
471
     */
472
    public function setModeratorOnlyMessage(string $message): self
473
    {
474
        $this->moderatorOnlyMessage = $message;
475
476
        return $this;
477
    }
478
479
    public function isWebcamsOnlyForModerator(): ?bool
480
    {
481
        return $this->webcamsOnlyForModerator;
482
    }
483
484
    /**
485
     * Setting webcamsOnlyForModerator=true will cause all webcams shared by viewers during this meeting to
486
     * only appear for moderators.
487
     *
488
     * since 1.1
489
     */
490
    public function setWebcamsOnlyForModerator(bool $webcamsOnlyForModerator): self
491
    {
492
        $this->webcamsOnlyForModerator = $webcamsOnlyForModerator;
493
494
        return $this;
495
    }
496
497
    public function getLogo(): ?string
498
    {
499
        return $this->logo;
500
    }
501
502
    /**
503
     * Pass a URL to an image which will then be visible in the area above the participants list
504
     * if displayBrandingArea is set to true in bbb-html5's configuration.
505
     */
506
    public function setLogo(string $logo): self
507
    {
508
        $this->logo = $logo;
509
510
        return $this;
511
    }
512
513
    public function getBannerText(): ?string
514
    {
515
        return $this->bannerText;
516
    }
517
518
    /**
519
     * Will set the banner text in the client.
520
     *
521
     * @since 2.0
522
     */
523
    public function setBannerText(string $bannerText): self
524
    {
525
        $this->bannerText = $bannerText;
526
527
        return $this;
528
    }
529
530
    public function getBannerColor(): ?string
531
    {
532
        return $this->bannerColor;
533
    }
534
535
    /**
536
     * Will set the banner background color in the client. The required format is color hex #FFFFFF.
537
     *
538
     * @since 2.0
539
     */
540
    public function setBannerColor(string $bannerColor): self
541
    {
542
        $this->bannerColor = $bannerColor;
543
544
        return $this;
545
    }
546
547
    /**
548
     * @deprecated Removed in 2.5, temporarily still handled, please transition to disabledFeatures.
549
     */
550
    public function isLearningDashboardEnabled(): ?bool
551
    {
552
        return $this->learningDashboardEnabled;
0 ignored issues
show
Deprecated Code introduced by
The property BigBlueButton\Parameters...earningDashboardEnabled has been deprecated: Removed in 2.5, temporarily still handled, please transition to disabledFeatures. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

552
        return /** @scrutinizer ignore-deprecated */ $this->learningDashboardEnabled;

This property has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the property will be removed from the class and what other property to use instead.

Loading history...
553
    }
554
555
    /**
556
     * Default learningDashboardEnabled=true. When this option is enabled BigBlueButton generates a Dashboard
557
     * where moderators can view a summary of the activities of the meeting.
558
     *
559
     * Default: true
560
     *
561
     * @since 2.4
562
     * @deprecated Removed in 2.5, temporarily still handled, please transition to disabledFeatures.
563
     */
564
    public function setLearningDashboardEnabled(bool $learningDashboardEnabled): self
565
    {
566
        $this->learningDashboardEnabled = $learningDashboardEnabled;
0 ignored issues
show
Deprecated Code introduced by
The property BigBlueButton\Parameters...earningDashboardEnabled has been deprecated: Removed in 2.5, temporarily still handled, please transition to disabledFeatures. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

566
        /** @scrutinizer ignore-deprecated */ $this->learningDashboardEnabled = $learningDashboardEnabled;

This property has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the property will be removed from the class and what other property to use instead.

Loading history...
567
568
        return $this;
569
    }
570
571
    /**
572
     * @deprecated Removed in 2.5, temporarily still handled, please transition to disabledFeatures.
573
     */
574
    public function isVirtualBackgroundsDisabled(): ?bool
575
    {
576
        return $this->virtualBackgroundsDisabled;
0 ignored issues
show
Deprecated Code introduced by
The property BigBlueButton\Parameters...tualBackgroundsDisabled has been deprecated: Removed in 2.5, temporarily still handled, please transition to disabledFeatures. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

576
        return /** @scrutinizer ignore-deprecated */ $this->virtualBackgroundsDisabled;

This property has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the property will be removed from the class and what other property to use instead.

Loading history...
577
    }
578
579
    /**
580
     * Setting to true will disable Virtual Backgrounds for all users in the meeting.
581
     *
582
     * Default: false
583
     *
584
     * @since 2.4.3
585
     *
586
     * @param mixed $virtualBackgroundsDisabled
587
     *
588
     * @deprecated Removed in 2.5, temporarily still handled, please transition to disabledFeatures.
589
     */
590
    public function setVirtualBackgroundsDisabled($virtualBackgroundsDisabled): self
591
    {
592
        $this->virtualBackgroundsDisabled = $virtualBackgroundsDisabled;
0 ignored issues
show
Deprecated Code introduced by
The property BigBlueButton\Parameters...tualBackgroundsDisabled has been deprecated: Removed in 2.5, temporarily still handled, please transition to disabledFeatures. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

592
        /** @scrutinizer ignore-deprecated */ $this->virtualBackgroundsDisabled = $virtualBackgroundsDisabled;

This property has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the property will be removed from the class and what other property to use instead.

Loading history...
593
594
        return $this;
595
    }
596
597
    public function getLearningDashboardCleanupDelayInMinutes(): ?int
598
    {
599
        return $this->learningDashboardCleanupDelayInMinutes;
600
    }
601
602
    /**
603
     * Default learningDashboardCleanupDelayInMinutes=2. This option set the delay (in minutes) before the Learning
604
     * Dashboard become unavailable after the end of the meeting. If this value is zero, the Learning Dashboard will
605
     * keep available permanently.
606
     *
607
     * @since 2.4
608
     *
609
     * Default: 2
610
     */
611
    public function setLearningDashboardCleanupDelayInMinutes(int $learningDashboardCleanupDelayInMinutes): self
612
    {
613
        $this->learningDashboardCleanupDelayInMinutes = $learningDashboardCleanupDelayInMinutes;
614
615
        return $this;
616
    }
617
618
    public function getEndWhenNoModeratorDelayInMinutes(): ?int
619
    {
620
        return $this->endWhenNoModeratorDelayInMinutes;
621
    }
622
623
    /**
624
     * Defaults to the value of endWhenNoModeratorDelayInMinutes=1. If endWhenNoModerator is true, the meeting
625
     * will be automatically ended after this many minutes.
626
     *
627
     * Default: 1
628
     *
629
     * @since in 2.2
630
     */
631
    public function setEndWhenNoModeratorDelayInMinutes(int $endWhenNoModeratorDelayInMinutes): self
632
    {
633
        $this->endWhenNoModeratorDelayInMinutes = $endWhenNoModeratorDelayInMinutes;
634
635
        return $this;
636
    }
637
638
    public function isEndWhenNoModerator(): ?bool
639
    {
640
        return $this->endWhenNoModerator;
641
    }
642
643
    /**
644
     * Default endWhenNoModerator=false. If endWhenNoModerator is true the meeting will end automatically after
645
     * a delay - see endWhenNoModeratorDelayInMinutes.
646
     *
647
     * Default: false
648
     *
649
     * @since in 2.3
650
     */
651
    public function setEndWhenNoModerator(bool $endWhenNoModerator): self
652
    {
653
        $this->endWhenNoModerator = $endWhenNoModerator;
654
655
        return $this;
656
    }
657
658
    public function isMeetingKeepEvents(): ?bool
659
    {
660
        return $this->meetingKeepEvents;
661
    }
662
663
    /**
664
     * Defaults to the value of defaultKeepEvents. If meetingKeepEvents is true BigBlueButton saves meeting
665
     * events even if the meeting is not recorded.
666
     *
667
     * Default: false
668
     *
669
     * @since in 2.3
670
     */
671
    public function setMeetingKeepEvents(bool $meetingKeepEvents): self
672
    {
673
        $this->meetingKeepEvents = $meetingKeepEvents;
674
675
        return $this;
676
    }
677
678
    public function getCopyright(): ?string
679
    {
680
        return $this->copyright;
681
    }
682
683
    public function setCopyright(string $copyright): self
684
    {
685
        $this->copyright = $copyright;
686
687
        return $this;
688
    }
689
690
    public function isMuteOnStart(): ?bool
691
    {
692
        return $this->muteOnStart;
693
    }
694
695
    /**
696
     * Setting true will mute all users when the meeting starts.
697
     *
698
     * @since 2.0
699
     */
700
    public function setMuteOnStart(bool $muteOnStart): self
701
    {
702
        $this->muteOnStart = $muteOnStart;
703
704
        return $this;
705
    }
706
707
    public function isLockSettingsDisableCam(): ?bool
708
    {
709
        return $this->lockSettingsDisableCam;
710
    }
711
712
    /**
713
     * Setting true will prevent users from sharing their camera in the meeting.
714
     *
715
     * Default: false
716
     *
717
     * @since 2.2
718
     */
719
    public function setLockSettingsDisableCam(bool $lockSettingsDisableCam): self
720
    {
721
        $this->lockSettingsDisableCam = $lockSettingsDisableCam;
722
723
        return $this;
724
    }
725
726
    public function isLockSettingsDisableMic(): ?bool
727
    {
728
        return $this->lockSettingsDisableMic;
729
    }
730
731
    /**
732
     * Setting to true will only allow user to join listen only.
733
     *
734
     * Default: false
735
     *
736
     * @since 2.2
737
     */
738
    public function setLockSettingsDisableMic(bool $lockSettingsDisableMic): self
739
    {
740
        $this->lockSettingsDisableMic = $lockSettingsDisableMic;
741
742
        return $this;
743
    }
744
745
    public function isLockSettingsDisablePrivateChat(): ?bool
746
    {
747
        return $this->lockSettingsDisablePrivateChat;
748
    }
749
750
    /**
751
     * Setting to true will disable private chats in the meeting.
752
     *
753
     * Default: false
754
     *
755
     * @since 2.2
756
     */
757
    public function setLockSettingsDisablePrivateChat(bool $lockSettingsDisablePrivateChat): self
758
    {
759
        $this->lockSettingsDisablePrivateChat = $lockSettingsDisablePrivateChat;
760
761
        return $this;
762
    }
763
764
    public function isLockSettingsDisablePublicChat(): ?bool
765
    {
766
        return $this->lockSettingsDisablePublicChat;
767
    }
768
769
    /**
770
     * Setting to true will disable public chat in the meeting.
771
     *
772
     * Default: false
773
     *
774
     * @since 2.2
775
     */
776
    public function setLockSettingsDisablePublicChat(bool $lockSettingsDisablePublicChat): self
777
    {
778
        $this->lockSettingsDisablePublicChat = $lockSettingsDisablePublicChat;
779
780
        return $this;
781
    }
782
783
    public function isLockSettingsDisableNote(): ?bool
784
    {
785
        return $this->lockSettingsDisableNote;
786
    }
787
788
    /**
789
     * Setting to true will disable notes in the meeting.
790
     *
791
     * Default: false
792
     *
793
     * @since 2.2
794
     */
795
    public function setLockSettingsDisableNote(bool $lockSettingsDisableNote): self
796
    {
797
        $this->lockSettingsDisableNote = $lockSettingsDisableNote;
798
799
        return $this;
800
    }
801
802
    public function isLockSettingsHideUserList(): ?bool
803
    {
804
        return $this->lockSettingsHideUserList;
805
    }
806
807
    /**
808
     * Setting to true will prevent viewers from seeing other viewers in the user list.
809
     *
810
     * Default: false
811
     *
812
     * @since 2.2
813
     */
814
    public function setLockSettingsHideUserList(bool $lockSettingsHideUserList): self
815
    {
816
        $this->lockSettingsHideUserList = $lockSettingsHideUserList;
817
818
        return $this;
819
    }
820
821
    public function isLockSettingsLockedLayout(): ?bool
822
    {
823
        return $this->lockSettingsLockedLayout;
824
    }
825
826
    public function setLockSettingsLockedLayout(bool $lockSettingsLockedLayout): self
827
    {
828
        $this->lockSettingsLockedLayout = $lockSettingsLockedLayout;
829
830
        return $this;
831
    }
832
833
    public function isLockSettingsLockOnJoin(): ?bool
834
    {
835
        return $this->lockSettingsLockOnJoin;
836
    }
837
838
    /**
839
     * Setting to false will not apply lock setting to users when they join.
840
     *
841
     * Default: true
842
     *
843
     * @since 2.2
844
     */
845
    public function setLockSettingsLockOnJoin(bool $lockOnJoin): self
846
    {
847
        $this->lockSettingsLockOnJoin = $lockOnJoin;
848
849
        return $this;
850
    }
851
852
    public function isLockSettingsLockOnJoinConfigurable(): ?bool
853
    {
854
        return $this->lockSettingsLockOnJoinConfigurable;
855
    }
856
857
    /**
858
     * Setting to true will allow applying of lockSettingsLockOnJoin.
859
     *
860
     * Default: false
861
     */
862
    public function setLockSettingsLockOnJoinConfigurable(bool $lockOnJoinConfigurable): self
863
    {
864
        $this->lockSettingsLockOnJoinConfigurable = $lockOnJoinConfigurable;
865
866
        return $this;
867
    }
868
869
    public function isLockSettingsHideViewersCursor(): ?bool
870
    {
871
        return $this->lockSettingsHideViewersCursor;
872
    }
873
874
    /**
875
     * Setting to true will prevent viewers to see other viewers cursor when multi-user whiteboard is on.
876
     *
877
     * Default: false
878
     *
879
     * @since 2.5
880
     */
881
    public function setLockSettingsHideViewersCursor(bool $lockSettingsHideViewersCursor): self
882
    {
883
        $this->lockSettingsHideViewersCursor = $lockSettingsHideViewersCursor;
884
885
        return $this;
886
    }
887
888
    public function isAllowModsToUnmuteUsers(): ?bool
889
    {
890
        return $this->allowModsToUnmuteUsers;
891
    }
892
893
    /**
894
     * Setting to true will allow moderators to unmute other users in the meeting.
895
     *
896
     * Default: false
897
     *
898
     * @since 2.2
899
     */
900
    public function setAllowModsToUnmuteUsers(bool $allowModsToUnmuteUsers): self
901
    {
902
        $this->allowModsToUnmuteUsers = $allowModsToUnmuteUsers;
903
904
        return $this;
905
    }
906
907
    public function isAllowModsToEjectCameras(): ?bool
908
    {
909
        return $this->allowModsToEjectCameras;
910
    }
911
912
    /**
913
     * Setting to true will allow moderators to close other users cameras in the meeting.
914
     *
915
     * Default: false
916
     *
917
     * @since 2.4
918
     */
919
    public function setAllowModsToEjectCameras(bool $allowModsToEjectCameras): self
920
    {
921
        $this->allowModsToEjectCameras = $allowModsToEjectCameras;
922
923
        return $this;
924
    }
925
926
    /**
927
     * @param mixed $endCallbackUrl
928
     */
929
    public function setEndCallbackUrl($endCallbackUrl): self
930
    {
931
        $this->addMeta('endCallbackUrl', $endCallbackUrl);
932
933
        return $this;
934
    }
935
936
    /**
937
     * @param mixed $recordingReadyCallbackUrl
938
     */
939
    public function setRecordingReadyCallbackUrl($recordingReadyCallbackUrl): self
940
    {
941
        $this->addMeta('bbb-recording-ready-url', $recordingReadyCallbackUrl);
942
943
        return $this;
944
    }
945
946
    public function isBreakout(): ?bool
947
    {
948
        return $this->isBreakout;
949
    }
950
951
    /**
952
     * Must be set to true to create a breakout room.
953
     */
954
    public function setBreakout(bool $isBreakout): self
955
    {
956
        $this->isBreakout = $isBreakout;
957
958
        return $this;
959
    }
960
961
    public function getParentMeetingId(): ?string
962
    {
963
        return $this->parentMeetingId;
964
    }
965
966
    /**
967
     * Must be provided when creating a breakout room, the parent room must be running.
968
     */
969
    public function setParentMeetingId(string $parentMeetingId): self
970
    {
971
        $this->parentMeetingId = $parentMeetingId;
972
973
        return $this;
974
    }
975
976
    public function getSequence(): ?int
977
    {
978
        return $this->sequence;
979
    }
980
981
    /**
982
     * The sequence number of the breakout room.
983
     */
984
    public function setSequence(int $sequence): self
985
    {
986
        $this->sequence = $sequence;
987
988
        return $this;
989
    }
990
991
    public function isFreeJoin(): ?bool
992
    {
993
        return $this->freeJoin;
994
    }
995
996
    /**
997
     * If set to true, the client will give the user the choice to choose the breakout rooms he wants to join.
998
     */
999
    public function setFreeJoin(bool $freeJoin): self
1000
    {
1001
        $this->freeJoin = $freeJoin;
1002
1003
        return $this;
1004
    }
1005
1006
    public function getGuestPolicy(): ?string
1007
    {
1008
        return $this->guestPolicy;
1009
    }
1010
1011
    /**
1012
     * Will set the guest policy for the meeting. The guest policy determines whether or not users who send a
1013
     * join request with guest=true will be allowed to join the meeting. Possible values are ALWAYS_ACCEPT,
1014
     * ALWAYS_DENY, and ASK_MODERATOR.
1015
     *
1016
     * Default: ALWAYS_ACCEPT
1017
     */
1018
    public function setGuestPolicy(string $guestPolicy): self
1019
    {
1020
        $this->guestPolicy = $guestPolicy;
1021
1022
        return $this;
1023
    }
1024
1025
    /**
1026
     * @deprecated Removed in 2.5, temporarily still handled, please transition to disabledFeatures.
1027
     */
1028
    public function isBreakoutRoomsEnabled(): ?bool
1029
    {
1030
        return $this->breakoutRoomsEnabled;
0 ignored issues
show
Deprecated Code introduced by
The property BigBlueButton\Parameters...::$breakoutRoomsEnabled has been deprecated: Removed in 2.5, temporarily still handled, please transition to disabledFeatures. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1030
        return /** @scrutinizer ignore-deprecated */ $this->breakoutRoomsEnabled;

This property has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the property will be removed from the class and what other property to use instead.

Loading history...
1031
    }
1032
1033
    /**
1034
     * If set to false, breakout rooms will be disabled.
1035
     *
1036
     * Default: true
1037
     *
1038
     * @param mixed $breakoutRoomsEnabled
1039
     *
1040
     * @deprecated Removed in 2.5, temporarily still handled, please transition to disabledFeatures.
1041
     */
1042
    public function setBreakoutRoomsEnabled($breakoutRoomsEnabled): self
1043
    {
1044
        $this->breakoutRoomsEnabled = $breakoutRoomsEnabled;
0 ignored issues
show
Deprecated Code introduced by
The property BigBlueButton\Parameters...::$breakoutRoomsEnabled has been deprecated: Removed in 2.5, temporarily still handled, please transition to disabledFeatures. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1044
        /** @scrutinizer ignore-deprecated */ $this->breakoutRoomsEnabled = $breakoutRoomsEnabled;

This property has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the property will be removed from the class and what other property to use instead.

Loading history...
1045
1046
        return $this;
1047
    }
1048
1049
    public function isBreakoutRoomsRecord(): ?bool
1050
    {
1051
        return $this->breakoutRoomsRecord;
1052
    }
1053
1054
    /**
1055
     * If set to false, breakout rooms will not be recorded.
1056
     *
1057
     * Default: true
1058
     */
1059
    public function setBreakoutRoomsRecord(bool $breakoutRoomsRecord): self
1060
    {
1061
        $this->breakoutRoomsRecord = $breakoutRoomsRecord;
1062
1063
        return $this;
1064
    }
1065
1066
    public function isBreakoutRoomsPrivateChatEnabled(): ?bool
1067
    {
1068
        return $this->breakoutRoomsPrivateChatEnabled;
1069
    }
1070
1071
    /**
1072
     * If set to false, the private chat will be disabled in breakout rooms.
1073
     *
1074
     * Default: true
1075
     */
1076
    public function setBreakoutRoomsPrivateChatEnabled(bool $breakoutRoomsPrivateChatEnabled): self
1077
    {
1078
        $this->breakoutRoomsPrivateChatEnabled = $breakoutRoomsPrivateChatEnabled;
1079
1080
        return $this;
1081
    }
1082
1083
    public function getMeetingEndedURL(): ?string
1084
    {
1085
        return $this->meetingEndedURL;
1086
    }
1087
1088
    public function setMeetingEndedURL(string $meetingEndedURL): self
1089
    {
1090
        $this->meetingEndedURL = $meetingEndedURL;
1091
1092
        return $this;
1093
    }
1094
1095
    public function getMeetingLayout(): ?string
1096
    {
1097
        return $this->meetingLayout;
1098
    }
1099
1100
    /**
1101
     * Will set the default layout for the meeting. Possible values are: CUSTOM_LAYOUT, SMART_LAYOUT,
1102
     * PRESENTATION_FOCUS, VIDEO_FOCUS.
1103
     *
1104
     * Default: SMART_LAYOUT
1105
     *
1106
     * @since 2.4
1107
     */
1108
    public function setMeetingLayout(string $meetingLayout): self
1109
    {
1110
        $this->meetingLayout = $meetingLayout;
1111
1112
        return $this;
1113
    }
1114
1115
    public function isAllowRequestsWithoutSession(): ?bool
1116
    {
1117
        return $this->allowRequestsWithoutSession;
1118
    }
1119
1120
    /**
1121
     * Setting to true will allow users to join meetings without session cookie's validation.
1122
     *
1123
     * Default: false
1124
     *
1125
     * @since 2.4.3
1126
     *
1127
     * @param mixed $allowRequestsWithoutSession
1128
     */
1129
    public function setAllowRequestsWithoutSession($allowRequestsWithoutSession): self
1130
    {
1131
        $this->allowRequestsWithoutSession = $allowRequestsWithoutSession;
1132
1133
        return $this;
1134
    }
1135
1136
    public function getUserCameraCap(): ?int
1137
    {
1138
        return $this->userCameraCap;
1139
    }
1140
1141
    /**
1142
     * Setting to 0 will disable this threshold. Defines the max number of webcams a single user can share
1143
     * simultaneously.
1144
     *
1145
     * Default: 3
1146
     *
1147
     * @since 2.4.5
1148
     */
1149
    public function setUserCameraCap(int $userCameraCap): self
1150
    {
1151
        $this->userCameraCap = $userCameraCap;
1152
1153
        return $this;
1154
    }
1155
1156
    public function getMeetingCameraCap(): ?int
1157
    {
1158
        return $this->meetingCameraCap;
1159
    }
1160
1161
    /**
1162
     * Setting to 0 will disable this threshold. Defines the max number of webcams a meeting can have
1163
     * simultaneously.
1164
     *
1165
     * Default: 0
1166
     *
1167
     * @since 2.5.0
1168
     */
1169
    public function setMeetingCameraCap(int $meetingCameraCap): self
1170
    {
1171
        $this->meetingCameraCap = $meetingCameraCap;
1172
1173
        return $this;
1174
    }
1175
1176
    public function getMeetingExpireIfNoUserJoinedInMinutes(): ?int
1177
    {
1178
        return $this->meetingExpireIfNoUserJoinedInMinutes;
1179
    }
1180
1181
    /**
1182
     * Automatically end meeting if no user joined within a period of time after meeting created.
1183
     *
1184
     * Default: 5
1185
     *
1186
     * @since 2.5
1187
     */
1188
    public function setMeetingExpireIfNoUserJoinedInMinutes(int $meetingExpireIfNoUserJoinedInMinutes): self
1189
    {
1190
        $this->meetingExpireIfNoUserJoinedInMinutes = $meetingExpireIfNoUserJoinedInMinutes;
1191
1192
        return $this;
1193
    }
1194
1195
    public function getMeetingExpireWhenLastUserLeftInMinutes(): ?int
1196
    {
1197
        return $this->meetingExpireWhenLastUserLeftInMinutes;
1198
    }
1199
1200
    /**
1201
     * Number of minutes to automatically end meeting after last user left..
1202
     *
1203
     * Setting to 0 will disable this function.
1204
     *
1205
     * Default: 1
1206
     *
1207
     * @since 2.5
1208
     */
1209
    public function setMeetingExpireWhenLastUserLeftInMinutes(int $meetingExpireWhenLastUserLeftInMinutes): self
1210
    {
1211
        $this->meetingExpireWhenLastUserLeftInMinutes = $meetingExpireWhenLastUserLeftInMinutes;
1212
1213
        return $this;
1214
    }
1215
1216
    public function isPreUploadedPresentationOverrideDefault(): ?bool
1217
    {
1218
        return $this->preUploadedPresentationOverrideDefault;
1219
    }
1220
1221
    /**
1222
     * If it is true, the default.pdf document is not sent along with the other presentations in the /create
1223
     * endpoint, on the other hand, if that's false, the default.pdf is sent with the other documents.
1224
     *
1225
     * Default: true
1226
     */
1227
    public function setPreUploadedPresentationOverrideDefault(bool $preUploadedPresentationOverrideDefault): self
1228
    {
1229
        $this->preUploadedPresentationOverrideDefault = $preUploadedPresentationOverrideDefault;
1230
1231
        return $this;
1232
    }
1233
1234
    /**
1235
     * @return array<string, mixed>
1236
     */
1237
    public function getDisabledFeatures(): array
1238
    {
1239
        return $this->disabledFeatures;
1240
    }
1241
1242
    /**
1243
     * List of features to disable in a particular meeting.
1244
     *
1245
     * Available options to disable:
1246
     * - breakoutRooms:                                         Breakout Rooms
1247
     * - captions:                                              Closed Caption
1248
     * - chat:                                                  Chat
1249
     * - downloadPresentationWithAnnotations:                   Annotated presentation download
1250
     * - snapshotOfCurrentSlide:                                Allow snapshot of the current slide
1251
     * - externalVideos:                                        Share an external video
1252
     * - importPresentationWithAnnotationsFromBreakoutRooms:    Capture breakout presentation
1253
     * - importSharedNotesFromBreakoutRooms:                    Capture breakout shared notes
1254
     * - layouts:                                               Layouts (allow only default layout)
1255
     * - learningDashboard:                                     Learning Analytics Dashboard
1256
     * - polls:                                                 Polls
1257
     * - screenshare:                                           Screen Sharing
1258
     * - sharedNotes:                                           Shared Notes
1259
     * - virtualBackgrounds:                                    Virtual Backgrounds
1260
     * - customVirtualBackgrounds:                              Virtual Backgrounds Upload
1261
     * - liveTranscription:                                     Live Transcription
1262
     * - presentation:                                          Presentation
1263
     * - cameraAsContent:                                       Enables/Disables camera as a content
1264
     * - timer:                                                 Disables timer
1265
     *
1266
     * @param array<string, mixed> $disabledFeatures
1267
     *
1268
     * @since 2.5
1269
     */
1270
    public function setDisabledFeatures(array $disabledFeatures): self
1271
    {
1272
        $this->disabledFeatures = $disabledFeatures;
1273
1274
        return $this;
1275
    }
1276
1277
    /**
1278
     * @return array<string, mixed>
1279
     */
1280
    public function getDisabledFeaturesExclude(): array
1281
    {
1282
        return $this->disabledFeaturesExclude;
1283
    }
1284
1285
    /**
1286
     * List of features to no longer disable in a particular meeting. This is particularly useful if you
1287
     * disabled a list of features on a per-server basis but want to allow one of two of these features
1288
     * for a specific meeting.
1289
     *
1290
     * The available options to exclude are exactly the same as for disabledFeatures
1291
     *
1292
     * @param array<string, mixed> $disabledFeaturesExclude
1293
     *
1294
     * @since 2.6.9
1295
     */
1296
    public function setDisabledFeaturesExclude(array $disabledFeaturesExclude): self
1297
    {
1298
        $this->disabledFeaturesExclude = $disabledFeaturesExclude;
1299
1300
        return $this;
1301
    }
1302
1303
    public function getRecordFullDurationMedia(): ?bool
1304
    {
1305
        return $this->recordFullDurationMedia;
1306
    }
1307
1308
    /**
1309
     * Controls whether media (audio, cameras and screen sharing) should be captured on their full duration
1310
     * if the meeting's recorded property is true (recorded=true). Default is false: only captures media while
1311
     * recording is running in the meeting.
1312
     *
1313
     * Default: false
1314
     *
1315
     * @since 2.6.9
1316
     */
1317
    public function setRecordFullDurationMedia(bool $recordFullDurationMedia): self
1318
    {
1319
        $this->recordFullDurationMedia = $recordFullDurationMedia;
1320
1321
        return $this;
1322
    }
1323
1324
    /**
1325
     * @return array<int, array<string, mixed>>
1326
     */
1327
    public function getBreakoutRoomsGroups(): array
1328
    {
1329
        return $this->breakoutRoomsGroups;
1330
    }
1331
1332
    /**
1333
     * @param mixed $id
1334
     * @param mixed $name
1335
     * @param mixed $roster
1336
     */
1337
    public function addBreakoutRoomsGroup($id, $name, $roster): self
1338
    {
1339
        $this->breakoutRoomsGroups[] = ['id' => $id, 'name' => $name, 'roster' => $roster];
1340
1341
        return $this;
1342
    }
1343
1344
    public function getNotifyRecordingIsOn(): ?bool
1345
    {
1346
        return $this->notifyRecordingIsOn;
1347
    }
1348
1349
    /**
1350
     * If it is true, a modal will be displayed to collect recording consent from users when meeting recording
1351
     * starts (only if remindRecordingIsOn=true).
1352
     *
1353
     * Default: false
1354
     *
1355
     * @since 2.6
1356
     */
1357
    public function setNotifyRecordingIsOn(bool $notifyRecordingIsOn): self
1358
    {
1359
        $this->notifyRecordingIsOn = $notifyRecordingIsOn;
1360
1361
        return $this;
1362
    }
1363
1364
    public function getPresentationUploadExternalUrl(): ?string
1365
    {
1366
        return $this->presentationUploadExternalUrl;
1367
    }
1368
1369
    /**
1370
     * Pass a URL to a specific page in external application to select files for inserting documents into a live
1371
     * presentation. Only works if presentationUploadExternalDescription is also set.
1372
     *
1373
     * @since 2.6
1374
     */
1375
    public function setPresentationUploadExternalUrl(string $presentationUploadExternalUrl): self
1376
    {
1377
        $this->presentationUploadExternalUrl = $presentationUploadExternalUrl;
1378
1379
        return $this;
1380
    }
1381
1382
    public function getPresentationUploadExternalDescription(): ?string
1383
    {
1384
        return $this->presentationUploadExternalDescription;
1385
    }
1386
1387
    /**
1388
     * Message to be displayed in presentation uploader modal describing how to use an external application to
1389
     * upload presentation files. Only works if presentationUploadExternalUrl is also set.
1390
     *
1391
     * @since 2.6
1392
     */
1393
    public function setPresentationUploadExternalDescription(string $presentationUploadExternalDescription): self
1394
    {
1395
        $this->presentationUploadExternalDescription = $presentationUploadExternalDescription;
1396
1397
        return $this;
1398
    }
1399
1400
    public function getHTTPQuery(): string
1401
    {
1402
        $queries = [
1403
            'name'                                   => $this->meetingName,
1404
            'meetingID'                              => $this->meetingId,
1405
            'attendeePW'                             => $this->attendeePassword,
0 ignored issues
show
Deprecated Code introduced by
The property BigBlueButton\Parameters...ters::$attendeePassword has been deprecated: Password-string replaced by an Enum\Role-constant in JoinMeetingParameters::__construct() ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1405
            'attendeePW'                             => /** @scrutinizer ignore-deprecated */ $this->attendeePassword,

This property has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the property will be removed from the class and what other property to use instead.

Loading history...
1406
            'moderatorPW'                            => $this->moderatorPassword,
0 ignored issues
show
Deprecated Code introduced by
The property BigBlueButton\Parameters...ers::$moderatorPassword has been deprecated: Password-string replaced by an Enum\Role-constant in JoinMeetingParameters::__construct() ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1406
            'moderatorPW'                            => /** @scrutinizer ignore-deprecated */ $this->moderatorPassword,

This property has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the property will be removed from the class and what other property to use instead.

Loading history...
1407
            'dialNumber'                             => $this->dialNumber,
1408
            'voiceBridge'                            => $this->voiceBridge,
1409
            'webVoice'                               => $this->webVoice,
1410
            'logoutURL'                              => $this->logoutUrl,
1411
            'record'                                 => !is_null($this->record) ? ($this->record ? 'true' : 'false') : $this->record,
1412
            'duration'                               => $this->duration,
1413
            'maxParticipants'                        => $this->maxParticipants,
1414
            'autoStartRecording'                     => !is_null($this->autoStartRecording) ? ($this->autoStartRecording ? 'true' : 'false') : $this->autoStartRecording,
1415
            'allowStartStopRecording'                => !is_null($this->allowStartStopRecording) ? ($this->allowStartStopRecording ? 'true' : 'false') : $this->allowStartStopRecording,
1416
            'welcome'                                => !is_null($this->welcomeMessage) ? trim($this->welcomeMessage) : '',
1417
            'moderatorOnlyMessage'                   => !is_null($this->moderatorOnlyMessage) ? trim($this->moderatorOnlyMessage) : '',
1418
            'webcamsOnlyForModerator'                => !is_null($this->webcamsOnlyForModerator) ? ($this->webcamsOnlyForModerator ? 'true' : 'false') : $this->webcamsOnlyForModerator,
1419
            'logo'                                   => $this->logo,
1420
            'copyright'                              => $this->copyright,
1421
            'muteOnStart'                            => !is_null($this->muteOnStart) ? ($this->muteOnStart ? 'true' : 'false') : $this->muteOnStart,
1422
            'guestPolicy'                            => $this->guestPolicy,
1423
            'lockSettingsDisableCam'                 => !is_null($this->lockSettingsDisableCam) ? ($this->lockSettingsDisableCam ? 'true' : 'false') : $this->lockSettingsDisableCam,
1424
            'lockSettingsDisableMic'                 => !is_null($this->lockSettingsDisableMic) ? ($this->lockSettingsDisableMic ? 'true' : 'false') : $this->lockSettingsDisableMic,
1425
            'lockSettingsDisablePrivateChat'         => !is_null($this->lockSettingsDisablePrivateChat) ? ($this->lockSettingsDisablePrivateChat ? 'true' : 'false') : $this->lockSettingsDisablePrivateChat,
1426
            'lockSettingsDisablePublicChat'          => !is_null($this->lockSettingsDisablePublicChat) ? ($this->lockSettingsDisablePublicChat ? 'true' : 'false') : $this->lockSettingsDisablePublicChat,
1427
            'lockSettingsDisableNote'                => !is_null($this->lockSettingsDisableNote) ? ($this->lockSettingsDisableNote ? 'true' : 'false') : $this->lockSettingsDisableNote,
1428
            'lockSettingsHideUserList'               => !is_null($this->lockSettingsHideUserList) ? ($this->lockSettingsHideUserList ? 'true' : 'false') : $this->lockSettingsHideUserList,
1429
            'lockSettingsLockedLayout'               => !is_null($this->lockSettingsLockedLayout) ? ($this->lockSettingsLockedLayout ? 'true' : 'false') : $this->lockSettingsLockedLayout,
1430
            'lockSettingsLockOnJoin'                 => !is_null($this->lockSettingsLockOnJoin) ? ($this->lockSettingsLockOnJoin ? 'true' : 'false') : $this->lockSettingsLockOnJoin,
1431
            'lockSettingsLockOnJoinConfigurable'     => !is_null($this->lockSettingsLockOnJoinConfigurable) ? ($this->lockSettingsLockOnJoinConfigurable ? 'true' : 'false') : $this->lockSettingsLockOnJoinConfigurable,
1432
            'lockSettingsHideViewersCursor'          => !is_null($this->lockSettingsHideViewersCursor) ? ($this->lockSettingsHideViewersCursor ? 'true' : 'false') : $this->lockSettingsHideViewersCursor,
1433
            'allowModsToUnmuteUsers'                 => !is_null($this->allowModsToUnmuteUsers) ? ($this->allowModsToUnmuteUsers ? 'true' : 'false') : $this->allowModsToUnmuteUsers,
1434
            'allowModsToEjectCameras'                => !is_null($this->allowModsToEjectCameras) ? ($this->allowModsToEjectCameras ? 'true' : 'false') : $this->allowModsToEjectCameras,
1435
            'bannerText'                             => !is_null($this->bannerText) ? trim($this->bannerText) : '',
1436
            'bannerColor'                            => !is_null($this->bannerColor) ? trim($this->bannerColor) : '',
1437
            'learningDashboardEnabled'               => !is_null($this->learningDashboardEnabled) ? ($this->learningDashboardEnabled ? 'true' : 'false') : $this->learningDashboardEnabled,
0 ignored issues
show
Deprecated Code introduced by
The property BigBlueButton\Parameters...earningDashboardEnabled has been deprecated: Removed in 2.5, temporarily still handled, please transition to disabledFeatures. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1437
            'learningDashboardEnabled'               => !is_null(/** @scrutinizer ignore-deprecated */ $this->learningDashboardEnabled) ? ($this->learningDashboardEnabled ? 'true' : 'false') : $this->learningDashboardEnabled,

This property has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the property will be removed from the class and what other property to use instead.

Loading history...
1438
            'virtualBackgroundsDisabled'             => !is_null($this->virtualBackgroundsDisabled) ? ($this->virtualBackgroundsDisabled ? 'true' : 'false') : $this->virtualBackgroundsDisabled,
0 ignored issues
show
Deprecated Code introduced by
The property BigBlueButton\Parameters...tualBackgroundsDisabled has been deprecated: Removed in 2.5, temporarily still handled, please transition to disabledFeatures. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1438
            'virtualBackgroundsDisabled'             => !is_null(/** @scrutinizer ignore-deprecated */ $this->virtualBackgroundsDisabled) ? ($this->virtualBackgroundsDisabled ? 'true' : 'false') : $this->virtualBackgroundsDisabled,

This property has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the property will be removed from the class and what other property to use instead.

Loading history...
1439
            'endWhenNoModeratorDelayInMinutes'       => $this->endWhenNoModeratorDelayInMinutes,
1440
            'allowRequestsWithoutSession'            => !is_null($this->allowRequestsWithoutSession) ? ($this->allowRequestsWithoutSession ? 'true' : 'false') : $this->allowRequestsWithoutSession,
1441
            'meetingEndedURL'                        => $this->meetingEndedURL,
1442
            'breakoutRoomsEnabled'                   => !is_null($this->breakoutRoomsEnabled) ? ($this->breakoutRoomsEnabled ? 'true' : 'false') : $this->breakoutRoomsEnabled,
0 ignored issues
show
Deprecated Code introduced by
The property BigBlueButton\Parameters...::$breakoutRoomsEnabled has been deprecated: Removed in 2.5, temporarily still handled, please transition to disabledFeatures. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1442
            'breakoutRoomsEnabled'                   => !is_null($this->breakoutRoomsEnabled) ? (/** @scrutinizer ignore-deprecated */ $this->breakoutRoomsEnabled ? 'true' : 'false') : $this->breakoutRoomsEnabled,

This property has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the property will be removed from the class and what other property to use instead.

Loading history...
1443
            'breakoutRoomsRecord'                    => !is_null($this->breakoutRoomsRecord) ? ($this->breakoutRoomsRecord ? 'true' : 'false') : $this->breakoutRoomsRecord,
1444
            'breakoutRoomsPrivateChatEnabled'        => !is_null($this->breakoutRoomsPrivateChatEnabled) ? ($this->breakoutRoomsPrivateChatEnabled ? 'true' : 'false') : $this->breakoutRoomsPrivateChatEnabled,
1445
            'endWhenNoModerator'                     => !is_null($this->endWhenNoModerator) ? ($this->endWhenNoModerator ? 'true' : 'false') : $this->endWhenNoModerator,
1446
            'meetingKeepEvents'                      => !is_null($this->meetingKeepEvents) ? ($this->meetingKeepEvents ? 'true' : 'false') : $this->meetingKeepEvents,
1447
            'meetingLayout'                          => $this->meetingLayout,
1448
            'meetingCameraCap'                       => $this->meetingCameraCap,
1449
            'userCameraCap'                          => $this->userCameraCap,
1450
            'meetingExpireIfNoUserJoinedInMinutes'   => $this->meetingExpireIfNoUserJoinedInMinutes,
1451
            'meetingExpireWhenLastUserLeftInMinutes' => $this->meetingExpireWhenLastUserLeftInMinutes,
1452
            'preUploadedPresentationOverrideDefault' => $this->preUploadedPresentationOverrideDefault,
1453
            'disabledFeatures'                       => join(',', $this->disabledFeatures),
1454
            'disabledFeaturesExclude'                => join(',', $this->disabledFeaturesExclude),
1455
            'notifyRecordingIsOn'                    => !is_null($this->notifyRecordingIsOn) ? ($this->notifyRecordingIsOn ? 'true' : 'false') : $this->notifyRecordingIsOn,
1456
            'presentationUploadExternalUrl'          => $this->presentationUploadExternalUrl,
1457
            'presentationUploadExternalDescription'  => $this->presentationUploadExternalDescription,
1458
            'recordFullDurationMedia'                => !is_null($this->recordFullDurationMedia) ? ($this->recordFullDurationMedia ? 'true' : 'false') : $this->recordFullDurationMedia,
1459
        ];
1460
1461
        // Add breakout rooms parameters only if the meeting is a breakout room
1462
        if ($this->isBreakout()) {
1463
            $queries = array_merge($queries, [
1464
                'isBreakout'      => !is_null($this->isBreakout) ? ($this->isBreakout ? 'true' : 'false') : $this->isBreakout,
0 ignored issues
show
introduced by
The condition is_null($this->isBreakout) is always false.
Loading history...
1465
                'parentMeetingID' => $this->parentMeetingId,
1466
                'sequence'        => $this->sequence,
1467
                'freeJoin'        => !is_null($this->freeJoin) ? ($this->freeJoin ? 'true' : 'false') : $this->freeJoin,
1468
            ]);
1469
        } else {
1470
            $queries = array_merge($queries, [
1471
                'learningDashboardCleanupDelayInMinutes' => $this->learningDashboardCleanupDelayInMinutes,
1472
            ]);
1473
1474
            // Pre-defined groups to automatically assign the students to a given breakout room
1475
            if (!empty($this->breakoutRoomsGroups)) {
1476
                $queries = array_merge($queries, [
1477
                    'groups' => json_encode($this->breakoutRoomsGroups),
1478
                ]);
1479
            }
1480
        }
1481
1482
        $this->buildMeta($queries);
1483
1484
        return $this->buildHTTPQuery($queries);
1485
    }
1486
}
1487