Proyectos de Subversion LeadersLinked - Backend

Rev

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