Completed
Push — master ( cc7d0b...cac1c6 )
by Jignesh
01:13
created

initMeeting::initJoinMeeting()   B

Complexity

Conditions 6
Paths 32

Size

Total Lines 25

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 6
nc 32
nop 1
dl 0
loc 25
rs 8.8977
c 0
b 0
f 0
1
<?php
2
3
4
namespace JoisarJignesh\Bigbluebutton\Services;
5
6
7
use BigBlueButton\Parameters\CreateMeetingParameters;
8
use BigBlueButton\Parameters\DeleteRecordingsParameters;
9
use BigBlueButton\Parameters\EndMeetingParameters;
10
use BigBlueButton\Parameters\GetMeetingInfoParameters;
11
use BigBlueButton\Parameters\GetRecordingsParameters;
12
use BigBlueButton\Parameters\IsMeetingRunningParameters;
13
use BigBlueButton\Parameters\JoinMeetingParameters;
14
use Illuminate\Support\Str;
15
16
trait initMeeting
17
{
18
19
    /*
20
     * required fields
21
     * meetingID
22
     * meetingName
23
     *
24
     */
25
    public function initCreateMeeting(array $parameters)
26
    {
27
        $request = Fluent($parameters);
28
        $meetingParams = new CreateMeetingParameters($request->meetingID, $request->meetingName);
29
        $meetingParams->setModeratorPassword($request->get('moderatorPW', Str::random(config('bigbluebutton.create.passwordLength', 8))));
30
        $meetingParams->setAttendeePassword($request->get('attendeePW', Str::random(config('bigbluebutton.create.passwordLength', 8))));
31
        $meetingParams->setDuration($request->get('duration', config('bigbluebutton.create.duration', null)));
32
        $meetingParams->setRecord($request->get('record', config('bigbluebutton.create.record', false)));
33
        $meetingParams->setMaxParticipants($request->get('maxParticipants', config('bigbluebutton.create.maxParticipants', null)));
34
        $meetingParams->setLogoutUrl($request->get('logoutUrl', config('bigbluebutton.create.logoutUrl', null)));
35
        $meetingParams->setWelcomeMessage(
36
            $request->get('welcomeMessage', config('bigbluebutton.create.welcomeMessage', null))
37
        );
38
        $meetingParams->setDialNumber(
39
            $request->get('dialNumber', config('bigbluebutton.create.dialNumber', null))
40
        );
41
        $meetingParams->setBreakout(
42
            $request->get('isBreakout', config('bigbluebutton.create.isBreakout', false))
43
        );
44
        $meetingParams->setModeratorOnlyMessage(
45
            $request->get('moderatorOnlyMessage', config('bigbluebutton.create.moderatorOnlyMessage', null))
46
        );
47
        $meetingParams->setAutoStartRecording(
48
            $request->get('autoStartRecording', config('bigbluebutton.create.autoStartRecording', false))
49
        );
50
        $meetingParams->setAllowStartStopRecording(
51
            $request->get('allowStartStopRecording', config('bigbluebutton.create.allowStartStopRecording', true))
52
        );
53
        $meetingParams->setWebcamsOnlyForModerator(
54
            $request->get('webcamsOnlyForModerator', config('bigbluebutton.create.webcamsOnlyForModerator', false))
55
        );
56
        $meetingParams->setLogo(
57
            $request->get('logo', config('bigbluebutton.create.logo', null))
58
        );
59
        $meetingParams->setCopyright(
60
            $request->get('copyright', config('bigbluebutton.create.copyright', null))
61
        );
62
        $meetingParams->setMuteOnStart(
63
            $request->get('muteOnStart', config('bigbluebutton.create.muteOnStart', false))
64
        );
65
        $meetingParams->setLockSettingsDisableCam(
66
            $request->get('lockSettingsDisableCam', config('bigbluebutton.create.lockSettingsDisableCam', false))
67
        );
68
        $meetingParams->setLockSettingsDisableMic(
69
            $request->get('lockSettingsDisableMic', config('bigbluebutton.create.lockSettingsDisableMic', false))
70
        );
71
        $meetingParams->setLockSettingsDisablePrivateChat(
72
            $request->get('lockSettingsDisablePrivateChat', config('bigbluebutton.create.lockSettingsDisablePrivateChat', false))
73
        );
74
        $meetingParams->setLockSettingsDisablePublicChat(
75
            $request->get('lockSettingsDisablePublicChat', config('bigbluebutton.create.lockSettingsDisablePublicChat', false))
76
        );
77
        $meetingParams->setLockSettingsDisableNote(
78
            $request->get('lockSettingsDisableNote', config('bigbluebutton.create.lockSettingsDisableNote', false))
79
        );
80
        $meetingParams->setLockSettingsLockedLayout(
81
            $request->get('lockSettingsLockedLayout', config('bigbluebutton.create.lockSettingsLockedLayout', false))
82
        );
83
        $meetingParams->setLockSettingsLockOnJoin(
84
            $request->get('lockSettingsLockOnJoin', config('bigbluebutton.create.lockSettingsLockOnJoin', false))
85
        );
86
        $meetingParams->setLockSettingsLockOnJoinConfigurable(
87
            $request->get('lockSettingsLockOnJoinConfigurable', config('bigbluebutton.create.lockSettingsLockOnJoinConfigurable', false))
88
        );
89
90
        return $meetingParams;
91
    }
92
93
    /*
94
     * required fields:
95
     * meetingID
96
     * moderatorPW close meeting must be there moderator password
97
     */
98
    public function initCloseMeeting(array $parameters)
99
    {
100
        $request = Fluent($parameters);
101
102
        return (new EndMeetingParameters($request->meetingID, $request->moderatorPW));
103
    }
104
105
    /*
106
     *  required fields
107
     *
108
     *  meetingID
109
     *  userName join by name
110
     *  password which role want to join
111
     */
112
    public function initJoinMeeting(array $parameters)
113
    {
114
        $request = Fluent($parameters);
115
        $meetingParams = new JoinMeetingParameters($request->meetingID, $request->userName, $request->password);
116
        $meetingParams->setRedirect($request->get('redirect', config('bigbluebutton.join.redirect', true)));
117
        $meetingParams->setJoinViaHtml5($request->get('joinViaHtml5', config('bigbluebutton.join.joinViaHtml5', true)));
118
        $meetingParams->setUserId($request->get('userId', null));
119
        if ($request->createTime) {
120
            $meetingParams->setCreationTime($request->createTime);
121
        }
122
        if ($request->configToken) {
123
            $meetingParams->setConfigToken($request->configToken);
124
        }
125
        if ($request->webVoiceConf) {
126
            $meetingParams->setWebVoiceConf($request->webVoiceConf);
127
        }
128
        if ($request->avatarUrl) {
129
            $meetingParams->setAvatarURL($request->avatarUrl);
130
        }
131
        if ($request->clientUrl) {
132
            $meetingParams->setClientURL($request->clientUrl);
133
        }
134
135
        return $meetingParams;
136
    }
137
138
    /*
139
     * required fields
140
     * meetingID
141
     */
142
    public function initIsMeetingRunning(array $parameters)
143
    {
144
        $request = Fluent($parameters);
145
146
        return (new IsMeetingRunningParameters($request->meetingID));
147
    }
148
149
    /*
150
     * required fields
151
     * meetingID
152
     * moderatorPW must be there moderator password
153
     */
154
    public function initGetMeetingInfo($parameters)
155
    {
156
        $request = Fluent($parameters);
157
158
        return (new GetMeetingInfoParameters($request->meetingID, $request->moderatorPW));
159
    }
160
161
    /*
162
     * required fields
163
     * meetingID
164
     *
165
     * optional fields
166
     * recordID
167
     * state
168
     */
169
    public function initGetRecordings(array $parameters)
170
    {
171
        $request = Fluent($parameters);
172
173
        $recordings = new GetRecordingsParameters();
174
        $recordings->setMeetingId($request->meetingID);
175
        if ($request->recordID) {
176
            $recordings->setRecordId($request->recordID);
177
        }
178
        if ($request->state) {
179
            $recordings->setState($request->state);
180
        }
181
182
        return $recordings;
183
    }
184
185
    /*
186
     * required fields
187
     * recordingID
188
     */
189
    public function initDeleteRecordings($recording)
190
    {
191
        $request = Fluent($recording);
192
193
        return (new DeleteRecordingsParameters($request->recordingID));
194
    }
195
196
    private function makeJoinMeetingArray($object, $parameters)
197
    {
198
        $pass['meetingID'] = $object->get('meetingID');
0 ignored issues
show
Coding Style Comprehensibility introduced by
$pass was never initialized. Although not strictly required by PHP, it is generally a good practice to add $pass = array(); before regardless.

Adding an explicit array definition is generally preferable to implicit array definition as it guarantees a stable state of the code.

Let’s take a look at an example:

foreach ($collection as $item) {
    $myArray['foo'] = $item->getFoo();

    if ($item->hasBar()) {
        $myArray['bar'] = $item->getBar();
    }

    // do something with $myArray
}

As you can see in this example, the array $myArray is initialized the first time when the foreach loop is entered. You can also see that the value of the bar key is only written conditionally; thus, its value might result from a previous iteration.

This might or might not be intended. To make your intention clear, your code more readible and to avoid accidental bugs, we recommend to add an explicit initialization $myArray = array() either outside or inside the foreach loop.

Loading history...
199
        $pass['password'] = $object->get('moderatorPW');
200
        if (isset($parameters['userName'])) {
201
            $pass['userName'] = $parameters['userName'];
202
        }
203
        $pass['meetingName'] = $object->get('meetingName');
204
        if (isset($parameters['redirect'])) {
205
            $pass['redirect'] = $parameters['redirect'];
206
        }
207
208
        return $pass;
209
    }
210
211
    /*
212
     * required fields
213
     * meetingID
214
     * meetingName
215
     * userName
216
     * attendeePW
217
     * moderatorPW
218
     * redirect
219
     */
220
    public function initStart(array $parameters)
221
    {
222
        if ($this->getMeetingInfo($parameters)->isEmpty()) {
0 ignored issues
show
Bug introduced by
The method getMeetingInfo() does not exist on JoisarJignesh\Bigbluebutton\Services\initMeeting. Did you maybe mean initGetMeetingInfo()?

This check marks calls to methods that do not seem to exist on an object.

This is most likely the result of a method being renamed without all references to it being renamed likewise.

Loading history...
223
            $object = $this->create($parameters);
0 ignored issues
show
Bug introduced by
The method create() does not exist on JoisarJignesh\Bigbluebutton\Services\initMeeting. Did you maybe mean initCreateMeeting()?

This check marks calls to methods that do not seem to exist on an object.

This is most likely the result of a method being renamed without all references to it being renamed likewise.

Loading history...
224
            if (method_exists($object, 'isEmpty') && !$object->isEmpty()) {
225
                return $this->join($this->makeJoinMeetingArray($object, $parameters));
0 ignored issues
show
Bug introduced by
It seems like join() must be provided by classes using this trait. How about adding it as abstract method to this trait?

This check looks for methods that are used by a trait but not required by it.

To illustrate, let’s look at the following code example

trait Idable {
    public function equalIds(Idable $other) {
        return $this->getId() === $other->getId();
    }
}

The trait Idable provides a method equalsId that in turn relies on the method getId(). If this method does not exist on a class mixing in this trait, the method will fail.

Adding the getId() as an abstract method to the trait will make sure it is available.

Loading history...
226
            }
227
        } else {
228
            if (isset($parameters['moderatorPW'])) {
229
                $parameters['password'] = trim($parameters['moderatorPW']);
230
            }
231
232
            return $this->join($parameters);
0 ignored issues
show
Bug introduced by
It seems like join() must be provided by classes using this trait. How about adding it as abstract method to this trait?

This check looks for methods that are used by a trait but not required by it.

To illustrate, let’s look at the following code example

trait Idable {
    public function equalIds(Idable $other) {
        return $this->getId() === $other->getId();
    }
}

The trait Idable provides a method equalsId that in turn relies on the method getId(). If this method does not exist on a class mixing in this trait, the method will fail.

Adding the getId() as an abstract method to the trait will make sure it is available.

Loading history...
233
        }
234
    }
235
236
237
}
238