Completed
Push — master ( cac1c6...e09922 )
by Jignesh
15:37
created

initMeeting::makeJoinMeetingArray()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
nc 4
nop 2
dl 0
loc 14
rs 9.7998
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
        if (!is_null($request->get('endCallbackUrl', null))) {
91
            $meetingParams->setEndCallbackUrl($request->get('endCallbackUrl', null));
92
        }
93
94
        $meetingParams->setFreeJoin($request->get('freeJoin', false));
95
96
        $presentation = (array) $request->get('presentation', null);
97
        foreach ($presentation as $item) {
98
            if (isset($item['fileName']) && !empty($item['fileName'])) {
99
                if (isset($item['link']) && !empty($item['link'])) {
100
                    $meetingParams->addPresentation(trim($item['link']),null,trim($item['fileName']));
101
                } elseif (isset($item['content']) && !empty($item['content'])) {
102
                     $meetingParams->addPresentation(trim($item['fileName']),trim($item['content']),null);
103
                }
104
            }
105
        }
106
107
        $meta = (array) $request->get('meta', null);
108
        foreach ($meta as $key => $value) {
109
            $meetingParams->addMeta(trim($key), trim($value));
110
        }
111
112
        return $meetingParams;
113
    }
114
115
    /*
116
     * required fields:
117
     * meetingID
118
     * moderatorPW close meeting must be there moderator password
119
     */
120
    public function initCloseMeeting(array $parameters)
121
    {
122
        $request = Fluent($parameters);
123
124
        return (new EndMeetingParameters($request->meetingID, $request->moderatorPW));
125
    }
126
127
    /*
128
     *  required fields
129
     *
130
     *  meetingID
131
     *  userName join by name
132
     *  password which role want to join
133
     */
134
    public function initJoinMeeting(array $parameters)
135
    {
136
        $request = Fluent($parameters);
137
        $meetingParams = new JoinMeetingParameters($request->meetingID, $request->userName, $request->password);
138
        $meetingParams->setRedirect($request->get('redirect', config('bigbluebutton.join.redirect', true)));
139
        $meetingParams->setJoinViaHtml5($request->get('joinViaHtml5', config('bigbluebutton.join.joinViaHtml5', true)));
140
        $meetingParams->setUserId($request->get('userId', null));
141
        if ($request->createTime) {
142
            $meetingParams->setCreationTime($request->createTime);
143
        }
144
        if ($request->configToken) {
145
            $meetingParams->setConfigToken($request->configToken);
146
        }
147
        if ($request->webVoiceConf) {
148
            $meetingParams->setWebVoiceConf($request->webVoiceConf);
149
        }
150
        if ($request->avatarUrl) {
151
            $meetingParams->setAvatarURL($request->avatarUrl);
152
        }
153
        if ($request->clientUrl) {
154
            $meetingParams->setClientURL($request->clientUrl);
155
        }
156
157
        return $meetingParams;
158
    }
159
160
    /*
161
     * required fields
162
     * meetingID
163
     */
164
    public function initIsMeetingRunning(array $parameters)
165
    {
166
        $request = Fluent($parameters);
167
168
        return (new IsMeetingRunningParameters($request->meetingID));
169
    }
170
171
    /*
172
     * required fields
173
     * meetingID
174
     * moderatorPW must be there moderator password
175
     */
176
    public function initGetMeetingInfo($parameters)
177
    {
178
        $request = Fluent($parameters);
179
180
        return (new GetMeetingInfoParameters($request->meetingID, $request->moderatorPW));
181
    }
182
183
    /*
184
     * required fields
185
     * meetingID
186
     *
187
     * optional fields
188
     * recordID
189
     * state
190
     */
191
    public function initGetRecordings(array $parameters)
192
    {
193
        $request = Fluent($parameters);
194
195
        $recordings = new GetRecordingsParameters();
196
        $recordings->setMeetingId($request->meetingID);
197
        if ($request->recordID) {
198
            $recordings->setRecordId($request->recordID);
199
        }
200
        if ($request->state) {
201
            $recordings->setState($request->state);
202
        }
203
204
        return $recordings;
205
    }
206
207
    /*
208
     * required fields
209
     * recordingID
210
     */
211
    public function initDeleteRecordings($recording)
212
    {
213
        $request = Fluent($recording);
214
215
        return (new DeleteRecordingsParameters($request->recordingID));
216
    }
217
218
    private function makeJoinMeetingArray($object, $parameters)
219
    {
220
        $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...
221
        $pass['password'] = $object->get('moderatorPW');
222
        if (isset($parameters['userName'])) {
223
            $pass['userName'] = $parameters['userName'];
224
        }
225
        $pass['meetingName'] = $object->get('meetingName');
226
        if (isset($parameters['redirect'])) {
227
            $pass['redirect'] = $parameters['redirect'];
228
        }
229
230
        return $pass;
231
    }
232
233
    /*
234
     * required fields
235
     * meetingID
236
     * meetingName
237
     * userName
238
     * attendeePW
239
     * moderatorPW
240
     * redirect
241
     */
242
    public function initStart(array $parameters)
243
    {
244
        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...
245
            $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...
246
            if (method_exists($object, 'isEmpty') && !$object->isEmpty()) {
247
                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...
248
            }
249
        } else {
250
            if (isset($parameters['moderatorPW'])) {
251
                $parameters['password'] = trim($parameters['moderatorPW']);
252
            }
253
254
            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...
255
        }
256
    }
257
258
259
}
260