Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 15376 | Rev 15451 | Ir a la última revisión | | Comparar con el anterior | 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;
15394 efrain 26
use LeadersLinked\Form\MyPrivateNetworkCalendarForm;
15338 efrain 27
 
28
 
29
class MyPrivateNetworkController extends AbstractActionController
30
{
31
    /**
32
     *
33
     * @var AdapterInterface
34
     */
35
    private $adapter;
36
 
37
 
38
    /**
39
     *
40
     * @var AbstractAdapter
41
     */
42
    private $cache;
43
 
44
    /**
45
     *
46
     * @var  LoggerInterface
47
     */
48
    private $logger;
49
 
50
 
51
    /**
52
     *
53
     * @var array
54
     */
55
    private $config;
56
 
57
    /**
58
     *
59
     * @param AdapterInterface $adapter
60
     * @param AbstractAdapter $cache
61
     * @param LoggerInterface $logger
62
     * @param array $config
63
     */
64
    public function __construct($adapter, $cache , $logger,  $config)
65
    {
66
        $this->adapter      = $adapter;
67
        $this->cache        = $cache;
68
        $this->logger       = $logger;
69
        $this->config       = $config;
70
 
71
    }
72
 
73
    /**
74
     *
75
     * Generación del listado de perfiles
76
     * {@inheritDoc}
77
     * @see \Laminas\Mvc\Controller\AbstractActionController::indexAction()
78
     */
79
    public function indexAction()
80
    {
81
 
82
        return new JsonModel([
83
            'success' => false,
84
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
85
        ]);
86
 
87
    }
88
 
89
    public function introAction()
90
    {
91
        $currentUserPlugin  = $this->plugin('currentUserPlugin');
92
        $currentUser        = $currentUserPlugin->getUser();
93
 
94
        $currentNetworkPlugin =  $this->plugin('currentNetworkPlugin');
95
        $currentNetwork = $currentNetworkPlugin->getNetwork();
96
 
97
        $networkMapper = NetworkMapper::getInstance($this->adapter);
98
        $network = $networkMapper->fetchOne($currentNetwork->id);
99
 
100
 
101
        $request    = $this->getRequest();
102
        if($request->isGet()) {
103
 
104
            $form = new MyPrivateNetworkIntroForm();
105
            $form->setData([
106
                'intro' => $network->intro
107
            ]);
108
 
109
            $this->layout()->setTemplate('layout/layout-backend');
110
            $viewModel = new ViewModel();
111
            $viewModel->setTemplate('leaders-linked/my-private-network/intro.phtml');
112
            $viewModel->setVariable('form', $form);
113
            return $viewModel ;
114
 
115
        }
116
        else if($request->isPost()) {
117
 
118
            $form = new  MyPrivateNetworkIntroForm();;
119
            $dataPost = $request->getPost()->toArray();
120
 
121
            $form->setData($dataPost);
122
 
123
            if($form->isValid()) {
124
                $dataPost = (array) $form->getData();
125
 
126
                $network->intro = $dataPost['intro'];
127
                if($networkMapper->update($network)) {
128
 
129
                    $this->logger->info('Se actualizo el texto intro de la red : ' . $network->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
130
 
131
                    $data = [
132
                        'success'   => true,
133
                        'data'   => 'LABEL_RECORD_UPDATED'
134
                    ];
135
                } else {
136
                    $data = [
137
                        'success'   => false,
138
                        'data'      => $networkMapper->getError()
139
                    ];
140
 
141
                }
142
 
143
                return new JsonModel($data);
144
 
145
            } else {
146
                $messages = [];
147
                $form_messages = (array) $form->getMessages();
148
                foreach($form_messages  as $fieldname => $field_messages)
149
                {
150
 
151
                    $messages[$fieldname] = array_values($field_messages);
152
                }
153
 
154
                return new JsonModel([
155
                    'success'   => false,
156
                    'data'   => $messages
157
                ]);
158
            }
159
 
160
        } else {
161
            $data = [
162
                'success' => false,
163
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
164
            ];
165
 
166
            return new JsonModel($data);
167
        }
168
 
169
        return new JsonModel($data);
170
    }
171
 
172
 
173
    public function stylesAndColorsAction()
174
    {
175
        $currentUserPlugin  = $this->plugin('currentUserPlugin');
176
        $currentUser        = $currentUserPlugin->getUser();
177
 
178
        $currentNetworkPlugin =  $this->plugin('currentNetworkPlugin');
179
        $currentNetwork = $currentNetworkPlugin->getNetwork();
180
 
181
        $networkMapper = NetworkMapper::getInstance($this->adapter);
182
        $network = $networkMapper->fetchOne($currentNetwork->id);
183
 
184
 
185
        $request    = $this->getRequest();
186
        if($request->isGet()) {
187
 
15394 efrain 188
            $search_key = 'css_';
189
            $search_length = strlen($search_key);
190
 
191
            $search_exclude_key = 'css_calendar_';
192
            $search_exclude_length = strlen($search_exclude_key);
193
 
194
 
15338 efrain 195
            $data = [];
196
            foreach($network as $key => $value)
197
            {
15394 efrain 198
 
199
                if(substr($key, 0, $search_length) == $search_key && substr($key, 0, $search_exclude_length) != $search_exclude_key )  {
15338 efrain 200
                    $data[$key] = $network->{$key};
201
 
202
                }
203
            }
15394 efrain 204
 
15338 efrain 205
            $form = new MyPrivateNetworkStylesForm();
206
            $form->setData($data);
207
 
208
            $this->layout()->setTemplate('layout/layout-backend');
209
            $viewModel = new ViewModel();
210
            $viewModel->setTemplate('leaders-linked/my-private-network/styles-and-colors.phtml');
211
            $viewModel->setVariable('form', $form);
212
            return $viewModel ;
213
 
214
        }
215
        else if($request->isPost()) {
216
 
217
            $form = new  MyPrivateNetworkStylesForm();
218
            $dataPost = $request->getPost()->toArray();
219
 
220
            $form->setData($dataPost);
221
 
222
            if($form->isValid()) {
15394 efrain 223
 
224
 
225
                $search_key = 'css_';
226
                $search_length = strlen($search_key);
227
 
228
                $search_exclude_key = 'css_calendar_';
229
                $search_exclude_length = strlen($search_exclude_key);
230
 
15338 efrain 231
                $dataPost = (array) $form->getData();
232
 
233
                foreach($network as $key => $value)
234
                {
15394 efrain 235
                    if(substr($key, 0, $search_length) == $search_key && substr($key, 0, $search_exclude_length) != $search_exclude_key )  {
15338 efrain 236
 
237
                        $network->{$key} = $dataPost[$key];
238
 
239
                    }
240
                }
241
 
242
                if($networkMapper->update($network)) {
243
 
244
                    $this->logger->info('Se actualizo los estilos y colores de la red : ' . $network->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
245
 
246
                    $data = [
247
                        'success'   => true,
248
                        'data'   => 'LABEL_RECORD_UPDATED'
249
                    ];
250
                } else {
251
                    $data = [
252
                        'success'   => false,
253
                        'data'      => $networkMapper->getError()
254
                    ];
255
 
256
                }
257
 
258
                return new JsonModel($data);
259
 
260
            } else {
261
                $messages = [];
262
                $form_messages = (array) $form->getMessages();
263
                foreach($form_messages  as $fieldname => $field_messages)
264
                {
265
 
266
                    $messages[$fieldname] = array_values($field_messages);
267
                }
268
 
269
                return new JsonModel([
270
                    'success'   => false,
271
                    'data'   => $messages
272
                ]);
273
            }
274
 
275
        } else {
276
            $data = [
277
                'success' => false,
278
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
279
            ];
280
 
281
            return new JsonModel($data);
282
        }
283
 
284
        return new JsonModel($data);
285
    }
286
 
287
    public function logoAction()
288
    {
289
        $currentUserPlugin  = $this->plugin('currentUserPlugin');
290
        $currentUser        = $currentUserPlugin->getUser();
291
 
292
        $currentNetworkPlugin =  $this->plugin('currentNetworkPlugin');
293
        $currentNetwork = $currentNetworkPlugin->getNetwork();
294
 
295
        $networkMapper = NetworkMapper::getInstance($this->adapter);
296
        $network = $networkMapper->fetchOne($currentNetwork->id);
297
 
298
 
299
        $request    = $this->getRequest();
300
        if($request->isGet()) {
301
 
302
            $form = new MyPrivateNetworkLogoForm();
303
 
304
 
305
            $this->layout()->setTemplate('layout/layout-backend');
306
            $viewModel = new ViewModel();
307
            $viewModel->setTemplate('leaders-linked/my-private-network/logo.phtml');
308
            $viewModel->setVariables([
309
                'form' => $form,
310
                'image_size' => $this->config['leaderslinked.image_sizes.network_logo'],
311
 
312
            ]);
313
 
314
            return $viewModel ;
315
 
316
        }
317
        else if($request->isPost()) {
318
 
319
            $form = new  MyPrivateNetworkLogoForm();
320
            $dataPost = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());
321
 
322
            $form->setData($dataPost);
323
 
324
            if($form->isValid()) {
325
                $dataPost = (array) $form->getData();
326
 
327
 
328
                list($target_width, $target_height) = explode('x', $this->config['leaderslinked.image_sizes.network_logo']);
329
                $path = $this->config['leaderslinked.fullpath.network'];
330
 
331
                $target_path = $path . $currentNetwork->uuid;
332
                if(!file_exists($target_path)) {
333
                    mkdir($target_path, 0755, true);
334
                }
335
 
336
 
337
                $files         = $this->getRequest()->getFiles()->toArray();
338
                $tmp_filename  = $files['file']['tmp_name'];
339
 
340
               try {
341
                    if($network->logo) {
342
                       if(!image ::delete($target_path, $network->logo)) {
343
                            return new JsonModel([
344
                                'success'   => false,
345
                                'data'   =>  'ERROR_THERE_WAS_AN_ERROR'
346
                            ]);
347
                        }
348
                    }
349
 
350
 
351
                    $filename = 'logo.png';
15376 efrain 352
                    $crop_to_dimensions = false;
15338 efrain 353
                    if(Image::uploadImage($tmp_filename, $target_path, $filename, $target_width, $target_height, $crop_to_dimensions)) {
354
                       $network->logo = $filename;
355
                       ;
356
                    }
357
                } catch(\Throwable $e) {
358
                    error_log($e->getTraceAsString());
359
                }
360
 
361
 
362
                if($networkMapper->update($network)) {
363
 
364
                    $this->logger->info('Se actualizo el logo de la red : ' . $network->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
365
 
366
                    $data = [
367
                        'success'   => true,
368
                        'data'   => 'LABEL_RECORD_UPDATED'
369
                    ];
370
                } else {
371
                    $data = [
372
                        'success'   => false,
373
                        'data'      => $networkMapper->getError()
374
                    ];
375
 
376
                }
377
 
378
                return new JsonModel($data);
379
 
380
            } else {
381
                $messages = [];
382
                $form_messages = (array) $form->getMessages();
383
                foreach($form_messages  as $fieldname => $field_messages)
384
                {
385
 
386
                    $messages[$fieldname] = array_values($field_messages);
387
                }
388
 
389
                return new JsonModel([
390
                    'success'   => false,
391
                    'data'   => $messages
392
                ]);
393
            }
394
 
395
        } else {
396
            $data = [
397
                'success' => false,
398
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
399
            ];
400
 
401
            return new JsonModel($data);
402
        }
403
 
404
        return new JsonModel($data);
405
    }
406
 
407
    public function navbarAction()
408
    {
409
        $currentUserPlugin  = $this->plugin('currentUserPlugin');
410
        $currentUser        = $currentUserPlugin->getUser();
411
 
412
        $currentNetworkPlugin =  $this->plugin('currentNetworkPlugin');
413
        $currentNetwork = $currentNetworkPlugin->getNetwork();
414
 
415
        $networkMapper = NetworkMapper::getInstance($this->adapter);
416
        $network = $networkMapper->fetchOne($currentNetwork->id);
417
 
418
 
419
        $request    = $this->getRequest();
420
        if($request->isGet()) {
421
 
422
            $form = new MyPrivateNetworkLogoForm();
423
 
424
 
425
            $this->layout()->setTemplate('layout/layout-backend');
426
            $viewModel = new ViewModel();
427
            $viewModel->setTemplate('leaders-linked/my-private-network/navbar.phtml');
428
            $viewModel->setVariables([
429
                'form' => $form,
430
                'image_size' => $this->config['leaderslinked.image_sizes.network_navbar'],
431
 
432
            ]);
433
 
434
            return $viewModel ;
435
 
436
        }
437
        else if($request->isPost()) {
438
 
439
            $form = new  MyPrivateNetworkLogoForm();
440
            $dataPost = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());
441
 
442
            $form->setData($dataPost);
443
 
444
            if($form->isValid()) {
445
                $dataPost = (array) $form->getData();
446
 
447
 
448
                list($target_width, $target_height) = explode('x', $this->config['leaderslinked.image_sizes.network_navbar']);
449
                $path = $this->config['leaderslinked.fullpath.network'];
450
 
451
                $target_path = $path . $currentNetwork->uuid;
452
                if(!file_exists($target_path)) {
453
                    mkdir($target_path, 0755, true);
454
                }
455
 
456
 
457
                $files         = $this->getRequest()->getFiles()->toArray();
458
                $tmp_filename  = $files['file']['tmp_name'];
459
 
460
                try {
461
                    if($network->navbar) {
462
                        if(!image ::delete($target_path, $network->navbar)) {
463
                            return new JsonModel([
464
                                'success'   => false,
465
                                'data'   =>  'ERROR_THERE_WAS_AN_ERROR'
466
                            ]);
467
                        }
468
                    }
469
 
470
 
471
                    $filename = 'navbar.png';
15376 efrain 472
                    $crop_to_dimensions = false;
15338 efrain 473
                    if(Image::uploadImage($tmp_filename, $target_path, $filename, $target_width, $target_height, $crop_to_dimensions)) {
474
                        $network->navbar = $filename;
475
                        ;
476
                    }
477
                } catch(\Throwable $e) {
478
                    error_log($e->getTraceAsString());
479
                }
480
 
481
 
482
                if($networkMapper->update($network)) {
483
 
484
                    $this->logger->info('Se actualizo el navbar de la red : ' . $network->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
485
 
486
                    $data = [
487
                        'success'   => true,
488
                        'data'   => 'LABEL_RECORD_UPDATED'
489
                    ];
490
                } else {
491
                    $data = [
492
                        'success'   => false,
493
                        'data'      => $networkMapper->getError()
494
                    ];
495
 
496
                }
497
 
498
                return new JsonModel($data);
499
 
500
            } else {
501
                $messages = [];
502
                $form_messages = (array) $form->getMessages();
503
                foreach($form_messages  as $fieldname => $field_messages)
504
                {
505
 
506
                    $messages[$fieldname] = array_values($field_messages);
507
                }
508
 
509
                return new JsonModel([
510
                    'success'   => false,
511
                    'data'   => $messages
512
                ]);
513
            }
514
 
515
        } else {
516
            $data = [
517
                'success' => false,
518
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
519
            ];
520
 
521
            return new JsonModel($data);
522
        }
523
 
524
        return new JsonModel($data);
525
    }
526
 
527
    public function faviconAction()
528
    {
529
        $currentUserPlugin  = $this->plugin('currentUserPlugin');
530
        $currentUser        = $currentUserPlugin->getUser();
531
 
532
        $currentNetworkPlugin =  $this->plugin('currentNetworkPlugin');
533
        $currentNetwork = $currentNetworkPlugin->getNetwork();
534
 
535
        $networkMapper = NetworkMapper::getInstance($this->adapter);
536
        $network = $networkMapper->fetchOne($currentNetwork->id);
537
 
538
 
539
        $request    = $this->getRequest();
540
        if($request->isGet()) {
541
 
542
            $form = new MyPrivateNetworkLogoForm();
543
 
544
 
545
            $this->layout()->setTemplate('layout/layout-backend');
546
            $viewModel = new ViewModel();
547
            $viewModel->setTemplate('leaders-linked/my-private-network/favico.phtml');
548
            $viewModel->setVariables([
549
                'form' => $form,
550
                'image_size' => $this->config['leaderslinked.image_sizes.network_favico'],
551
 
552
            ]);
553
 
554
            return $viewModel ;
555
 
556
        }
557
        else if($request->isPost()) {
558
 
559
            $form = new  MyPrivateNetworkLogoForm();
560
            $dataPost = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());
561
 
562
            $form->setData($dataPost);
563
 
564
            if($form->isValid()) {
565
                $dataPost = (array) $form->getData();
566
 
567
 
568
                list($target_width, $target_height) = explode('x', $this->config['leaderslinked.image_sizes.network_favico']);
569
                $path = $this->config['leaderslinked.fullpath.network'];
570
 
571
                $target_path = $path . $currentNetwork->uuid;
572
                if(!file_exists($target_path)) {
573
                    mkdir($target_path, 0755, true);
574
                }
575
 
576
 
577
                $files         = $this->getRequest()->getFiles()->toArray();
578
                $tmp_filename  = $files['file']['tmp_name'];
579
 
580
                try {
581
                    if($network->favico) {
582
                        if(!image ::delete($target_path, $network->favico)) {
583
                            return new JsonModel([
584
                                'success'   => false,
585
                                'data'   =>  'ERROR_THERE_WAS_AN_ERROR'
586
                            ]);
587
                        }
588
                    }
589
 
590
 
591
                    $filename = 'favico.png';
15376 efrain 592
                    $crop_to_dimensions = false;
15338 efrain 593
                    if(Image::uploadImage($tmp_filename, $target_path, $filename, $target_width, $target_height, $crop_to_dimensions)) {
594
                        $network->favico = $filename;
595
                        ;
596
                    }
597
                } catch(\Throwable $e) {
598
                    error_log($e->getTraceAsString());
599
                }
600
 
601
 
602
                if($networkMapper->update($network)) {
603
 
604
                    $this->logger->info('Se actualizo el favico de la red : ' . $network->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
605
 
606
                    $data = [
607
                        'success'   => true,
608
                        'data'   => 'LABEL_RECORD_UPDATED'
609
                    ];
610
                } else {
611
                    $data = [
612
                        'success'   => false,
613
                        'data'      => $networkMapper->getError()
614
                    ];
615
 
616
                }
617
 
618
                return new JsonModel($data);
619
 
620
            } else {
621
                $messages = [];
622
                $form_messages = (array) $form->getMessages();
623
                foreach($form_messages  as $fieldname => $field_messages)
624
                {
625
 
626
                    $messages[$fieldname] = array_values($field_messages);
627
                }
628
 
629
                return new JsonModel([
630
                    'success'   => false,
631
                    'data'   => $messages
632
                ]);
633
            }
634
 
635
        } else {
636
            $data = [
637
                'success' => false,
638
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
639
            ];
640
 
641
            return new JsonModel($data);
642
        }
643
 
644
        return new JsonModel($data);
645
    }
646
 
15394 efrain 647
 
648
    public function calendarAction()
649
    {
650
        $currentUserPlugin  = $this->plugin('currentUserPlugin');
651
        $currentUser        = $currentUserPlugin->getUser();
652
 
653
        $currentNetworkPlugin =  $this->plugin('currentNetworkPlugin');
654
        $currentNetwork = $currentNetworkPlugin->getNetwork();
655
 
656
        $networkMapper = NetworkMapper::getInstance($this->adapter);
657
        $network = $networkMapper->fetchOne($currentNetwork->id);
658
 
659
 
660
        $request    = $this->getRequest();
661
        if($request->isGet()) {
662
 
663
            $search_key = 'css_calendar_';
664
            $search_length = strlen($search_key);
665
 
666
 
667
            $data = [];
668
            foreach($network as $key => $value)
669
            {
670
                if(substr($key, 0,  $search_length) ==  $search_key) {
671
                    $data[$key] = $network->{$key};
672
 
673
                }
674
            }
675
 
676
 
677
            $form = new MyPrivateNetworkCalendarForm();
678
            $form->setData($data);
679
 
680
            $this->layout()->setTemplate('layout/layout-backend');
681
            $viewModel = new ViewModel();
682
            $viewModel->setTemplate('leaders-linked/my-private-network/calendar.phtml');
683
            $viewModel->setVariable('form', $form);
684
            return $viewModel ;
685
 
686
        }
687
        else if($request->isPost()) {
688
 
689
            $form = new  MyPrivateNetworkCalendarForm();
690
            $dataPost = $request->getPost()->toArray();
691
 
692
            $form->setData($dataPost);
693
 
694
            if($form->isValid()) {
695
                $dataPost = (array) $form->getData();
696
 
697
 
698
                $search_key = 'css_calendar_';
699
                $search_length = strlen($search_key);
700
 
701
 
702
                foreach($network as $key => $value)
703
                {
704
                    if(substr($key, 0,  $search_length) ==  $search_key) {
705
 
706
                        $network->{$key} = $dataPost[$key];
707
 
708
                    }
709
                }
710
 
711
                if($networkMapper->update($network)) {
712
 
713
                    $this->logger->info('Se actualizo los colores del calendario de la red : ' . $network->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
714
 
715
                    $data = [
716
                        'success'   => true,
717
                        'data'   => 'LABEL_RECORD_UPDATED'
718
                    ];
719
                } else {
720
                    $data = [
721
                        'success'   => false,
722
                        'data'      => $networkMapper->getError()
723
                    ];
724
 
725
                }
726
 
727
                return new JsonModel($data);
728
 
729
            } else {
730
                $messages = [];
731
                $form_messages = (array) $form->getMessages();
732
                foreach($form_messages  as $fieldname => $field_messages)
733
                {
734
 
735
                    $messages[$fieldname] = array_values($field_messages);
736
                }
737
 
738
                return new JsonModel([
739
                    'success'   => false,
740
                    'data'   => $messages
741
                ]);
742
            }
743
 
744
        } else {
745
            $data = [
746
                'success' => false,
747
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
748
            ];
749
 
750
            return new JsonModel($data);
751
        }
752
 
753
        return new JsonModel($data);
754
    }
755
 
756
 
15338 efrain 757
}