Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 15376 | Ir a la última revisión | | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
15338 efrain 1
<?php
2
declare(strict_types=1);
3
 
4
namespace LeadersLinked\Controller;
5
 
6
use Laminas\Db\Adapter\AdapterInterface;
7
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
8
use Laminas\Mvc\Controller\AbstractActionController;
9
use Laminas\Log\LoggerInterface;
10
use Laminas\View\Model\ViewModel;
11
use Laminas\View\Model\JsonModel;
12
use LeadersLinked\Library\Functions;
13
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
14
use LeadersLinked\Library\Image;
15
use LeadersLinked\Mapper\CompanyMapper;
16
use LeadersLinked\Mapper\CompanyMicrolearningTopicMapper;
17
use LeadersLinked\Model\CompanyMicrolearningTopic;
18
use LeadersLinked\Form\TopicAddForm;
19
use LeadersLinked\Form\TopicEditForm;
20
use LeadersLinked\Mapper\CompanyMicrolearningCapsuleMapper;
21
use LeadersLinked\Form\MyPrivateNetworkIntroForm;
22
use LeadersLinked\Mapper\NetworkMapper;
23
use LeadersLinked\Form\MyPrivateNetworkStylesFilter;
24
use LeadersLinked\Form\MyPrivateNetworkStylesForm;
25
use LeadersLinked\Form\MyPrivateNetworkLogoForm;
26
 
27
 
