Completed
Pull Request — master (#25)
by Ghazi
06:28 queued 04:34
created

CreateMeetingParameters::getLogo()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
/**
3
 * BigBlueButton open source conferencing system - https://www.bigbluebutton.org/.
4
 *
5
 * Copyright (c) 2016-2018 BigBlueButton Inc. and by respective authors (see below).
6
 *
7
 * This program is free software; you can redistribute it and/or modify it under the
8
 * terms of the GNU Lesser General Public License as published by the Free Software
9
 * Foundation; either version 3.0 of the License, or (at your option) any later
10
 * version.
11
 *
12
 * BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
13
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
14
 * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU Lesser General Public License along
17
 * with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
18
 */
19
namespace BigBlueButton\Parameters;
20
21
/**
22
 * Class CreateMeetingParameters.
23
 */
24
class CreateMeetingParameters extends MetaParameters
25
{
26
    /**
27
     * @var string
28
     */
29
    private $meetingId;
30
31
    /**
32
     * @var string
33
     */
34
    private $meetingName;
35
36
    /**
37
     * @var string
38
     */
39
    private $attendeePassword;
40
41
    /**
42
     * @var string
43
     */
44
    private $moderatorPassword;
45
46
    /**
47
     * @var string
48
     */
49
    private $dialNumber;
50
51
    /**
52
     * @var int
53
     */
54
    private $voiceBridge;
55
56
    /**
57
     * @var string
58
     */
59
    private $webVoice;
60
61
    /**
62
     * @var string
63
     */
64
    private $logoutUrl;
65
66
    /**
67
     * @var int
68
     */
69
    private $maxParticipants;
70
71
    /**
72
     * @var bool
73
     */
74
    private $record;
75
76
    /**
77
     * @var bool
78
     */
79
    private $autoStartRecording;
80
81
    /**
82
     * @var bool
83
     */
84
    private $allowStartStopRecording;
85
86
    /**
87
     * @var int
88
     */
89
    private $duration;
90
91
    /**
92
     * @var string
93
     */
94
    private $welcomeMessage;
95
96
    /**
97
     * @var string
98
     */
99
    private $moderatorOnlyMessage;
100
101
    /**
102
     * @var bool
103
     */
104
    private $webcamsOnlyForModerator;
105
106
    /**
107
     * @var string
108
     */
109
    private $logo;
110
111
    /**
112
     * @var string
113
     */
114
    private $copyright;
115
116
    /**
117
     * @var bool
118
     */
119
    private $muteOnStart;
120
121
    /**
122
     * @var array
123
     */
124
    private $presentations = [];
125
126
    /**
127
     * CreateMeetingParameters constructor.
128
     *
129
     * @param $meetingId
130
     * @param $meetingName
131
     */
132
    public function __construct($meetingId, $meetingName)
133
    {
134
        $this->meetingId   = $meetingId;
135
        $this->meetingName = $meetingName;
136
    }
137
138
    /**
139
     * @return string
140
     */
141
    public function getMeetingId()
142
    {
143
        return $this->meetingId;
144
    }
145
146
    /**
147
     * @param string $meetingId
148
     *
149
     * @return CreateMeetingParameters
150
     */
151
    public function setMeetingId($meetingId)
152
    {
153
        $this->meetingId = $meetingId;
154
155
        return $this;
156
    }
157
158
    /**
159
     * @return string
160
     */
161
    public function getMeetingName()
162
    {
163
        return $this->meetingName;
164
    }
165
166
    /**
167
     * @param string $meetingName
168
     *
169
     * @return CreateMeetingParameters
170
     */
171
    public function setMeetingName($meetingName)
172
    {
173
        $this->meetingName = $meetingName;
174
175
        return $this;
176
    }
177
178
    /**
179
     * @return string
180
     */
181
    public function getAttendeePassword()
182
    {
183
        return $this->attendeePassword;
184
    }
185
186
    /**
187
     * @param string $attendeePassword
188
     *
189
     * @return CreateMeetingParameters
190
     */
191
    public function setAttendeePassword($attendeePassword)
192
    {
193
        $this->attendeePassword = $attendeePassword;
194
195
        return $this;
196
    }
197
198
    /**
199
     * @return string
200
     */
201
    public function getModeratorPassword()
202
    {
203
        return $this->moderatorPassword;
204
    }
205
206
    /**
207
     * @param string $moderatorPassword
208
     *
209
     * @return CreateMeetingParameters
210
     */
211
    public function setModeratorPassword($moderatorPassword)
212
    {
213
        $this->moderatorPassword = $moderatorPassword;
214
215
        return $this;
216
    }
217
218
    /**
219
     * @return string
220
     */
221
    public function getDialNumber()
222
    {
223
        return $this->dialNumber;
224
    }
225
226
    /**
227
     * @param string $dialNumber
228
     *
229
     * @return CreateMeetingParameters
230
     */
231
    public function setDialNumber($dialNumber)
232
    {
233
        $this->dialNumber = $dialNumber;
234
235
        return $this;
236
    }
237
238
    /**
239
     * @return int
240
     */
241
    public function getVoiceBridge()
242
    {
243
        return $this->voiceBridge;
244
    }
245
246
    /**
247
     * @param int $voiceBridge
248
     *
249
     * @return CreateMeetingParameters
250
     */
251
    public function setVoiceBridge($voiceBridge)
252
    {
253
        $this->voiceBridge = $voiceBridge;
254
255
        return $this;
256
    }
257
258
    /**
259
     * @return string
260
     */
261
    public function getWebVoice()
262
    {
263
        return $this->webVoice;
264
    }
265
266
    /**
267
     * @param string $webVoice
268
     *
269
     * @return CreateMeetingParameters
270
     */
271
    public function setWebVoice($webVoice)
272
    {
273
        $this->webVoice = $webVoice;
274
275
        return $this;
276
    }
277
278
    /**
279
     * @return string
280
     */
281
    public function getLogoutUrl()
282
    {
283
        return $this->logoutUrl;
284
    }
285
286
    /**
287
     * @param string $logoutUrl
288
     *
289
     * @return CreateMeetingParameters
290
     */
291
    public function setLogoutUrl($logoutUrl)
292
    {
293
        $this->logoutUrl = $logoutUrl;
294
295
        return $this;
296
    }
297
298
    /**
299
     * @return int
300
     */
301
    public function getMaxParticipants()
302
    {
303
        return $this->maxParticipants;
304
    }
305
306
    /**
307
     * @param int $maxParticipants
308
     *
309
     * @return CreateMeetingParameters
310
     */
311
    public function setMaxParticipants($maxParticipants)
312
    {
313
        $this->maxParticipants = $maxParticipants;
314
315
        return $this;
316
    }
317
318
    /**
319
     * @return bool
320
     */
321
    public function isRecorded()
322
    {
323
        return $this->record;
324
    }
325
326
    /**
327
     * @param bool $record
328
     *
329
     * @return CreateMeetingParameters
330
     */
331
    public function setRecord($record)
332
    {
333
        $this->record = $record;
334
335
        return $this;
336
    }
337
338
    /**
339
     * @return bool
340
     */
341
    public function isAutoStartRecording()
342
    {
343
        return $this->autoStartRecording;
344
    }
345
346
    /**
347
     * @param bool $autoStartRecording
348
     *
349
     * @return CreateMeetingParameters
350
     */
351
    public function setAutoStartRecording($autoStartRecording)
352
    {
353
        $this->autoStartRecording = $autoStartRecording;
354
355
        return $this;
356
    }
357
358
    /**
359
     * @return bool
360
     */
361
    public function isAllowStartStopRecording()
362
    {
363
        return $this->allowStartStopRecording;
364
    }
365
366
    /**
367
     * @param bool $autoStartRecording
368
     *
369
     * @return CreateMeetingParameters
370
     */
371
    public function setAllowStartStopRecording($autoStartRecording)
372
    {
373
        $this->allowStartStopRecording = $autoStartRecording;
374
375
        return $this;
376
    }
377
378
    /**
379
     * @return int
380
     */
381
    public function getDuration()
382
    {
383
        return $this->duration;
384
    }
385
386
    /**
387
     * @param int $duration
388
     *
389
     * @return CreateMeetingParameters
390
     */
391
    public function setDuration($duration)
392
    {
393
        $this->duration = $duration;
394
395
        return $this;
396
    }
397
398
    /**
399
     * @return string
400
     */
401
    public function getWelcomeMessage()
402
    {
403
        return $this->welcomeMessage;
404
    }
405
406
    /**
407
     * @param string $welcomeMessage
408
     *
409
     * @return CreateMeetingParameters
410
     */
411
    public function setWelcomeMessage($welcomeMessage)
412
    {
413
        $this->welcomeMessage = $welcomeMessage;
414
415
        return $this;
416
    }
417
418
    /**
419
     * @return string
420
     */
421
    public function getModeratorOnlyMessage()
422
    {
423
        return $this->moderatorOnlyMessage;
424
    }
425
426
    /**
427
     * @param string $message
428
     *
429
     * @return CreateMeetingParameters
430
     */
431
    public function setModeratorOnlyMessage($message)
432
    {
433
        $this->moderatorOnlyMessage = $message;
434
435
        return $this;
436
    }
437
438
    /**
439
     * @return bool
440
     */
441
    public function isWebcamsOnlyForModerator()
442
    {
443
        return $this->webcamsOnlyForModerator;
444
    }
445
446
    /**
447
     * @param  bool                    $webcamsOnlyForModerator
448
     * @return CreateMeetingParameters
449
     */
450
    public function setWebcamsOnlyForModerator($webcamsOnlyForModerator)
451
    {
452
        $this->webcamsOnlyForModerator = $webcamsOnlyForModerator;
453
454
        return $this;
455
    }
456
457
    /**
458
     * @return string
459
     */
460
    public function getLogo()
461
    {
462
        return $this->logo;
463
    }
464
465
    /**
466
     * @param  string                  $logo
467
     * @return CreateMeetingParameters
468
     */
469
    public function setLogo($logo)
470
    {
471
        $this->logo = $logo;
472
473
        return $this;
474
    }
475
476
    /**
477
     * @return string
478
     */
479
    public function getCopyright()
480
    {
481
        return $this->copyright;
482
    }
483
484
    /**
485
     * @param  string                  $copyright
486
     * @return CreateMeetingParameters
487
     */
488
    public function setCopyright($copyright)
489
    {
490
        $this->copyright = $copyright;
491
492
        return $this;
493
    }
494
495
    /**
496
     * @return bool
497
     */
498
    public function isMuteOnStart()
499
    {
500
        return $this->muteOnStart;
501
    }
502
503
    /**
504
     * @param  bool                    $muteOnStart
505
     * @return CreateMeetingParameters
506
     */
507
    public function setMuteOnStart($muteOnStart)
508
    {
509
        $this->muteOnStart = $muteOnStart;
510
511
        return $this;
512
    }
513
514
    /**
515
     * @return array
516
     */
517
    public function getPresentations()
518
    {
519
        return $this->presentations;
520
    }
521
522
    /**
523
     * @param $nameOrUrl
524
     * @param null $content
525
     *
526
     * @return CreateMeetingParameters
527
     */
528
    public function addPresentation($nameOrUrl, $content = null)
529
    {
530
        $this->presentations[$nameOrUrl] = !$content ?: base64_encode($content);
531
532
        return $this;
533
    }
534
535
    public function getPresentationsAsXML()
536
    {
537
        $result = '';
538
539
        if (!empty($this->presentations)) {
540
            $xml    = new \SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><modules/>');
541
            $module = $xml->addChild('module');
542
            $module->addAttribute('name', 'presentation');
543
544
            foreach ($this->presentations as $nameOrUrl => $content) {
545
                if ($this->presentations[$nameOrUrl] === true) {
546
                    $module->addChild('document')->addAttribute('url', $nameOrUrl);
547
                } else {
548
                    $document = $module->addChild('document');
549
                    $document->addAttribute('name', $nameOrUrl);
550
                    $document[0] = $content;
551
                }
552
            }
553
            $result = $xml->asXML();
554
        }
555
556
        return $result;
557
    }
558
559
    /**
560
     * @return string
561
     */
562
    public function getHTTPQuery()
563
    {
564
        $queries = [
565
            'name'                    => $this->meetingName,
566
            'meetingID'               => $this->meetingId,
567
            'attendeePW'              => $this->attendeePassword,
568
            'moderatorPW'             => $this->moderatorPassword,
569
            'dialNumber'              => $this->dialNumber,
570
            'voiceBridge'             => $this->voiceBridge,
571
            'webVoice'                => $this->webVoice,
572
            'logoutURL'               => $this->logoutUrl,
573
            'record'                  => $this->record ? 'true' : 'false',
574
            'duration'                => $this->duration,
575
            'maxParticipants'         => $this->maxParticipants,
576
            'autoStartRecording'      => $this->autoStartRecording ? 'true' : 'false',
577
            'allowStartStopRecording' => $this->allowStartStopRecording ? 'true' : 'false',
578
            'welcome'                 => trim($this->welcomeMessage),
579
            'moderatorOnlyMessage'    => trim($this->moderatorOnlyMessage),
580
            'webcamsOnlyForModerator' => $this->webcamsOnlyForModerator ? 'true' : 'false',
581
            'logo'                    => $this->logo,
582
            'copyright'               => $this->copyright,
583
            'muteOnStart'             => $this->muteOnStart,
584
        ];
585
586
        $this->buildMeta($queries);
587
588
        return $this->buildHTTPQuery($queries);
589
    }
590
}
591