Passed
Push — master ( c22b6a...5f79f5 )
by Julito
11:21
created

MeetingSettings::itemClass()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 9
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 5
c 0
b 0
f 0
nc 3
nop 1
dl 0
loc 9
rs 10
1
<?php
2
3
/* For licensing terms, see /license.txt */
4
5
namespace Chamilo\PluginBundle\Zoom\API;
6
7
use Exception;
8
9
/**
10
 * Class MeetingSettings. An instance of this class is included in each Meeting instance.
11
 */
12
class MeetingSettings
13
{
14
    use JsonDeserializableTrait;
15
16
    const APPROVAL_TYPE_AUTOMATICALLY_APPROVE = 0;
17
    const APPROVAL_TYPE_MANUALLY_APPROVE = 1;
18
    const APPROVAL_TYPE_NO_REGISTRATION_REQUIRED = 2;
19
20
    const REGISTRATION_TYPE_REGISTER_ONCE_ATTEND_ANY = 1;
21
    const REGISTRATION_TYPE_REGISTER_EACH = 2;
22
    const REGISTRATION_TYPE_REGISTER_ONCE_CHOOSE = 3;
23
24
    /** @var bool Start video when the host joins the meeting */
25
    public $host_video;
26
27
    /** @var bool Start video when participants join the meeting */
28
    public $participant_video;
29
30
    /** @var bool Host meeting in China */
31
    public $cn_meeting;
32
33
    /** @var bool Host meeting in India */
34
    public $in_meeting;
35
36
    /** @var bool Allow participants to join the meeting before the host starts the meeting.
37
     * Only used for scheduled or recurring meetings.
38
     */
39
    public $join_before_host;
40
41
    /** @var bool Mute participants upon entry */
42
    public $mute_upon_entry;
43
44
    /** @var bool Add watermark when viewing a shared screen */
45
    public $watermark;
46
47
    /** @var bool Use a personal meeting ID.
48
     * Only used for scheduled meetings and recurring meetings with no fixed time.
49
     */
50
    public $use_pmi;
51
52
    /** @var int Enable registration and set approval for the registration.
53
     * Note that this feature requires the host to be of **Licensed** user type.
54
     * **Registration cannot be enabled for a basic user.**
55
     */
56
    public $approval_type;
57
58
    /** @var int Used for recurring meeting with fixed time only. */
59
    public $registration_type;
60
61
    /** @var string either both, telephony or voip */
62
    public $audio;
63
64
    /** @var string either local, cloud or none */
65
    public $auto_recording;
66
67
    /** @var bool @deprecated only signed in users can join this meeting */
68
    public $enforce_login;
69
70
    /** @var string @deprecated only signed in users with specified domains can join meetings */
71
    public $enforce_login_domains;
72
73
    /** @var string Alternative host's emails or IDs: multiple values separated by a comma. */
74
    public $alternative_hosts;
75
76
    /** @var bool Close registration after event date */
77
    public $close_registration;
78
79
    /** @var bool Enable waiting room */
80
    public $waiting_room;
81
82
    /** @var bool undocumented */
83
    public $request_permission_to_unmute_participants;
84
85
    /** @var string[] List of global dial-in countries */
86
    public $global_dial_in_countries;
87
88
    /** @var GlobalDialInNumber[] Global Dial-in Countries/Regions */
89
    public $global_dial_in_numbers;
90
91
    /** @var string Contact name for registration */
92
    public $contact_name;
93
94
    /** @var string Contact email for registration */
95
    public $contact_email;
96
97
    /** @var bool Send confirmation email to registrants upon successful registration */
98
    public $registrants_confirmation_email;
99
100
    /** @var bool Send email notifications to registrants about approval, cancellation, denial of the registration.
101
     * The value of this field must be set to true in order to use the `registrants_confirmation_email` field.
102
     */
103
    public $registrants_email_notification;
104
105
    /** @var bool Only authenticated users can join meetings. */
106
    public $meeting_authentication;
107
108
    /** @var string Meeting authentication option id. */
109
    public $authentication_option;
110
111
    /** @var string
112
     * @see https://support.zoom.us/hc/en-us/articles/360037117472-Authentication-Profiles-for-Meetings-and-Webinars#h_5c0df2e1-cfd2-469f-bb4a-c77d7c0cca6f
113
     */
114
    public $authentication_domains;
115
116
    /** @var string
117
     * @see https://support.zoom.us/hc/en-us/articles/360037117472-Authentication-Profiles-for-Meetings-and-Webinars#h_5c0df2e1-cfd2-469f-bb4a-c77d7c0cca6f
118
     */
119
    public $authentication_name;
120
121
    /**
122
     * MeetingSettings constructor.
123
     */
124
    public function __construct()
125
    {
126
        $this->global_dial_in_countries = [];
127
        $this->global_dial_in_numbers = [];
128
    }
129
130
    /**
131
     * {@inheritdoc}
132
     */
133
    public function itemClass($propertyName)
134
    {
135
        if ('global_dial_in_countries' === $propertyName) {
136
            return 'string';
137
        }
138
        if ('global_dial_in_numbers' === $propertyName) {
139
            return GlobalDialInNumber::class;
140
        }
141
        throw new Exception("No such array property $propertyName");
142
    }
143
}
144