Completed
Push — master ( 8a55f8...0cef2a )
by Jignesh
01:14
created

initMeeting::initHooksDestroy()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 1
dl 0
loc 6
rs 10
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\HooksCreateParameters;
13
use BigBlueButton\Parameters\HooksDestroyParameters;
14
use BigBlueButton\Parameters\IsMeetingRunningParameters;
15
use BigBlueButton\Parameters\JoinMeetingParameters;
16
use BigBlueButton\Parameters\PublishRecordingsParameters;
17
use BigBlueButton\Parameters\SetConfigXMLParameters;
18
use Illuminate\Support\Fluent;
19
use Illuminate\Support\Str;
20
21
trait initMeeting
22
{
23
24
    /*
25
     * required fields
26
     * meetingID
27
     * meetingName
28
     *
29
     */
30
    public function initCreateMeeting(array $parameters)
31
    {
32
        $request = Fluent($parameters);
33
        $meetingParams = new CreateMeetingParameters($request->meetingID, $request->meetingName);
34
        $meetingParams->setModeratorPassword($request->get('moderatorPW', Str::random(config('bigbluebutton.create.passwordLength', 8))));
35
        $meetingParams->setAttendeePassword($request->get('attendeePW', Str::random(config('bigbluebutton.create.passwordLength', 8))));
36
        $meetingParams->setDuration($request->get('duration', config('bigbluebutton.create.duration', 0)));
37
        $meetingParams->setRecord($request->get('record', config('bigbluebutton.create.record', false)));
38
        $meetingParams->setMaxParticipants($request->get('maxParticipants', config('bigbluebutton.create.maxParticipants', 0)));
39
        $meetingParams->setLogoutUrl($request->get('logoutUrl', config('bigbluebutton.create.logoutUrl', null)));
40
        $meetingParams->setWelcomeMessage(
41
            $request->get('welcomeMessage', config('bigbluebutton.create.welcomeMessage', null))
42
        );
43
        $meetingParams->setDialNumber(
44
            $request->get('dialNumber', config('bigbluebutton.create.dialNumber', null))
45
        );
46
        $meetingParams->setBreakout(
47
            $request->get('isBreakout', config('bigbluebutton.create.isBreakout', false))
48
        );
49
        $meetingParams->setModeratorOnlyMessage(
50
            $request->get('moderatorOnlyMessage', config('bigbluebutton.create.moderatorOnlyMessage', null))
51
        );
52
        $meetingParams->setAutoStartRecording(
53
            $request->get('autoStartRecording', config('bigbluebutton.create.autoStartRecording', false))
54
        );
55
        $meetingParams->setAllowStartStopRecording(
56
            $request->get('allowStartStopRecording', config('bigbluebutton.create.allowStartStopRecording', true))
57
        );
58
        $meetingParams->setWebcamsOnlyForModerator(
59
            $request->get('webcamsOnlyForModerator', config('bigbluebutton.create.webcamsOnlyForModerator', false))
60
        );
61
        $meetingParams->setLogo(
62
            $request->get('logo', config('bigbluebutton.create.logo', null))
63
        );
64
        $meetingParams->setCopyright(
65
            $request->get('copyright', config('bigbluebutton.create.copyright', null))
66
        );
67
        $meetingParams->setMuteOnStart(
68
            $request->get('muteOnStart', config('bigbluebutton.create.muteOnStart', false))
69
        );
70
71
        $meetingParams->setLockSettingsDisableCam(
72
            $request->get('lockSettingsDisableCam', config('bigbluebutton.create.lockSettingsDisableCam', false))
73
        );
74
        $meetingParams->setLockSettingsDisableMic(
75
            $request->get('lockSettingsDisableMic', config('bigbluebutton.create.lockSettingsDisableMic', false))
76
        );
77
        $meetingParams->setLockSettingsDisablePrivateChat(
78
            $request->get('lockSettingsDisablePrivateChat', config('bigbluebutton.create.lockSettingsDisablePrivateChat', false))
79
        );
80
        $meetingParams->setLockSettingsDisablePublicChat(
81
            $request->get('lockSettingsDisablePublicChat', config('bigbluebutton.create.lockSettingsDisablePublicChat', false))
82
        );
83
        $meetingParams->setLockSettingsDisableNote(
84
            $request->get('lockSettingsDisableNote', config('bigbluebutton.create.lockSettingsDisableNote', false))
85
        );
86
        $meetingParams->setLockSettingsLockedLayout(
87
            $request->get('lockSettingsLockedLayout', config('bigbluebutton.create.lockSettingsLockedLayout', false))
88
        );
89
        $meetingParams->setLockSettingsLockOnJoin(
90
            $request->get('lockSettingsLockOnJoin', config('bigbluebutton.create.lockSettingsLockOnJoin', false))
91
        );
92
        $meetingParams->setLockSettingsLockOnJoinConfigurable(
93
            $request->get('lockSettingsLockOnJoinConfigurable', config('bigbluebutton.create.lockSettingsLockOnJoinConfigurable', false))
94
        );
95
96
        if (!is_null($request->get('endCallbackUrl', null))) {
97
            $meetingParams->setEndCallbackUrl($request->get('endCallbackUrl', null));
98
        }
99
100
        $meetingParams->setFreeJoin($request->get('freeJoin', false));
101
102
        $presentation = (array)$request->get('presentation', null);
103
        foreach ($presentation as $item) {
104
            if (isset($item['fileName']) && !empty($item['fileName'])) {
105
                if (isset($item['link']) && !empty($item['link'])) {
106
                    $meetingParams->addPresentation(trim($item['link']), null, trim($item['fileName']));
107
                } elseif (isset($item['content']) && !empty($item['content'])) {
108
                    $meetingParams->addPresentation(trim($item['fileName']), trim($item['content']), null);
109
                }
110
            }
111
        }
112
113
        $meta = (array)$request->get('meta', null);
114
        foreach ($meta as $key => $value) {
115
            $meetingParams->addMeta(trim($key), trim($value));
116
        }
117
118
        return $meetingParams;
119
    }
120
121
    /*
122
     * required fields:
123
     * meetingID
124
     * moderatorPW close meeting must be there moderator password
125
     */
126
    public function initCloseMeeting(array $parameters)
127
    {
128
        $request = Fluent($parameters);
129
130
        return (new EndMeetingParameters($request->meetingID, $request->moderatorPW));
131
    }
132
133
    /*
134
     *  required fields
135
     *
136
     *  meetingID
137
     *  userName join by name
138
     *  password which role want to join
139
     */
140
    public function initJoinMeeting(array $parameters)
141
    {
142
        $request = Fluent($parameters);
143
        $meetingParams = new JoinMeetingParameters($request->meetingID, $request->userName, $request->password);
144
        $meetingParams->setRedirect($request->get('redirect', config('bigbluebutton.join.redirect', true)));
145
        $meetingParams->setJoinViaHtml5($request->get('joinViaHtml5', config('bigbluebutton.join.joinViaHtml5', true)));
146
        $meetingParams->setUserId($request->get('userId', null));
147
        if ($request->createTime) {
148
            $meetingParams->setCreationTime($request->createTime);
149
        }
150
        if ($request->configToken) {
151
            $meetingParams->setConfigToken($request->configToken);
152
        }
153
        if ($request->webVoiceConf) {
154
            $meetingParams->setWebVoiceConf($request->webVoiceConf);
155
        }
156
        if ($request->avatarUrl) {
157
            $meetingParams->setAvatarURL($request->avatarUrl);
158
        }
159
        if ($request->clientUrl) {
160
            $meetingParams->setClientURL($request->clientUrl);
161
        }
162
163
        return $meetingParams;
164
    }
165
166
    /*
167
     * required fields
168
     * meetingID
169
     */
170
    public function initIsMeetingRunning(array $parameters)
171
    {
172
        $request = Fluent($parameters);
173
174
        return (new IsMeetingRunningParameters($request->meetingID));
175
    }
176
177
    /*
178
     * required fields
179
     * meetingID
180
     * moderatorPW must be there moderator password
181
     */
182
    public function initGetMeetingInfo($parameters)
183
    {
184
        $request = Fluent($parameters);
185
186
        return (new GetMeetingInfoParameters($request->meetingID, $request->moderatorPW));
187
    }
188
189
    /*
190
     *
191
     * optional fields
192
     * meetingID
193
     * recordID
194
     * state
195
     */
196
    public function initGetRecordings(array $parameters)
197
    {
198
        $request = Fluent($parameters);
199
        $recordings = new GetRecordingsParameters();
200
201
        $recordings->setMeetingId(implode(',', (array)$request->get('meetingID')));
202
        $recordings->setRecordId(implode(',', (array)$request->get('recordID')));
203
        $recordings->setState($request->get('state', config('bigbluebutton.getRecordings.state')));
204
205
        return $recordings;
206
    }
207
208
    /**
209
     * @param array $parameters
210
     *
211
     * @return PublishRecordingsParameters
212
     */
213
    public function initPublishRecordings(array $parameters)
214
    {
215
        $request = Fluent($parameters);
216
        $recordings = new PublishRecordingsParameters(null, $request->get('publish', true));
217
        $recordings->setRecordingId(implode(',', (array)$request->get('recordID')));
218
219
        return $recordings;
220
    }
221
222
    /*
223
     * required fields
224
     * recordingID
225
     */
226
    public function initDeleteRecordings($recording)
227
    {
228
        $request = Fluent($recording);
229
230
        return (new DeleteRecordingsParameters(implode(',', (array)$request->get('recordID'))));
231
    }
232
233
    private function makeJoinMeetingArray($object, $parameters)
234
    {
235
        $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...
236
        $pass['password'] = $object->get('moderatorPW');
237
        if (isset($parameters['userName'])) {
238
            $pass['userName'] = $parameters['userName'];
239
        }
240
        $pass['meetingName'] = $object->get('meetingName');
241
        if (isset($parameters['redirect'])) {
242
            $pass['redirect'] = $parameters['redirect'];
243
        }
244
245
        return $pass;
246
    }
247
248
    /*
249
     * required fields
250
     * meetingID
251
     * meetingName
252
     * userName
253
     * attendeePW
254
     * moderatorPW
255
     * redirect
256
     */
257
    public function initStart(array $parameters)
258
    {
259
        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...
260
            $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...
261
            if (method_exists($object, 'isEmpty') && !$object->isEmpty()) {
262
                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...
263
            }
264
        } else {
265
            if (isset($parameters['moderatorPW'])) {
266
                $parameters['password'] = trim($parameters['moderatorPW']);
267
            }
268
269
            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...
270
        }
271
    }