28
class MyPrivateNetworkController extends AbstractActionController
29
{
30
    /**
31
     *
32
     * @var AdapterInterface
33
     */
34
    private $adapter;
35
 
36
 
37
    /**
38
     *
39
     * @var AbstractAdapter
40
     */
41
    private $cache;
42
 
43
    /**
44
     *
45
     * @var  LoggerInterface
46
     */
47
    private $logger;
48
 
49
 
50
    /**
51
     *
52
     * @var array
53
     */
54
    private $config;
55
 
56
    /**
57
     *
58
     * @param AdapterInterface $adapter
59
     * @param AbstractAdapter $cache
60
     * @param LoggerInterface $logger
61
     * @param array $config
62
     */
63
    public function __construct($adapter, $cache , $logger,  $config)
64
    {
65
        $this->adapter      = $adapter;
66
        $this->cache        = $cache;
67
        $this->logger       = $logger;
68
        $this->config       = $config;
69
 
70
    }
71
 
72
    /**
73
     *
74
     * Generación del listado de perfiles
75
     * {@inheritDoc}
76
     * @see \Laminas\Mvc\Controller\AbstractActionController::indexAction()
77
     */
78
    public function indexAction()
79
    {
80
 
81
        return new JsonModel([
82
            'success' => false,
83
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
84
        ]);
85
 
86
    }
87
 
88
    public function introAction()
89
    {
90
        $currentUserPlugin  = $this->plugin('currentUserPlugin');
91
        $currentUser        = $currentUserPlugin->getUser();
92
 
93
        $currentNetworkPlugin =  $this->plugin('currentNetworkPlugin');
94
        $currentNetwork = $currentNetworkPlugin->getNetwork();
95
 
96
        $networkMapper = NetworkMapper::getInstance($this->adapter);
97
        $network = $networkMapper->fetchOne($currentNetwork->id);
98
 
99
 
100
        $request    = $this->getRequest();
101
        if($request->isGet()) {
102
 
103
            $form = new MyPrivateNetworkIntroForm();
104
            $form->setData([
105
                'intro' => $network->intro
106
            ]);
107
 
108
            $this->layout()->setTemplate('layout/layout-backend');
109
            $viewModel = new ViewModel();
110
            $viewModel->setTemplate('leaders-linked/my-private-network/intro.phtml');
111
            $viewModel->setVariable('form', $form);
112
            return $viewModel ;
113
 
114
        }
115
        else if($request->isPost()) {
116
 
117
            $form = new  MyPrivateNetworkIntroForm();;
118
            $dataPost = $request->getPost()->toArray();
119
 
120
            $form->setData($dataPost);
121
 
122
            if($form->isValid()) {
123
                $dataPost = (array) $form->getData();
124
 
125
                $network->intro = $dataPost['intro'];
126
                if($networkMapper->update($network)) {
127
 
128
                    $this->logger->info('Se actualizo el texto intro de la red : ' . $network->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
129
 
130
                    $data = [
131
                        'success'   => true,
132
                        'data'   => 'LABEL_RECORD_UPDATED'
133
                    ];
134
                } else {
135
                    $data = [
136
                        'success'   => false,
137
                        'data'      => $networkMapper->getError()
138
                    ];
139
 
140
                }
141
 
142
                return new JsonModel($data);
143
 
144
            } else {
145
                $messages = [];
146
                $form_messages = (array) $form->getMessages();
147
                foreach($form_messages  as $fieldname => $field_messages)
148
                {
149
 
150
                    $messages[$fieldname] = array_values($field_messages);
151
                }
152
 
153
                return new JsonModel([
154
                    'success'   => false,
155
                    'data'   => $messages
156
                ]);
157
            }
158
 
159
        } else {
160
            $data = [
161
                'success' => false,
162
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
163
            ];
164
 
165
            return new JsonModel($data);
166
        }
167
 
168
        return new JsonModel($data);
169
    }
170
 
171
 
172
    public function stylesAndColorsAction()
173
    {
174
        $currentUserPlugin  = $this->plugin('currentUserPlugin');
175
        $currentUser        = $currentUserPlugin->getUser();
176
 
177
        $currentNetworkPlugin =  $this->plugin('currentNetworkPlugin');
178
        $currentNetwork = $currentNetworkPlugin->getNetwork();
179
 
180
        $networkMapper = NetworkMapper::getInstance($this->adapter);
181
        $network = $networkMapper->fetchOne($currentNetwork->id);
182
 
183
 
184
        $request    = $this->getRequest();
185
        if($request->isGet()) {
186
 
187
            $data = [];
188
            foreach($network as $key => $value)
189
            {
190
                if(strpos($key, 'css') !== false) {
191
 
192
                    $data[$key] = $network->{$key};
193
 
194
                }
195
            }
196
 
197
            $form = new MyPrivateNetworkStylesForm();
198
            $form->setData($data);
199
 
200
            $this->layout()->setTemplate('layout/layout-backend');
201
            $viewModel = new ViewModel();
202
            $viewModel->setTemplate('leaders-linked/my-private-network/styles-and-colors.phtml');
203
            $viewModel->setVariable('form', $form);
204
            return $viewModel ;
205
 
206
        }
207
        else if($request->isPost()) {
208
 
209
            $form = new  MyPrivateNetworkStylesForm();
210
            $dataPost = $request->getPost()->toArray();
211
 
212
            $form->setData($dataPost);
213
 
214
            if($form->isValid()) {
215
                $dataPost = (array) $form->getData();
216
 
217
                foreach($network as $key => $value)
218
                {
219
                    if(strpos($key, 'css') !== false) {
220
 
221
                        $network->{$key} = $dataPost[$key];
222
 
223
                    }
224
                }
225
 
226
                if($networkMapper->update($network)) {
227
 
228
                    $this->logger->info('Se actualizo los estilos y colores de la red : ' . $network->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
229
 
230
                    $data = [
231
                        'success'   => true,
232
                        'data'   => 'LABEL_RECORD_UPDATED'
233
                    ];
234
                } else {
235
                    $data = [
236
                        'success'   => false,
237
                        'data'      => $networkMapper->getError()
238
                    ];
239
 
240
                }
241
 
242
                return new JsonModel($data);
243
 
244
            } else {
245
                $messages = [];
246
                $form_messages = (array) $form->getMessages();
247
                foreach($form_messages  as $fieldname => $field_messages)
248
                {
249
 
250
                    $messages[$fieldname] = array_values($field_messages);
251
                }
252
 
253
                return new JsonModel([
254
                    'success'   => false,
255
                    'data'   => $messages
256
                ]);
257
            }
258
 
259
        } else {
260
            $data = [
261
                'success' => false,
262
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
263
            ];
264
 
265
            return new JsonModel($data);
266
        }
267
 
268
        return new JsonModel($data);
269
    }
270
 
271
    public function logoAction()
272
    {
273
        $currentUserPlugin  = $this->plugin('currentUserPlugin');
274
        $currentUser        = $currentUserPlugin->getUser();
275
 
276
        $currentNetworkPlugin =  $this->plugin('currentNetworkPlugin');
277
        $currentNetwork = $currentNetworkPlugin->getNetwork();
278
 
279
        $networkMapper = NetworkMapper::getInstance($this->adapter);
280
        $network = $networkMapper->fetchOne($currentNetwork->id);
281
 
282
 
283
        $request    = $this->getRequest();
284
        if($request->isGet()) {
285
 
286
            $form = new MyPrivateNetworkLogoForm();
287
 
288
 
289
            $this->layout()->setTemplate('layout/layout-backend');
290
            $viewModel = new ViewModel();
291
            $viewModel->setTemplate('leaders-linked/my-private-network/logo.phtml');
292
            $viewModel->setVariables([
293
                'form' => $form,
294
                'image_size' => $this->config['leaderslinked.image_sizes.network_logo'],
295
 
296
            ]);
297
 
298
            return $viewModel ;
299
 
300
        }
301
        else if($request->isPost()) {
302
 
303
            $form = new  MyPrivateNetworkLogoForm();
304
            $dataPost = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());
305
 
306
            $form->setData($dataPost);
307
 
308
            if($form->isValid()) {
309
                $dataPost = (array) $form->getData();
310
 
311
 
312
                list($target_width, $target_height) = explode('x', $this->config['leaderslinked.image_sizes.network_logo']);
313
                $path = $this->config['leaderslinked.fullpath.network'];
314
 
315
                $target_path = $path . $currentNetwork->uuid;
316
                if(!file_exists($target_path)) {
317
                    mkdir($target_path, 0755, true);
318
                }
319
 
320
 
321
                $files         = $this->getRequest()->getFiles()->toArray();
322
                $tmp_filename  = $files['file']['tmp_name'];
323
 
324
               try {
325
                    if($network->logo) {
326
                       if(!image ::delete($target_path, $network->logo)) {
327
                            return new JsonModel([
328
                                'success'   => false,
329
                                'data'   =>  'ERROR_THERE_WAS_AN_ERROR'
330
                            ]);
331
                        }
332
                    }
333
 
334
 
335
                    $filename = 'logo.png';
336
                    $crop_to_dimensions = true;
337
                    if(Image::uploadImage($tmp_filename, $target_path, $filename, $target_width, $target_height, $crop_to_dimensions)) {
338
                       $network->logo = $filename;
339
                       ;
340
                    }
341
                } catch(\Throwable $e) {
342
                    error_log($e->getTraceAsString());
343
                }
344
 
345
 
346
                if($networkMapper->update($network)) {
347
 
348
                    $this->logger->info('Se actualizo el logo de la red : ' . $network->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
349
 
350
                    $data = [
351
                        'success'   => true,
352
                        'data'   => 'LABEL_RECORD_UPDATED'
353
                    ];
354
                } else {
355
                    $data = [
356
                        'success'   => false,
357
                        'data'      => $networkMapper->getError()
358
                    ];
359
 
360
                }
361
 
362
                return new JsonModel($data);
363
 
364
            } else {
365
                $messages = [];
366
                $form_messages = (array) $form->getMessages();
367
                foreach($form_messages  as $fieldname => $field_messages)
368
                {
369
 
370
                    $messages[$fieldname] = array_values($field_messages);
371
                }
372
 
373
                return new JsonModel([
374
                    'success'   => false,
375
                    'data'   => $messages
376
                ]);
377
            }
378
 
379
        } else {
380
            $data = [
381
                'success' => false,
382
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
383
            ];
384
 
385
            return new JsonModel($data);
386
        }
387
 
388
        return new JsonModel($data);
389
    }
390
 
391
    public function navbarAction()
392
    {
393
        $currentUserPlugin  = $this->plugin('currentUserPlugin');
394
        $currentUser        = $currentUserPlugin->getUser();
395
 
396
        $currentNetworkPlugin =  $this->plugin('currentNetworkPlugin');
397
        $currentNetwork = $currentNetworkPlugin->getNetwork();
398
 
399
        $networkMapper = NetworkMapper::getInstance($this->adapter);
400
        $network = $networkMapper->fetchOne($currentNetwork->id);
401
 
402
 
403
        $request    = $this->getRequest();
404
        if($request->isGet()) {
405
 
406
            $form = new MyPrivateNetworkLogoForm();
407
 
408
 
409
            $this->layout()->setTemplate('layout/layout-backend');
410
            $viewModel = new ViewModel();
411
            $viewModel->setTemplate('leaders-linked/my-private-network/navbar.phtml');
412
            $viewModel->setVariables([
413
                'form' => $form,
414
                'image_size' => $this->config['leaderslinked.image_sizes.network_navbar'],
415
 
416
            ]);
417
 
418
            return $viewModel ;
419
 
420
        }
421
        else if($request->isPost()) {
422
 
423
            $form = new  MyPrivateNetworkLogoForm();
424
            $dataPost = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());
425
 
426
            $form->setData($dataPost);
427
 
428
            if($form->isValid()) {
429
                $dataPost = (array) $form->getData();
430
 
431
 
432
                list($target_width, $target_height) = explode('x', $this->config['leaderslinked.image_sizes.network_navbar']);
433
                $path = $this->config['leaderslinked.fullpath.network'];
434
 
435
                $target_path = $path . $currentNetwork->uuid;
436
                if(!file_exists($target_path)) {
437
                    mkdir($target_path, 0755, true);
438
                }
439
 
440
 
441
                $files         = $this->getRequest()->getFiles()->toArray();
442
                $tmp_filename  = $files['file']['tmp_name'];
443
 
444
                try {
445
                    if($network->navbar) {
446
                        if(!image ::delete($target_path, $network->navbar)) {
447
                            return new JsonModel([
448
                                'success'   => false,
449
                                'data'   =>  'ERROR_THERE_WAS_AN_ERROR'
450
                            ]);
451
                        }
452
                    }
453
 
454
 
455
                    $filename = 'navbar.png';
456
                    $crop_to_dimensions = true;
457
                    if(Image::uploadImage($tmp_filename, $target_path, $filename, $target_width, $target_height, $crop_to_dimensions)) {
458
                        $network->navbar = $filename;
459
                        ;
460
                    }
461
                } catch(\Throwable $e) {
462
                    error_log($e->getTraceAsString());
463
                }
464
 
465
 
466
                if($networkMapper->update($network)) {
467
 
468
                    $this->logger->info('Se actualizo el navbar de la red : ' . $network->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
469
 
470
                    $data = [
471
                        'success'   => true,
472
                        'data'   => 'LABEL_RECORD_UPDATED'
473
                    ];
474
                } else {
475
                    $data = [
476
                        'success'   => false,
477
                        'data'      => $networkMapper->getError()
478
                    ];
479
 
480
                }
481
 
482
                return new JsonModel($data);
483
 
484
            } else {
485
                $messages = [];
486
                $form_messages = (array) $form->getMessages();
487
                foreach($form_messages  as $fieldname => $field_messages)
488
                {
489
 
490
                    $messages[$fieldname] = array_values($field_messages);
491
                }
492
 
493
                return new JsonModel([
494
                    'success'   => false,
495
                    'data'   => $messages
496
                ]);
497
            }
498
 
499
        } else {
500
            $data = [
501
                'success' => false,
502
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
503
            ];
504
 
505
            return new JsonModel($data);
506
        }
507
 
508
        return new JsonModel($data);
509
    }
510
 
511
    public function faviconAction()
512
    {
513
        $currentUserPlugin  = $this->plugin('currentUserPlugin');
514
        $currentUser        = $currentUserPlugin->getUser();
515
 
516
        $currentNetworkPlugin =  $this->plugin('currentNetworkPlugin');
517
        $currentNetwork = $currentNetworkPlugin->getNetwork();
518
 
519
        $networkMapper = NetworkMapper::getInstance($this->adapter);
520
        $network = $networkMapper->fetchOne($currentNetwork->id);
521
 
522
 
523
        $request    = $this->getRequest();
524
        if($request->isGet()) {
525
 
526
            $form = new MyPrivateNetworkLogoForm();
527
 
528
 
529
            $this->layout()->setTemplate('layout/layout-backend');
530
            $viewModel = new ViewModel();
531
            $viewModel->setTemplate('leaders-linked/my-private-network/favico.phtml');
532
            $viewModel->setVariables([
533
                'form' => $form,
534
                'image_size' => $this->config['leaderslinked.image_sizes.network_favico'],
535
 
536
            ]);
537
 
538
            return $viewModel ;
539
 
540
        }
541
        else if($request->isPost()) {
542
 
543
            $form = new  MyPrivateNetworkLogoForm();
544
            $dataPost = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());
545
 
546
            $form->setData($dataPost);
547
 
548
            if($form->isValid()) {
549
                $dataPost = (array) $form->getData();
550
 
551
 
552
                list($target_width, $target_height) = explode('x', $this->config['leaderslinked.image_sizes.network_favico']);
553
                $path = $this->config['leaderslinked.fullpath.network'];
554
 
555
                $target_path = $path . $currentNetwork->uuid;
556
                if(!file_exists($target_path)) {
557
                    mkdir($target_path, 0755, true);
558
                }
559
 
560
 
561
                $files         = $this->getRequest()->getFiles()->toArray();
562
                $tmp_filename  = $files['file']['tmp_name'];
563
 
564
                try {
565
                    if($network->favico) {
566
                        if(!image ::delete($target_path, $network->favico)) {
567
                            return new JsonModel([
568
                                'success'   => false,
569
                                'data'   =>  'ERROR_THERE_WAS_AN_ERROR'
570
                            ]);
571
                        }
572
                    }
573
 
574
 
575
                    $filename = 'favico.png';
576
                    $crop_to_dimensions = true;
577
                    if(Image::uploadImage($tmp_filename, $target_path, $filename, $target_width, $target_height, $crop_to_dimensions)) {
578
                        $network->favico = $filename;
579
                        ;
580
                    }
581
                } catch(\Throwable $e) {
582
                    error_log($e->getTraceAsString());
583
                }
584
 
585
 
586
                if($networkMapper->update($network)) {
587
 
588
                    $this->logger->info('Se actualizo el favico de la red : ' . $network->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
589
 
590
                    $data = [
591
                        'success'   => true,
592
                        'data'   => 'LABEL_RECORD_UPDATED'
593
                    ];
594
                } else {
595
                    $data = [
596
                        'success'   => false,
597
                        'data'      => $networkMapper->getError()
598
                    ];
599
 
600
                }
601
 
602
                return new JsonModel($data);
603
 
604
            } else {
605
                $messages = [];
606
                $form_messages = (array) $form->getMessages();
607
                foreach($form_messages  as $fieldname => $field_messages)
608
                {
609
 
610
                    $messages[$fieldname] = array_values($field_messages);
611
                }
612
 
613
                return new JsonModel([
614
                    'success'   => false,
615
                    'data'   => $messages
616
                ]);
617
            }
618
 
619
        } else {
620
            $data = [
621
                'success' => false,
622
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
623
            ];
624
 
625
            return new JsonModel($data);
626
        }
627
 
628
        return new JsonModel($data);
629
    }
630
 
631
}