Passed
Pull Request — master (#248)
by
unknown
10:47
created

CreateMeetingParameters::setBannerColor()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

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

240
        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...
241
    }
242
243
    /**
244
     * The password that the join URL can later provide as its password parameter to indicate the user will join as a
245
     * viewer. If no attendeePW is provided, the create call will return a randomly generated attendeePW password for
246
     * the meeting.
247
     *
248
     * @deprecated Password-string replaced by an Enum\Role-constant in JoinMeetingParameters::__construct()
249
     */
250
    public function setAttendeePassword(string $attendeePassword): self
251
    {
252
        $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

252
        /** @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...
253
254
        return $this;
255
    }
256
257
    /**
258
     * @deprecated Password-string replaced by an Enum\Role-constant in JoinMeetingParameters::__construct()
259
     */
260
    public function getModeratorPassword(): ?string
261
    {
262
        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

262
        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...
263
    }
264
265
    /**
266
     * The password that will join URL can later provide as its password parameter to indicate the user will as a
267
     * moderator. if no moderatorPW is provided, create will return a randomly generated moderatorPW password for
268
     * the meeting.
269
     *
270
     * @deprecated Password-string replaced by an Enum\Role-constant in JoinMeetingParameters::__construct()
271
     */
272
    public function setModeratorPassword(string $moderatorPassword): self
273
    {
274
        $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

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

556
        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...
557
    }
558
559
    /**
560
     * Default learningDashboardEnabled=true. When this option is enabled BigBlueButton generates a Dashboard
561
     * where moderators can view a summary of the activities of the meeting.
562
     *
563
     * Default: true
564
     *
565
     * @since 2.4
566
     * @deprecated Removed in 2.5, temporarily still handled, please transition to disabledFeatures.
567
     */
568
    public function setLearningDashboardEnabled(bool $learningDashboardEnabled): self
569
    {
570
        $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

570
        /** @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...
571
572
        return $this;
573
    }
574
575
    /**
576
     * @deprecated Removed in 2.5, temporarily still handled, please transition to disabledFeatures.
577
     */
578
    public function isVirtualBackgroundsDisabled(): ?bool
579
    {
580
        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

580
        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...
581
    }
582
583
    /**
584
     * Setting to true will disable Virtual Backgrounds for all users in the meeting.
585
     *
586
     * Default: false
587
     *
588
     * @since 2.4.3
589
     *
590
     * @param mixed $virtualBackgroundsDisabled
591
     *
592
     * @deprecated Removed in 2.5, temporarily still handled, please transition to disabledFeatures.
593
     */
594
    public function setVirtualBackgroundsDisabled($virtualBackgroundsDisabled): self
595
    {
596
        $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

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

1054
        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...
1055
    }
1056
1057
    /**
1058
     * If set to false, breakout rooms will be disabled.
1059
     *
1060
     * Default: true
1061
     *
1062
     * @param mixed $breakoutRoomsEnabled
1063
     *
1064
     * @deprecated Removed in 2.5, temporarily still handled, please transition to disabledFeatures.
1065
     */
1066
    public function setBreakoutRoomsEnabled($breakoutRoomsEnabled): self
1067
    {
1068
        $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

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

1429
            '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...
1430
            '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

1430
            '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...
1431
            'dialNumber'                             => $this->dialNumber,
1432
            'voiceBridge'                            => $this->voiceBridge,
1433
            'webVoice'                               => $this->webVoice,
1434
            'logoutURL'                              => $this->logoutUrl,
1435
            'record'                                 => !is_null($this->record) ? ($this->record ? 'true' : 'false') : $this->record,
1436
            'duration'                               => $this->duration,
1437
            'maxParticipants'                        => $this->maxParticipants,
1438
            'autoStartRecording'                     => !is_null($this->autoStartRecording) ? ($this->autoStartRecording ? 'true' : 'false') : $this->autoStartRecording,
1439
            'allowStartStopRecording'                => !is_null($this->allowStartStopRecording) ? ($this->allowStartStopRecording ? 'true' : 'false') : $this->allowStartStopRecording,
1440
            'welcome'                                => !is_null($this->welcomeMessage) ? trim($this->welcomeMessage) : '',
1441
            'moderatorOnlyMessage'                   => !is_null($this->moderatorOnlyMessage) ? trim($this->moderatorOnlyMessage) : '',
1442
            'webcamsOnlyForModerator'                => !is_null($this->webcamsOnlyForModerator) ? ($this->webcamsOnlyForModerator ? 'true' : 'false') : $this->webcamsOnlyForModerator,
1443
            'logo'                                   => $this->logo,
1444
            'copyright'                              => $this->copyright,
1445
            'muteOnStart'                            => !is_null($this->muteOnStart) ? ($this->muteOnStart ? 'true' : 'false') : $this->muteOnStart,
1446
            'guestPolicy'                            => $this->guestPolicy,
1447
            'lockSettingsDisableCam'                 => !is_null($this->lockSettingsDisableCam) ? ($this->lockSettingsDisableCam ? 'true' : 'false') : $this->lockSettingsDisableCam,
1448
            'lockSettingsDisableMic'                 => !is_null($this->lockSettingsDisableMic) ? ($this->lockSettingsDisableMic ? 'true' : 'false') : $this->lockSettingsDisableMic,
1449
            'lockSettingsDisablePrivateChat'         => !is_null($this->lockSettingsDisablePrivateChat) ? ($this->lockSettingsDisablePrivateChat ? 'true' : 'false') : $this->lockSettingsDisablePrivateChat,
1450
            'lockSettingsDisablePublicChat'          => !is_null($this->lockSettingsDisablePublicChat) ? ($this->lockSettingsDisablePublicChat ? 'true' : 'false') : $this->lockSettingsDisablePublicChat,
1451
            'lockSettingsDisableNotes'               => !is_null($this->lockSettingsDisableNotes) ? ($this->lockSettingsDisableNotes ? 'true' : 'false') : $this->lockSettingsDisableNotes,
1452
            'lockSettingsHideUserList'               => !is_null($this->lockSettingsHideUserList) ? ($this->lockSettingsHideUserList ? 'true' : 'false') : $this->lockSettingsHideUserList,
1453
            'lockSettingsLockedLayout'               => !is_null($this->lockSettingsLockedLayout) ? ($this->lockSettingsLockedLayout ? 'true' : 'false') : $this->lockSettingsLockedLayout,
1454
            'lockSettingsLockOnJoin'                 => !is_null($this->lockSettingsLockOnJoin) ? ($this->lockSettingsLockOnJoin ? 'true' : 'false') : $this->lockSettingsLockOnJoin,
1455
            'lockSettingsLockOnJoinConfigurable'     => !is_null($this->lockSettingsLockOnJoinConfigurable) ? ($this->lockSettingsLockOnJoinConfigurable ? 'true' : 'false') : $this->lockSettingsLockOnJoinConfigurable,
1456
            'lockSettingsHideViewersCursor'          => !is_null($this->lockSettingsHideViewersCursor) ? ($this->lockSettingsHideViewersCursor ? 'true' : 'false') : $this->lockSettingsHideViewersCursor,
1457
            'allowModsToUnmuteUsers'                 => !is_null($this->allowModsToUnmuteUsers) ? ($this->allowModsToUnmuteUsers ? 'true' : 'false') : $this->allowModsToUnmuteUsers,
1458
            'allowModsToEjectCameras'                => !is_null($this->allowModsToEjectCameras) ? ($this->allowModsToEjectCameras ? 'true' : 'false') : $this->allowModsToEjectCameras,
1459
            'bannerText'                             => !is_null($this->bannerText) ? trim($this->bannerText) : '',
1460
            'bannerColor'                            => !is_null($this->bannerColor) ? trim($this->bannerColor) : '',
1461
            '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

1461
            'learningDashboardEnabled'               => !is_null($this->learningDashboardEnabled) ? ($this->learningDashboardEnabled ? 'true' : 'false') : /** @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...
1462
            '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

1462
            'virtualBackgroundsDisabled'             => !is_null($this->virtualBackgroundsDisabled) ? ($this->virtualBackgroundsDisabled ? 'true' : 'false') : /** @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...
1463
            'endWhenNoModeratorDelayInMinutes'       => $this->endWhenNoModeratorDelayInMinutes,
1464
            'allowRequestsWithoutSession'            => !is_null($this->allowRequestsWithoutSession) ? ($this->allowRequestsWithoutSession ? 'true' : 'false') : $this->allowRequestsWithoutSession,
1465
            'meetingEndedURL'                        => $this->meetingEndedURL,
1466
            '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

1466
            'breakoutRoomsEnabled'                   => !is_null($this->breakoutRoomsEnabled) ? ($this->breakoutRoomsEnabled ? 'true' : 'false') : /** @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...
1467
            'breakoutRoomsRecord'                    => !is_null($this->breakoutRoomsRecord) ? ($this->breakoutRoomsRecord ? 'true' : 'false') : $this->breakoutRoomsRecord,
1468
            'breakoutRoomsPrivateChatEnabled'        => !is_null($this->breakoutRoomsPrivateChatEnabled) ? ($this->breakoutRoomsPrivateChatEnabled ? 'true' : 'false') : $this->breakoutRoomsPrivateChatEnabled,
1469
            'endWhenNoModerator'                     => !is_null($this->endWhenNoModerator) ? ($this->endWhenNoModerator ? 'true' : 'false') : $this->endWhenNoModerator,
1470
            'meetingKeepEvents'                      => !is_null($this->meetingKeepEvents) ? ($this->meetingKeepEvents ? 'true' : 'false') : $this->meetingKeepEvents,
1471
            'meetingLayout'                          => $this->meetingLayout,
1472
            'meetingCameraCap'                       => $this->meetingCameraCap,
1473
            'userCameraCap'                          => $this->userCameraCap,
1474
            'meetingExpireIfNoUserJoinedInMinutes'   => $this->meetingExpireIfNoUserJoinedInMinutes,
1475
            'meetingExpireWhenLastUserLeftInMinutes' => $this->meetingExpireWhenLastUserLeftInMinutes,
1476
            'preUploadedPresentationOverrideDefault' => $this->preUploadedPresentationOverrideDefault,
1477
            'disabledFeatures'                       => join(',', array_map(fn ($disabledFeature) => $disabledFeature->value, $this->getDisabledFeatures())),
1478
            'disabledFeaturesExclude'                => join(',', array_map(fn ($disabledFeatureExclude) => $disabledFeatureExclude->value, $this->getDisabledFeaturesExclude())),
1479
            'notifyRecordingIsOn'                    => !is_null($this->notifyRecordingIsOn) ? ($this->notifyRecordingIsOn ? 'true' : 'false') : $this->notifyRecordingIsOn,
1480
            'presentationUploadExternalUrl'          => $this->presentationUploadExternalUrl,
1481
            'presentationUploadExternalDescription'  => $this->presentationUploadExternalDescription,
1482
            'recordFullDurationMedia'                => !is_null($this->recordFullDurationMedia) ? ($this->recordFullDurationMedia ? 'true' : 'false') : $this->recordFullDurationMedia,
1483
        ];
1484
1485
        // Add breakout rooms parameters only if the meeting is a breakout room
1486
        if ($this->isBreakout()) {
1487
            $queries = array_merge($queries, [
1488
                '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...
1489
                'parentMeetingID' => $this->parentMeetingId,
1490
                'sequence'        => $this->sequence,
1491
                'freeJoin'        => !is_null($this->freeJoin) ? ($this->freeJoin ? 'true' : 'false') : $this->freeJoin,
1492
            ]);
1493
        } else {
1494
            $queries = array_merge($queries, [
1495
                'learningDashboardCleanupDelayInMinutes' => $this->learningDashboardCleanupDelayInMinutes,
1496
            ]);
1497
1498
            // Pre-defined groups to automatically assign the students to a given breakout room
1499
            if (!empty($this->breakoutRoomsGroups)) {
1500
                $queries = array_merge($queries, [
1501
                    'groups' => json_encode($this->breakoutRoomsGroups),
1502
                ]);
1503
            }
1504
        }
1505
1506
        $this->buildMeta($queries);
1507
1508
        return $this->buildHTTPQuery($queries);
1509
    }
1510
}
1511