Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 4124 | Rev 4419 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
4113 efrain 1
<?php
2
declare(strict_types=1);
3
 
4
namespace LeadersLinked\Controller;
5
 
6
 
7
use \Firebase\JWT\JWT;
8
use GuzzleHttp\Client;
9
 
10
use Laminas\Db\Adapter\AdapterInterface;
11
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
12
use Laminas\Mvc\Controller\AbstractActionController;
13
use Laminas\Log\LoggerInterface;
14
use Laminas\View\Model\JsonModel;
15
 
16
class ZoomController extends AbstractActionController
17
{
18
    /**
19
     *
20
     * @var AdapterInterface
21
     */
22
    private $adapter;
23
 
24
 
25
    /**
26
     *
27
     * @var AbstractAdapter
28
     */
29
    private $cache;
30
 
31
    /**
32
     *
33
     * @var  LoggerInterface
34
     */
35
    private $logger;
36
 
37
    /**
38
     *
39
     * @var array
40
     */
41
    private $config;
42
 
43
 
44
 
45
 
46
    /**
47
     *
48
     * @param AdapterInterface $adapter
49
     * @param AbstractAdapter $cache
50
     * @param LoggerInterface $logger
51
     * @param array $config
52
     */
53
    public function __construct($adapter, $cache , $logger, $config)
54
    {
55
        $this->adapter      = $adapter;
56
        $this->cache        = $cache;
57
        $this->logger       = $logger;
58
        $this->config       = $config;
59
    }
60
 
61
 
62
    public function indexAction()
63
    {
64
 
65
        $data = [
66
            'success' => false,
67
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
68
        ];
69
 
70
 
71
        return new JsonModel($data);
72
    }
73
 
4131 efrain 74
    public function addAction()
4113 efrain 75
    {
4131 efrain 76
        $currentUserPlugin = $this->plugin('currentUserPlugin');
77
        $currentUser = $currentUserPlugin->getUser();
4113 efrain 78
 
79
        $request = $this->getRequest();
80
 
4131 efrain 81
      //  if($request->isPost()) {
82
 
4113 efrain 83
            $base_url = $this->config['leaderslinked.zoom.base_url'];
84
            $token = $this->getAccessToken();
85
 
86
 
87
            $client = new Client([
88
 
89
                'base_uri' => $base_url,
90
            ]);
91
 
92
            $response = $client->request('POST', '/v2/users/me/meetings', [
93
                'headers' => [
94
                    'Authorization' => 'Bearer ' . $token
95
                ],
96
                'json' => [
97
                    'topic' => 'Let s Learn WordPress',
4131 efrain 98
                    'agenda' => 'Description Let s Learn WordPress',
4113 efrain 99
                    'type' => 2,
100
                    'start_time' => '2023-01-30T20:30:00',
101
                    'duration' => '30', // 30 mins
102
                    'password' => '123456',
103
                    'timezone' => 'America/Caracas',
4131 efrain 104
                    'settings' => [
105
                        'participant_video'=> 'true',
106
                        'auto_recording' => 'none',
107
                    ]
4113 efrain 108
                ],
109
            ]);
110
 
111
 
4131 efrain 112
 
4113 efrain 113
 
4131 efrain 114
            $data = json_decode($response->getBody()->getContents());
115
            echo '<pre>';
116
            print_r($data);
117
            echo '</pre>';
118
            exit;
119
 
120
 
121
            //echo "Join URL: ". $data->join_url;
122
            //echo "<br>";
123
            //echo "Meeting Password: ". $data->password;
4113 efrain 124
 
4131 efrain 125
 
126
       /* } else {
4113 efrain 127
            $data = [
128
                'success' => false,
129
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
130
            ];
131
 
132
            return new JsonModel($data);
133
        }
134
 
135
        return new JsonModel($data);*/
136
 
137
    }
138
 
139
    public function listingAction()
140
    {
141
        $request = $this->getRequest();
142
 
143
        //if($request->isGet()) {
144
 
145
            $next_page_token = $this->params()->fromRoute('next_page');
146
 
147
 
148
            $base_url = $this->config['leaderslinked.zoom.base_url'];
149
            $token = $this->getAccessToken();
150
 
151
            $client = new Client([
152
 
153
                'base_uri' => $base_url,
154
            ]);
155
 
156
            $request = [
157
                'headers' => [
158
                    'Authorization' => 'Bearer '. $token
159
                ],
160
                'type' => 'scheduled'
161
            ];
162
 
163
            if (!empty($next_page_token)) {
164
                $request['query'] = ['next_page_token' => $next_page_token];
165
            }
166
 
167
            $response = $client->request('GET', '/v2/users/me/meetings', $request);
168
 
169
echo '<pre>';
170
print_r(json_decode($response->getBody()->getContents()));
171
echo '</pre>';
172
exit;
173
 
174
            $data = json_decode($response->getBody());
175
 
176
            if ( !empty($data) ) {
177
                foreach ( $data->meetings as $d ) {
178
                    $topic = $d->topic;
179
                    $join_url = $d->join_url;
180
                    echo "<h3>Topic: $topic</h3>";
181
                    echo "Join URL: $join_url";
182
                }
183
 
184
                if ( !empty($data->next_page_token) ) {
185
                    list_meetings($data->next_page_token);
186
                }
187
            }
188
 
189
           /*
190
        } else {
191
            $data = [
192
                'success' => false,
193
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
194
            ];
195
 
196
 
197
        }
198
 
199
        return new JsonModel($data);*/
200
    }
201
 
202
    public function  deleteAction()
203
    {
204
        $request = $this->getRequest();
205
 
206
        //if($request->isPost()) {
207
 
208
            $meeting_id =  $this->params()->fromRoute('id');
209
 
210
 
211
 
212
            $base_url = $this->config['leaderslinked.zoom.base_url'];
213
            $token = $this->getAccessToken();
214
 
215
            $client = new Client([
216
                'base_uri' => $base_url,
217
            ]);
218
 
219
            $response = $client->request('DELETE', '/v2/meetings/' .  $meeting_id, [
220
                'headers' => [
221
                    'Authorization' => 'Bearer ' .  $token
222
                ]
223
            ]);
224
 
225
 
226
            echo 'StatusCode : ' . $response->getStatusCode();
227
            exit;
228
 
229
            /*
230
 
231
            if (204 == $response->getStatusCode()) {
232
                $data = [
233
                    'success' => true,
234
                    'data' => 'Meeting deleted.'
235
                ];
236
            } else {
237
                $data = [
238
                    'success' => false,
239
                    'data' => $response->getBody()->getContents()
240
                ];
241
            }
242
 
243
 
244
        } else {
245
            $data = [
246
                'success' => false,
247
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
248
            ];
249
 
250
 
251
        }
252
 
253
        return new JsonModel($data);*/
254
    }
255
 
256
    public function participantsAction()
257
    {
258
        $request = $this->getRequest();
259
 
260
       // if($request->isGet()) {
261
 
262
            $meeting_id =  $this->params()->fromRoute('id');
263
 
264
 
265
 
266
            $base_url = $this->config['leaderslinked.zoom.base_url'];
267
            $token = $this->getAccessToken();
268
 
269
            $client = new Client([
270
                'base_uri' => $base_url,
271
            ]);
272
 
273
            $response = $client->request('GET', '/v2/past_meetings/' . $meeting_id , [
274
                'headers' => [
275
                    'Authorization' => 'Bearer '. $token
276
                ]
277
            ]);
278
 
279
            print_r($response->getBody()->getContents());
280
            exit;
281
 
282
            /*
283
            $data = json_decode($response->getBody());
284
            if ( !empty($data) ) {
285
                foreach ( $data->participants as $p ) {
286
                    $name = $p->name;
287
                    $email = $p->user_email;
288
                    echo "Name: $name";
289
                    echo "Email: $email";
290
                }
291
            }
292
 
293
 
294
        } else {
295
            $data = [
296
                'success' => false,
297
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
298
            ];
299
 
300
 
301
        }
302
 
303
        return new JsonModel($data);*/
304
    }
305
 
306
    private function getAccessToken() {
307
 
308
        $api_key = $this->config['leaderslinked.zoom.api_key'];
309
        $api_secret   = $this->config['leaderslinked.zoom.api_secret'];
310
 
311
 
312
        $payload =[
313
            'iss'   => $api_key,
314
            'exp'   => time() + 3600,
315
        ];
316
        return JWT::encode($payload, $api_secret, 'HS256');
317
    }
318
 
319
 
320
 
321
}