Proyectos de Subversion LeadersLinked - Backend

Rev

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