272
273
    /**
274
     * @param $parameters
275
     *
276
     * @return SetConfigXMLParameters
277
     */
278
    public function initSetConfigXml(array $parameters)
279
    {
280
        $parameters = Fluent($parameters);
281
        $configXml = new SetConfigXMLParameters($parameters->get('meetingID'));
282
        $rawXml = $parameters->xml;
283
        if (!$parameters->xml instanceof \SimpleXMLElement) {
284
            $rawXml = new \SimpleXMLElement($parameters->xml);
285
        }
286
287
        $configXml->setRawXml($rawXml);
288
289
        return $configXml;
290
    }
291
292
    /**
293
     * @param array $parameters
294
     *
295
     * @return HooksCreateParameters
296
     */
297
    public function initHooksCreate(array $parameters)
298
    {
299
        $parameters = Fluent($parameters);
300
        $hooksCreate = new HooksCreateParameters($parameters->get('callbackURL'));
301
        if ($parameters->meetingID) {
302
            $hooksCreate->setMeetingId($parameters->meetingID);
303
        }
304
        $hooksCreate->setGetRaw($parameters->get('getRaw', false));
305
306
        return $hooksCreate;
307
    }
308
309
    /**
310
     * @param array $parameters
311
     *
312
     * @return HooksDestroyParameters
313
     */
314
    public function initHooksDestroy(array $parameters)
315
    {
316
        $parameters = Fluent($parameters);
317
        $hooksDestroy = new HooksDestroyParameters($parameters->get('hooksID'));
318
        return $hooksDestroy;
319
    }
320
}
321