Proyectos de Subversion LeadersLinked - Backend

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
13308 eleazar 1
<?php
2
 
3
declare(strict_types=1);
4
 
5
namespace LeadersLinked\Controller;
6
 
7
use Laminas\Db\Adapter\AdapterInterface;
8
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
9
use Laminas\Mvc\Controller\AbstractActionController;
10
use Laminas\Log\LoggerInterface;
11
use Laminas\View\Model\ViewModel;
12
use Laminas\View\Model\JsonModel;
13
use LeadersLinked\Library\Functions;
14
use LeadersLinked\Mapper\FeedMapper;
15
use LeadersLinked\Mapper\TopicMapper;
13362 eleazar 16
use LeadersLinked\Mapper\FeedTopicMapper;
13308 eleazar 17
use LeadersLinked\Mapper\QueryMapper;
18
use Laminas\Paginator\Adapter\DbSelect;
19
use Laminas\Paginator\Paginator;
20
use LeadersLinked\Form\CreateFeedForm;
21
use LeadersLinked\Form\TopicForm;
22
use Laminas\Hydrator\ArraySerializableHydrator;
23
use Laminas\Db\ResultSet\HydratingResultSet;
13361 eleazar 24
use LeadersLinked\Model\FeedTopic;
13308 eleazar 25
use LeadersLinked\Model\Feed;
26
use LeadersLinked\Model\Topic;
27
use LeadersLinked\Mapper\CompanyMapper;
28
use LeadersLinked\Model\Company;
29
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
30
 
31
class DevelopmentContentWaitingController extends AbstractActionController {
32
 
33
    /**
34
     *
35
     * @var AdapterInterface
36
     */
37
    private $adapter;
38
 
39
    /**
40
     *
41
     * @var AbstractAdapter
42
     */
43
    private $cache;
44
 
45
    /**
46
     *
47
     * @var  LoggerInterface
48
     */
49
    private $logger;
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
        $this->adapter = $adapter;
66
        $this->cache = $cache;
67
        $this->logger = $logger;
68
        $this->config = $config;
69
    }
70
 
71
    public function indexAction() {
72
        $request = $this->getRequest();
73
        $currentUserPlugin = $this->plugin('currentUserPlugin');
74
        $currentCompany = $currentUserPlugin->getCompany();
75
        $currentUser = $currentUserPlugin->getUser();
76
 
77
        if ($request->isGet()) {
78
 
79
            $headers = $request->getHeaders();
80
 
81
            $isJson = false;
82
            if ($headers->has('Accept')) {
83
                $accept = $headers->get('Accept');
84
 
85
                $prioritized = $accept->getPrioritized();
86
 
87
                foreach ($prioritized as $key => $value) {
88
                    $raw = trim($value->getRaw());
89
 
90
                    if (!$isJson) {
91
                        $isJson = strpos($raw, 'json');
92
                    }
93
                }
94
            }
13925 eleazar 95
            $topicMapper = TopicMapper::getInstance($this->adapter);
96
            $categories = $topicMapper->fetchAllDevelopment();
14411 kerby 97
 
13308 eleazar 98
            if ($isJson) {
99
                $search = $this->params()->fromQuery('search', []);
100
                $search = empty($search['value']) ? '' : filter_var($search['value'], FILTER_SANITIZE_STRING);
101
 
102
                $page = intval($this->params()->fromQuery('start', 1), 10);
103
                $records_x_page = intval($this->params()->fromQuery('length', 10), 10);
14027 eleazar 104
 
13308 eleazar 105
                $acl = $this->getEvent()->getViewModel()->getVariable('acl');
106
                $allowAdd = $acl->isAllowed($currentUser->usertype_id, 'development-and-content/waiting/add');
107
                $allowEdit = $acl->isAllowed($currentUser->usertype_id, 'development-and-content/waiting/edit');
108
                $allowDelete = $acl->isAllowed($currentUser->usertype_id, 'development-and-content/waiting/delete');
13852 eleazar 109
                $allowAproved = $acl->isAllowed($currentUser->usertype_id, 'development-and-content/waiting/aproved');
13989 eleazar 110
                $allowCategories = $acl->isAllowed($currentUser->usertype_id, 'development-and-content/waiting/categories');
13308 eleazar 111
 
112
                $items = [];
113
                $feedMapper = FeedMapper::getInstance($this->adapter);
13923 eleazar 114
 
14028 eleazar 115
                $paginator = $feedMapper->fetchAllByDevelop($search, $page, $records_x_page);
13308 eleazar 116
 
117
                foreach ($paginator as $record) {
13870 eleazar 118
                    $topicMapper = TopicMapper::getInstance($this->adapter);
119
                    $topic = $topicMapper->fetchOne($record->topic_id);
14440 kerby 120
                    $topic_title=  ($topic)? $topic->title:'';
14447 kerby 121
                    $preview = ($record->file_image_preview != null && $record->file_image_preview != '') ? $this->url()->fromRoute('storage', ['code' => $record->uuid, 'type' => 'feed', 'filename' => $record->file_image_preview]) : null;
13308 eleazar 122
                    $item = [
123
                        'id' => $record->id,
13482 eleazar 124
                        'uuid' => $record->uuid,
13308 eleazar 125
                        'title' => $record->title,
14440 kerby 126
                        'topic' => $topic_title,
14445 kerby 127
                        'added_on' => $record->added_on,
13308 eleazar 128
                        'description' => $record->description,
13480 eleazar 129
                        'file' => $record->file_type ? $record->file_type : '',
13504 eleazar 130
                        'link_media' => $record->link_media ? $record->link_media : '',
131
                        'link_name' => $record->link_name,
13481 eleazar 132
                        'file_name' => $record->file_name ? $record->file_name : '',
13504 eleazar 133
                        'link_file' => $this->url()->fromRoute('storage', ['code' => $record->uuid, 'type' => 'feed', 'filename' => $record->file_name]),
13308 eleazar 134
                        'status' => $record->status,
14447 kerby 135
                        'preview'=>$preview,
13308 eleazar 136
                        'actions' => [
137
                            'link_edit' => $this->url()->fromRoute('development-and-content/waiting/edit', ['id' => $record->uuid]),
14411 kerby 138
                            'link_get' => $this->url()->fromRoute('development-and-content/waiting/getContent', ['id' => $record->uuid]),
13411 eleazar 139
                            'link_aproved' => $this->url()->fromRoute('development-and-content/waiting/aproved', ['id' => $record->uuid]),
13308 eleazar 140
                            'link_delete' => $this->url()->fromRoute('development-and-content/waiting/delete', ['id' => $record->uuid]),
13989 eleazar 141
                            'link_categories' => $this->url()->fromRoute('development-and-content/waiting/categories', ['id' => $record->uuid]),
13308 eleazar 142
                        ]
143
                    ];
144
 
145
                    array_push($items, $item);
146
                }
147
 
148
                return new JsonModel([
149
                    'success' => true,
150
                    'data' => [
151
                        'items' => $items,
152
                    ]
153
                ]);
154
            } else {
13925 eleazar 155
 
13308 eleazar 156
                $form = new CreateFeedForm($this->adapter, $currentCompany->id);
157
 
158
                $this->layout()->setTemplate('layout/layout-backend');
159
                $viewModel = new ViewModel();
13477 eleazar 160
                $viewModel->setTemplate('leaders-linked/development-content-waiting/index.phtml');
13932 eleazar 161
                $viewModel->setVariables([
13923 eleazar 162
                    'form' => $form,
163
                    'categories' => $categories,
164
                ]);
13308 eleazar 165
                return $viewModel;
166
            }
167
        } else {
168
            return new JsonModel([
169
                'success' => false,
170
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
171
            ]);
172
        }
13928 eleazar 173
 
13308 eleazar 174
    }
175
 
14411 kerby 176
    public function getContentAction()
177
    {
178
        $request = $this->getRequest();
179
        $currentUserPlugin = $this->plugin('currentUserPlugin');
180
        $currentCompany = $currentUserPlugin->getCompany();
181
        $currentUser = $currentUserPlugin->getUser();
182
 
183
 
184
        if ($request->isGet()) {
185
 
186
            $uuid = $this->params()->fromRoute('id');
187
            if (!$uuid) {
188
                $data = [
189
                    'success' => false,
190
                    'data' => 'ERROR_INVALID_PARAMETER'
191
                ];
192
 
193
                return new JsonModel($data);
194
            }
195
 
196
 
197
            $feedMapper = FeedMapper::getInstance($this->adapter);
198
 
199
            $record = $feedMapper->fetchOneByUuid($uuid);
200
            $topicMapper = TopicMapper::getInstance($this->adapter);
201
            $topic = $topicMapper->fetchOne($record->topic_id);
14429 kerby 202
            $link_file = ($record->file_name!=null && $record->file_name!='')? $this->url()->fromRoute('storage', ['code' => $record->uuid, 'type' => 'feed', 'filename' => $record->file_name]):null;
14443 kerby 203
            $preview = ($record->file_image_preview!=null && $record->file_image_preview != '')? $this->url()->fromRoute('storage', ['code' => $record->uuid, 'type' => 'feed', 'filename' => $record->file_image_preview]) : null;
14411 kerby 204
            return new JsonModel([
205
                'success' => true,
206
                'data' => [
207
                    'feed'=> $record,
208
                    'topic'=> $topic,
209
                    'titulo'=>$record->title,
14420 kerby 210
                    'description'=>$record->description,
211
                    'action' => $this->url()->fromRoute('development-and-content/waiting/edit', ['id' => $record->uuid]),
14429 kerby 212
                    'link_file' => $link_file,
14443 kerby 213
                    'preview' => $preview
14411 kerby 214
                ]
215
            ]);
216
 
217
        } else {
218
            return new JsonModel([
219
                'success' => false,
220
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
221
            ]);
222
        }
223
    }
224
 
13574 eleazar 225
    public function internAction() {
226
        $request = $this->getRequest();
227
        $currentUserPlugin = $this->plugin('currentUserPlugin');
228
        $currentCompany = $currentUserPlugin->getCompany();
229
        $currentUser = $currentUserPlugin->getUser();
230
 
231
        try{
14397 kerby 232
            $request = $this->getRequest();
233
            if ($request->isGet()) {
13574 eleazar 234
 
14397 kerby 235
                $headers = $request->getHeaders();
13574 eleazar 236
 
14397 kerby 237
                $isJson = false;
238
                if ($headers->has('Accept')) {
239
                    $accept = $headers->get('Accept');
13574 eleazar 240
 
14397 kerby 241
                    $prioritized = $accept->getPrioritized();
13574 eleazar 242
 
14397 kerby 243
                    foreach ($prioritized as $key => $value) {
244
                        $raw = trim($value->getRaw());
13574 eleazar 245
 
14397 kerby 246
                        if (!$isJson) {
247
                            $isJson = strpos($raw, 'json');
248
                        }
13574 eleazar 249
                    }
250
                }
14397 kerby 251
                $topicMapper = TopicMapper::getInstance($this->adapter);
252
                $categories = $topicMapper->fetchAllDevelopment();
13574 eleazar 253
 
14397 kerby 254
                if ($isJson) {
255
                    $search = $this->params()->fromQuery('search', []);
256
                    $search = empty($search['value']) ? '' : filter_var($search['value'], FILTER_SANITIZE_STRING);
13574 eleazar 257
 
14397 kerby 258
                    $page = intval($this->params()->fromQuery('start', 1), 10);
259
                    $records_x_page = intval($this->params()->fromQuery('length', 10), 10);
260
                    $order = $this->params()->fromQuery('order', []);
261
                    $order_field = empty($order[0]['column']) ? 99 : intval($order[0]['column'], 10);
262
                    $order_direction = empty($order[0]['dir']) ? 'ASC' : strtoupper(filter_var($order[0]['dir'], FILTER_SANITIZE_STRING));
14027 eleazar 263
 
14397 kerby 264
                    $fields = ['title'];
265
                    $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'title';
13574 eleazar 266
 
14397 kerby 267
                    if (!in_array($order_direction, ['ASC', 'DESC'])) {
268
                        $order_direction = 'ASC';
269
                    }
13574 eleazar 270
 
14397 kerby 271
                    $acl = $this->getEvent()->getViewModel()->getVariable('acl');
272
                    $allowAdd = $acl->isAllowed($currentUser->usertype_id, 'development-and-content/waiting/add');
273
                    $allowEdit = $acl->isAllowed($currentUser->usertype_id, 'development-and-content/waiting/edit');
274
                    $allowDelete = $acl->isAllowed($currentUser->usertype_id, 'development-and-content/waiting/delete');
275
                    $allowAproved = $acl->isAllowed($currentUser->usertype_id, 'development-and-content/waiting/aproved');
13574 eleazar 276
 
14397 kerby 277
                    $items = [];
278
                    $feedMapper = FeedMapper::getInstance($this->adapter);
279
 
280
                    $paginator = $feedMapper->fetchAllByDevelopInternContent();
281
                    return new JsonModel([
282
                        'success' => false,
283
                        'data' => $paginator
284
                    ]);
13574 eleazar 285
 
14397 kerby 286
                    foreach ($paginator as $record) {
287
                        $topicMapper = TopicMapper::getInstance($this->adapter);
288
                        $topic = $topicMapper->fetchOne($record->topic_id);
289
                        $item = [
290
                            'id' => $record->id,
291
                            'uuid' => $record->uuid,
292
                            'title' => $record->title,
293
                            'topic' => $topic->title,
294
                            'description' => $record->description,
295
                            'file' => $record->file_type ? $record->file_type : '',
296
                            'link_media' => $record->link_media ? $record->link_media : '',
297
                            'link_name' => $record->link_name,
298
                            'file_name' => $record->file_name ? $record->file_name : '',
299
                            'link_file' => $this->url()->fromRoute('storage', ['code' => $record->uuid, 'type' => 'feed', 'filename' => $record->file_name]),
300
                            'status' => $record->status,
301
                            'actions' => [
302
                                'link_edit' => $this->url()->fromRoute('development-and-content/waiting/edit', ['id' => $record->uuid]),
303
                                'link_aproved' => $this->url()->fromRoute('development-and-content/waiting/aproved', ['id' => $record->uuid]),
304
                                'link_delete' => $this->url()->fromRoute('development-and-content/waiting/delete', ['id' => $record->uuid]),
305
                            ]
306
                        ];
307
 
308
                        array_push($items, $item);
309
                    }
310
 
311
                    return new JsonModel([
312
                        'success' => true,
313
                        'data' => [
314
                            'items' => $items,
13574 eleazar 315
                        ]
14397 kerby 316
                    ]);
317
                } else {
13574 eleazar 318
 
14397 kerby 319
                    $form = new CreateFeedForm($this->adapter, $currentCompany->id);
320
 
321
                    $this->layout()->setTemplate('layout/layout-backend');
322
                    $viewModel = new ViewModel();
323
                    $viewModel->setTemplate('leaders-linked/development-content-waiting/internt.phtml');
324
                    $viewModel->setVariables([
325
                        'form' => $form,
326
                        'categories' => $categories,
327
                    ]);
328
                    return $viewModel;
13574 eleazar 329
                }
14397 kerby 330
            } else {
13574 eleazar 331
                return new JsonModel([
14397 kerby 332
                    'success' => false,
333
                    'data' => 'ERROR_METHOD_NOT_ALLOWED'
13574 eleazar 334
                ]);
14397 kerby 335
            }
336
        } catch (\Throwable $e) {
337
                $e->getMessage();
338
                return new JsonModel([
339
                    'success' => false,
340
                    'data' => $e
13986 eleazar 341
                ]);
13574 eleazar 342
            }
343
    }
14397 kerby 344
 
13574 eleazar 345
 
346
    public function externAction() {
347
        $request = $this->getRequest();
348
        $currentUserPlugin = $this->plugin('currentUserPlugin');
349
        $currentCompany = $currentUserPlugin->getCompany();
350
        $currentUser = $currentUserPlugin->getUser();
351
 
352
        try{
14397 kerby 353
            $request = $this->getRequest();
354
            if ($request->isGet()) {
13574 eleazar 355
 
14397 kerby 356
                $headers = $request->getHeaders();
13574 eleazar 357
 
14397 kerby 358
                $isJson = false;
359
                if ($headers->has('Accept')) {
360
                    $accept = $headers->get('Accept');
13574 eleazar 361
 
14397 kerby 362
                    $prioritized = $accept->getPrioritized();
13574 eleazar 363
 
14397 kerby 364
                    foreach ($prioritized as $key => $value) {
365
                        $raw = trim($value->getRaw());
13574 eleazar 366
 
14397 kerby 367
                        if (!$isJson) {
368
                            $isJson = strpos($raw, 'json');
369
                        }
13574 eleazar 370
                    }
371
                }
14397 kerby 372
                $topicMapper = TopicMapper::getInstance($this->adapter);
373
                $categories = $topicMapper->fetchAllDevelopment();
13574 eleazar 374
 
14397 kerby 375
                if ($isJson) {
376
                    $search = $this->params()->fromQuery('search', []);
377
                    $search = empty($search['value']) ? '' : filter_var($search['value'], FILTER_SANITIZE_STRING);
13574 eleazar 378
 
14397 kerby 379
                    $page = intval($this->params()->fromQuery('start', 1), 10);
380
                    $records_x_page = intval($this->params()->fromQuery('length', 10), 10);
381
                    $order = $this->params()->fromQuery('order', []);
382
                    $order_field = empty($order[0]['column']) ? 99 : intval($order[0]['column'], 10);
383
                    $order_direction = empty($order[0]['dir']) ? 'ASC' : strtoupper(filter_var($order[0]['dir'], FILTER_SANITIZE_STRING));
14027 eleazar 384
 
14397 kerby 385
                    $fields = ['title'];
386
                    $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'title';
13574 eleazar 387
 
14397 kerby 388
                    if (!in_array($order_direction, ['ASC', 'DESC'])) {
389
                        $order_direction = 'ASC';
390
                    }
13574 eleazar 391
 
14397 kerby 392
                    $acl = $this->getEvent()->getViewModel()->getVariable('acl');
393
                    $allowAdd = $acl->isAllowed($currentUser->usertype_id, 'development-and-content/waiting/add');
394
                    $allowEdit = $acl->isAllowed($currentUser->usertype_id, 'development-and-content/waiting/edit');
395
                    $allowDelete = $acl->isAllowed($currentUser->usertype_id, 'development-and-content/waiting/delete');
396
                    $allowAproved = $acl->isAllowed($currentUser->usertype_id, 'development-and-content/waiting/aproved');
13574 eleazar 397
 
14397 kerby 398
                    $items = [];
399
                    $feedMapper = FeedMapper::getInstance($this->adapter);
400
 
401
                    $paginator = $feedMapper->fetchAllByDevelopExternContent();
402
                    // return new JsonModel([
403
                    //     'success' => false,
404
                    //     'data' => $paginator
405
                    // ]);
13574 eleazar 406
 
14397 kerby 407
                    foreach ($paginator as $record) {
408
                        $topicMapper = TopicMapper::getInstance($this->adapter);
409
                        $topic = $topicMapper->fetchOne($record->topic_id);
410
                        $item = [
411
                            'id' => $record->id,
412
                            'uuid' => $record->uuid,
413
                            'title' => $record->title,
414
                            'topic' => $topic->title,
415
                            'description' => $record->description,
416
                            'file' => $record->file_type ? $record->file_type : '',
417
                            'link_media' => $record->link_media ? $record->link_media : '',
418
                            'link_name' => $record->link_name,
419
                            'file_name' => $record->file_name ? $record->file_name : '',
420
                            'link_file' => $this->url()->fromRoute('storage', ['code' => $record->uuid, 'type' => 'feed', 'filename' => $record->file_name]),
421
                            'status' => $record->status,
422
                            'actions' => [
423
                                'link_edit' => $this->url()->fromRoute('development-and-content/waiting/edit', ['id' => $record->uuid]),
424
                                'link_aproved' => $this->url()->fromRoute('development-and-content/waiting/aproved', ['id' => $record->uuid]),
425
                                'link_delete' => $this->url()->fromRoute('development-and-content/waiting/delete', ['id' => $record->uuid]),
426
                            ]
427
                        ];
428
 
429
                        array_push($items, $item);
430
                    }
431
 
432
                    return new JsonModel([
433
                        'success' => true,
434
                        'data' => [
435
                            'items' => $items,
13574 eleazar 436
                        ]
14397 kerby 437
                    ]);
438
                } else {
13574 eleazar 439
 
14397 kerby 440
                    $form = new CreateFeedForm($this->adapter, $currentCompany->id);
441
 
442
                    $this->layout()->setTemplate('layout/layout-backend');
443
                    $viewModel = new ViewModel();
444
                    $viewModel->setTemplate('leaders-linked/development-content-waiting/extern.phtml');
445
                    $viewModel->setVariables([
446
                        'form' => $form,
447
                        'categories' => $categories,
448
                    ]);
449
                    return $viewModel;
13574 eleazar 450
                }
14397 kerby 451
            } else {
13574 eleazar 452
                return new JsonModel([
14397 kerby 453
                    'success' => false,
454
                    'data' => 'ERROR_METHOD_NOT_ALLOWED'
13574 eleazar 455
                ]);
456
            }
14397 kerby 457
        } catch (\Throwable $e) {
13574 eleazar 458
            $e->getMessage();
459
            return new JsonModel([
460
                'success' => false,
461
                'data' => $e
462
            ]);
463
        }
464
    }
465
 
13988 eleazar 466
    public function categoriesAction() {
467
        $request = $this->getRequest();
468
        $currentUserPlugin = $this->plugin('currentUserPlugin');
469
        $currentCompany = $currentUserPlugin->getCompany();
470
        $currentUser = $currentUserPlugin->getUser();
471
        $id =  $this->params()->fromRoute('id');
472
 
473
        try{
474
        $request = $this->getRequest();
14411 kerby 475
            if ($request->isGet()) {
13988 eleazar 476
 
14411 kerby 477
                $headers = $request->getHeaders();
13988 eleazar 478
 
14411 kerby 479
                $isJson = false;
480
                if ($headers->has('Accept')) {
481
                    $accept = $headers->get('Accept');
13988 eleazar 482
 
14411 kerby 483
                    $prioritized = $accept->getPrioritized();
13988 eleazar 484
 
14411 kerby 485
                    foreach ($prioritized as $key => $value) {
486
                        $raw = trim($value->getRaw());
13988 eleazar 487
 
14411 kerby 488
                        if (!$isJson) {
489
                            $isJson = strpos($raw, 'json');
490
                        }
13988 eleazar 491
                    }
492
                }
14411 kerby 493
                $topicMapper = TopicMapper::getInstance($this->adapter);
494
                $categories = $topicMapper->fetchAllDevelopment();
13988 eleazar 495
 
14411 kerby 496
                $route = $topicMapper->fetchOneByUuid($id);
13988 eleazar 497
 
14411 kerby 498
                if ($isJson) {
499
                    $search = $this->params()->fromQuery('search', []);
500
                    $search = empty($search['value']) ? '' : filter_var($search['value'], FILTER_SANITIZE_STRING);
13988 eleazar 501
 
14411 kerby 502
                    $page = intval($this->params()->fromQuery('start', 1), 10);
503
                    $records_x_page = intval($this->params()->fromQuery('length', 10), 10);
504
                    $order = $this->params()->fromQuery('order', []);
505
                    $order_field = empty($order[0]['column']) ? 99 : intval($order[0]['column'], 10);
506
                    $order_direction = empty($order[0]['dir']) ? 'ASC' : strtoupper(filter_var($order[0]['dir'], FILTER_SANITIZE_STRING));
14027 eleazar 507
 
14411 kerby 508
                    $fields = ['title'];
509
                    $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'title';
13988 eleazar 510
 
14411 kerby 511
                    if (!in_array($order_direction, ['ASC', 'DESC'])) {
512
                        $order_direction = 'ASC';
513
                    }
13988 eleazar 514
 
14411 kerby 515
                    $acl = $this->getEvent()->getViewModel()->getVariable('acl');
516
                    $allowAdd = $acl->isAllowed($currentUser->usertype_id, 'development-and-content/waiting/add');
517
                    $allowEdit = $acl->isAllowed($currentUser->usertype_id, 'development-and-content/waiting/edit');
518
                    $allowDelete = $acl->isAllowed($currentUser->usertype_id, 'development-and-content/waiting/delete');
519
                    $allowAproved = $acl->isAllowed($currentUser->usertype_id, 'development-and-content/waiting/aproved');
13988 eleazar 520
 
14411 kerby 521
                    $items = [];
522
                    $feedMapper = FeedMapper::getInstance($this->adapter);
523
 
524
                    $paginator = $feedMapper->fetchAllByTopicId($route->id);
525
                    // return new JsonModel([
526
                    //     'success' => false,
527
                    //     'data' => $paginator
528
                    // ]);
13988 eleazar 529
 
14411 kerby 530
                    foreach ($paginator as $record) {
531
                        $topicMapper = TopicMapper::getInstance($this->adapter);
532
                        $topic = $topicMapper->fetchOne($record->topic_id);
533
                        $item = [
534
                            'id' => $record->id,
535
                            'uuid' => $record->uuid,
536
                            'title' => $record->title,
537
                            'topic' => $topic->title,
538
                            'description' => $record->description,
539
                            'file' => $record->file_type ? $record->file_type : '',
540
                            'link_media' => $record->link_media ? $record->link_media : '',
541
                            'link_name' => $record->link_name,
542
                            'file_name' => $record->file_name ? $record->file_name : '',
543
                            'link_file' => $this->url()->fromRoute('storage', ['code' => $record->uuid, 'type' => 'feed', 'filename' => $record->file_name]),
544
                            'status' => $record->status,
545
                            'actions' => [
546
                                'link_edit' => $this->url()->fromRoute('development-and-content/waiting/edit', ['id' => $record->uuid]),
547
                                'link_aproved' => $this->url()->fromRoute('development-and-content/waiting/aproved', ['id' => $record->uuid]),
548
                                'link_delete' => $this->url()->fromRoute('development-and-content/waiting/delete', ['id' => $record->uuid]),
549
                            ]
550
                        ];
551
 
552
                        array_push($items, $item);
553
                    }
554
 
555
                    return new JsonModel([
556
                        'success' => true,
557
                        'data' => [
558
                            'items' => $items,
13988 eleazar 559
                        ]
14411 kerby 560
                    ]);
561
                } else {
13988 eleazar 562
 
14411 kerby 563
                    $form = new CreateFeedForm($this->adapter, $currentCompany->id);
564
 
565
                    $this->layout()->setTemplate('layout/layout-backend');
566
                    $viewModel = new ViewModel();
567
                    $viewModel->setTemplate('leaders-linked/development-content-waiting/categories.phtml');
568
                    $viewModel->setVariables([
569
                        'form' => $form,
570
                        'id' => $id,
571
                        'categories' => $categories,
572
                    ]);
573
                    return $viewModel;
13988 eleazar 574
                }
14411 kerby 575
            } else {
13988 eleazar 576
                return new JsonModel([
14411 kerby 577
                    'success' => false,
578
                    'data' => 'ERROR_METHOD_NOT_ALLOWED'
13988 eleazar 579
                ]);
14411 kerby 580
            }
581
        } catch (\Throwable $e) {
582
                $e->getMessage();
583
                return new JsonModel([
584
                    'success' => false,
585
                    'data' => $e
13988 eleazar 586
                ]);
587
        }
588
    }
589
 
13308 eleazar 590
    public function addAction() {
591
        $currentUserPlugin  = $this->plugin('currentUserPlugin');
592
        $currentCompany     = $currentUserPlugin->getCompany();
593
        $currentUser        = $currentUserPlugin->getUser();
594
 
595
        $request    = $this->getRequest();
14411 kerby 596
        try{
597
            if($request->isPost()) {
598
                $form = new  CreateFeedForm($this->adapter);
599
 
600
                $dataPost = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());
601
                $form->setData($dataPost);
602
 
603
                if($form->isValid()) {
604
                    // return new JsonModel([
605
                    //     'success' => false,
606
                    //     'data' => $dataPost
607
                    // ]);
608
                    $dataPost = (array) $form->getData();
609
                    $hydrator = new ObjectPropertyHydrator();
610
                    $feed = new Feed();
611
                    $hydrator->hydrate($dataPost, $feed);
13853 eleazar 612
 
14411 kerby 613
                    $topicMapper = TopicMapper::getInstance($this->adapter);
614
                    $topic = $topicMapper->fetchOneByUuid($dataPost['category_dc']);
615
 
616
                    $feed->user_id = $currentUser->id;
617
                    $feed->company_id = $currentCompany->id;
618
                    $feed->user_id          = $currentUser->id;
619
                    $feed->status           = Feed::STATUS_SAVED;
620
                    $feed->topic_id         = $topic->id;
621
                    $feed->type             = Feed::TYPE_DC;
622
                    $feed->posted_or_shared = Feed::POSTED;
623
                    $feed->shared_with      = Feed::SHARE_WITH_PUBLIC;
13308 eleazar 624
 
14411 kerby 625
                    $feed->total_comments   = 0;
626
                    $feed->total_shared     = 0;
13308 eleazar 627
 
14411 kerby 628
 
629
                    $files = $this->getRequest()->getFiles()->toArray();
630
                    $file_type = '';
631
                    if(isset($files['file']) && empty($files['file']['error'])) {
632
                        $feed_tmp_filename  = $files['file']['tmp_name'];
633
                        $feed_filename      = $this->normalizeString($files['file']['name']);
634
 
635
                        $mime_type = mime_content_type($feed_tmp_filename);
636
                        if($mime_type == 'image/jpg' || $mime_type == 'image/jpeg' || $mime_type == 'image/png') {
637
                            $file_type = Feed::FILE_TYPE_IMAGE;
638
                        } else if($mime_type == 'video/webm' || $mime_type == 'video/mpeg' || $mime_type == 'video/mpg' || $mime_type == 'video/mp4') {
639
                            $file_type = Feed::FILE_TYPE_VIDEO;
640
                        } else if($mime_type == 'application/pdf') {
641
                            $file_type = Feed::FILE_TYPE_DOCUMENT;
642
                        }
13308 eleazar 643
                    }
644
 
14411 kerby 645
                    $feedMapper = FeedMapper::getInstance($this->adapter);
13308 eleazar 646
 
14411 kerby 647
                    if($feedMapper->insert($feed)) {
648
                        $feed = $feedMapper->fetchOne($feed->id);
649
                        $feedMapper->update($feed);
650
                            if( $file_type == Feed::FILE_TYPE_DOCUMENT) {
651
                                try {
652
                                    $target_path = $this->config['leaderslinked.fullpath.feed'] . $feed->uuid;
653
                                    if(!file_exists($target_path)) {
654
                                        mkdir($target_path, 0755);
655
                                    }
13308 eleazar 656
 
14411 kerby 657
                                    $full_filename = $target_path  . DIRECTORY_SEPARATOR .$feed_filename;
658
                                    $result = move_uploaded_file($feed_tmp_filename , $full_filename);
659
                                    if($result) {
660
 
661
                                        $feed->file_type = $file_type;
662
                                        $feed->file_name = basename($feed_filename);
663
                                        $feedMapper->update($feed);
664
                                    } else {
665
                                        error_log('no se pudo mover o renombrar el documento : ' . $feed_tmp_filename . ' al directorio : ' . $full_filename );
666
                                    }
667
                                } catch(\Throwable $e) {
668
                                    error_log($e->getTraceAsString());
13308 eleazar 669
                                }
670
                            }
14411 kerby 671
                            if( $file_type == Feed::FILE_TYPE_IMAGE) {
672
                                try {
673
                                    $target_path = $this->config['leaderslinked.fullpath.feed'] . $feed->uuid;
674
                                    if(!file_exists($target_path)) {
675
                                        mkdir($target_path, 0755);
676
                                    }
677
 
678
                                    list($target_width, $target_height) = explode('x', $this->config['leaderslinked.image_sizes.feed_image_size']);
679
 
680
                                    $feed_filename = substr($feed_filename, 0, strrpos($feed_filename, '.'))  . '.png';
681
                                    $crop_to_dimensions = false;
682
                                    if(Image::uploadImage($feed_tmp_filename, $target_path, $feed_filename, $target_width, $target_height, $crop_to_dimensions )) {
683
                                        $feed->file_type = $file_type;
684
                                        $feed->file_name = basename($feed_filename);
685
                                        $feedMapper->update($feed);
686
                                    }
687
                                } catch(\Throwable $e) {
688
                                    error_log($e->getTraceAsString());
13308 eleazar 689
                                }
690
                            }
14411 kerby 691
                            if( $file_type == Feed::FILE_TYPE_VIDEO) {
692
                                try {
693
                                    $target_path = $this->config['leaderslinked.fullpath.feed'] . $feed->uuid;
694
                                    if(!file_exists($target_path)) {
695
                                        mkdir($target_path, 0755);
696
                                    }
13308 eleazar 697
 
14411 kerby 698
                                    $full_filename = $target_path  . DIRECTORY_SEPARATOR . $feed_filename;
13308 eleazar 699
 
14411 kerby 700
                                    $result = move_uploaded_file($feed_tmp_filename , $full_filename);
701
                                    if($result) {
702
 
703
                                        $size = $this->config['leaderslinked.image_sizes.feed_image_size'];
704
                                        $getFromSecound = 2;
705
 
706
                                        //extracción del cover
707
                                        $generateFileName = substr($feed_filename, 0, strrpos($feed_filename, '.'));
708
                                        $generateFile =  $target_path  . DIRECTORY_SEPARATOR . $generateFileName .  '.png';
709
                                        $cmd            = "/usr/bin/ffmpeg -i $full_filename -an -ss $getFromSecound -s $size $generateFile";
710
                                        exec($cmd);
711
 
712
 
713
                                        $feed->file_type = $file_type;
714
                                        $feed->file_name = basename($feed_filename);
715
                                        $feed->file_image_preview = basename($generateFile);
716
                                        $feedMapper->update($feed);
717
 
718
                                        $videoConvert = new VideoConvert();
719
                                        $videoConvert->filename = $full_filename;
720
                                        $videoConvert->type = VideoConvert::TYPE_FEED;
721
 
722
                                        $videoConvertMapper = VideoConvertMapper::getInstance($this->adapter);
723
                                        $videoConvertMapper->insert($videoConvert);
724
                                    } else {
725
                                        error_log('no se pudo mover o renombrar el documento : ' . $feed_tmp_filename . ' al directorio : ' . $full_filename );
726
                                    }
727
                                } catch(\Throwable $e) {
728
                                    error_log($e->getTraceAsString());
13308 eleazar 729
                                }
730
                            }
14411 kerby 731
 
732
 
733
                            $response = [
734
                                'success'   => true,
735
                                'data'   => 'success'
736
                            ];
737
                    } else {
738
                        $messages = [];
739
                        $form_messages = (array) $form->getMessages();
740
                        foreach($form_messages  as $fieldname => $field_messages)
741
                        {
742
                            $messages[$fieldname] = array_values($field_messages);
13308 eleazar 743
                        }
744
 
745
                    }
746
 
14411 kerby 747
                } else {
748
                    $response = [
749
                        'success' => false,
750
                        'data' => 'ERROR_METHOD_NOT_ALLOWED'
751
                    ];
13308 eleazar 752
                }
753
 
14411 kerby 754
                return new JsonModel($response);
13308 eleazar 755
            }
756
 
14411 kerby 757
        } catch (\Throwable $e) {
758
            $e->getMessage();
759
            return new JsonModel([
760
                'success' => false,
761
                'data' => $e
762
            ]);
13308 eleazar 763
        }
764
    }
765
 
766
    public function deleteAction() {
767
        $currentUserPlugin = $this->plugin('currentUserPlugin');
768
        $currentUser = $currentUserPlugin->getUser();
769
        $currentCompany = $currentUserPlugin->getCompany();
770
 
771
        $request = $this->getRequest();
772
        if($request->isPost()) {
773
 
774
 
775
            $id =  $this->params()->fromRoute('id');
776
 
777
            $feedMapper = FeedMapper::getInstance($this->adapter);
778
            $feed = $feedMapper->fetchOneByUuid($id);
779
            if(!$feed) {
780
                $response = [
781
                    'success' => false,
782
                    'data' => 'ERROR_POST_NOT_FOUND'
783
                ];
784
                return new JsonModel($response);
785
            }
786
 
787
            if($feed->company_id != $currentCompany->id) {
788
                $response = [
789
                    'success' => false,
790
                    'data' => 'ERROR_UNAUTHORIZED'
791
                ];
792
                return new JsonModel($response);
793
            }
794
 
795
            $feedMapper = FeedMapper::getInstance($this->adapter);
796
            $feed->status = Feed::STATUS_DELETED;
797
            if($feedMapper->update($feed)) {
798
                $response = [
799
                    'success' => true,
800
                    'data' => 'LABEL_FEED_WAS_DELETED'
801
                ];
802
 
803
            } else {
804
                $response = [
805
                    'success' => false,
806
                    'data' => $feedMapper->getError()
807
                ];
808
            }
809
 
810
 
811
            return new JsonModel($response);
812
 
813
        } else {
814
            $response = [
815
                'success' => false,
816
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
817
            ];
818
        }
819
 
820
        return new JsonModel($response);
821
 
822
    }
13414 eleazar 823
 
13424 eleazar 824
    private function normalizeString ($str = ''){
825
        $basename  = substr($str, 0, strrpos($str, '.'));
826
        $basename  = str_replace('.', '-', $basename);
827
 
828
        $extension  = substr($str, strrpos($str, '.'));
829
 
830
        $str = $basename . $extension;
831
 
832
        $str = strip_tags($str);
833
        $str = preg_replace('/[\r\n\t ]+/', ' ', $str);
834
        $str = preg_replace('/[\"\*\/\:\<\>\?\'\|\,]+/', ' ', $str);
835
        $str = strtolower($str);
836
        $str = html_entity_decode( $str, ENT_QUOTES, "utf-8" );
837
        $str = htmlentities($str, ENT_QUOTES, "utf-8");
838
        $str = preg_replace("/(&)([a-z])([a-z]+;)/i", '$2', $str);
839
        $str = str_replace(' ', '-', $str);
840
        $str = rawurlencode($str);
841
        $str = str_replace('%', '-', $str);
842
        return trim(strtolower($str));
843
    }
844
 
13414 eleazar 845
    public function aprovedAction() {
846
        $currentUserPlugin = $this->plugin('currentUserPlugin');
847
        $currentUser = $currentUserPlugin->getUser();
848
        $currentCompany = $currentUserPlugin->getCompany();
849
 
850
        $request = $this->getRequest();
851
        if($request->isPost()) {
13423 eleazar 852
 
13414 eleazar 853
            $id =  $this->params()->fromRoute('id');
854
 
855
            $feedMapper = FeedMapper::getInstance($this->adapter);
856
            $feed = $feedMapper->fetchOneByUuid($id);
857
            if(!$feed) {
858
                $response = [
859
                    'success' => false,
860
                    'data' => 'ERROR_POST_NOT_FOUND'
861
                ];
862
                return new JsonModel($response);
863
            }
864
 
865
            if($feed->company_id != $currentCompany->id) {
866
                $response = [
867
                    'success' => false,
868
                    'data' => 'ERROR_UNAUTHORIZED'
869
                ];
870
                return new JsonModel($response);
871
            }
872
 
873
            $feedMapper = FeedMapper::getInstance($this->adapter);
874
            $feed->status = Feed::STATUS_PUBLISHED;
875
            if($feedMapper->update($feed)) {
876
                $response = [
877
                    'success' => true,
13416 eleazar 878
                    'data' => 'LABEL_FEED_WAS_ADDED'
13414 eleazar 879
                ];
880
 
881
            } else {
882
                $response = [
883
                    'success' => false,
884
                    'data' => $feedMapper->getError()
885
                ];
886
            }
887
 
888
 
889
            return new JsonModel($response);
890
 
891
        } else {
892
            $response = [
893
                'success' => false,
894
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
895
            ];
896
        }
897
 
898
        return new JsonModel($response);
899
 
900
    }
14411 kerby 901
 
902
    public function editAction()
903
    {
904
        $currentUserPlugin  = $this->plugin('currentUserPlugin');
905
        $currentCompany     = $currentUserPlugin->getCompany();
906
        $currentUser        = $currentUserPlugin->getUser();
907
        $request    = $this->getRequest();
908
        try {
14441 kerby 909
 
910
            $uuid = $this->params()->fromRoute('id');
911
            if (!$uuid) {
912
                $data = [
913
                    'success' => false,
914
                    'data' => 'ERROR_INVALID_PARAMETER'
915
                ];
916
 
917
                return new JsonModel($data);
918
            }
919
 
920
            $feedMapper = FeedMapper::getInstance($this->adapter);
921
 
922
            $feed = $feedMapper->fetchOneByUuid($uuid);
923
 
924
 
925
            if (!$feed) {
926
                $data = [
927
                    'success' => false,
928
                    'data' => 'ERROR_RECORD_NOT_FOUND'
929
                ];
930
 
931
                return new JsonModel($data);
932
            }
933
 
934
            if ($currentCompany) {
935
                if ($feed->company_id != $currentCompany->id) {
936
                    $data = [
937
                        'success' => false,
938
                        'data' => 'ERROR_UNAUTHORIZED'
939
                    ];
940
 
941
                    return new JsonModel($data);
942
                }
943
            } else {
944
                if ($feed->company_id) {
945
                    $data = [
946
                        'success' => false,
947
                        'data' => 'ERROR_UNAUTHORIZED'
948
                    ];
949
 
950
                    return new JsonModel($data);
951
                }
952
            }
953
 
14411 kerby 954
            if ($request->isPost()) {
955
 
14441 kerby 956
 
957
                $form = new CreateFeedForm($this->adapter);
14411 kerby 958
                $dataPost = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());
14499 kerby 959
                // $categoriesId = $dataPost['category_id'] ?? [];
960
                $categoryUuid = $dataPost['category_dc'];
14411 kerby 961
                $dataPost['category_id'] = null;
962
                $form->setData($dataPost);
14509 kerby 963
                $feedOld = $feed;
14411 kerby 964
                if ($form->isValid()) {
965
 
966
                    $dataPost = (array) $form->getData();
14441 kerby 967
 
14411 kerby 968
                    $hydrator = new ObjectPropertyHydrator();
14441 kerby 969
 
14411 kerby 970
                    $hydrator->hydrate($dataPost, $feed);
971
 
14529 kerby 972
                    $filesPrev = $this->getRequest()->getFiles()->toArray();
973
 
974
                    if (isset($filesPrev['doc_edit']) && empty($filesPrev['doc_edit']['error'])) {
975
                        $files = $filesPrev['doc_edit'];
14530 kerby 976
                    }
14531 kerby 977
                    if (isset($filesPrev['video_edit']) && empty($filesPrev['video_edit']['error'])) {
978
                        $files = $filesPrev['video_edit'];
14529 kerby 979
                    }
980
 
14411 kerby 981
                    $file_type = '';
14529 kerby 982
                    if (isset($files) && empty($files['error'])) {
983
                        $feed_tmp_filename  = $files['tmp_name'];
984
                        $feed_filename      = $this->normalizeString($files['name']);
14411 kerby 985
 
986
                        $mime_type = mime_content_type($feed_tmp_filename);
987
                        if ($mime_type == 'image/jpg' || $mime_type == 'image/jpeg' || $mime_type == 'image/png') {
988
                            $file_type = Feed::FILE_TYPE_IMAGE;
989
                        } else if ($mime_type == 'video/webm' || $mime_type == 'video/mpeg' || $mime_type == 'video/mpg' || $mime_type == 'video/mp4') {
990
                            $file_type = Feed::FILE_TYPE_VIDEO;
991
                        } else if ($mime_type == 'application/pdf') {
992
                            $file_type = Feed::FILE_TYPE_DOCUMENT;
993
                        }
994
                    }
995
 
996
                    $feedMapper = FeedMapper::getInstance($this->adapter);
14499 kerby 997
                    $feed = $feedMapper->fetchOne($feed->id);
14411 kerby 998
 
14499 kerby 999
                    $categoriesMapper = TopicMapper::getInstance($this->adapter);
1000
                    $category = $categoriesMapper->fetchOneByUuidOrTitle($categoryUuid);
14509 kerby 1001
 
14499 kerby 1002
                    $feed->topic_id = $category->id;
14509 kerby 1003
 
14441 kerby 1004
                    if ($feedMapper->update($feed)) {
14411 kerby 1005
 
1006
                        if ($file_type == Feed::FILE_TYPE_DOCUMENT) {
1007
                            try {
14509 kerby 1008
 
14411 kerby 1009
                                $target_path = $this->config['leaderslinked.fullpath.feed'] . $feed->uuid;
14509 kerby 1010
 
1011
 
14411 kerby 1012
                                if (!file_exists($target_path)) {
1013
                                    mkdir($target_path, 0755);
1014
                                }
1015
 
14510 kerby 1016
                                Functions::deleteFilename($target_path, $feed->file_name);
14509 kerby 1017
 
14411 kerby 1018
                                $full_filename = $target_path  . DIRECTORY_SEPARATOR . $feed_filename;
1019
                                $result = move_uploaded_file($feed_tmp_filename, $full_filename);
1020
                                if ($result) {
1021
 
1022
                                    $feed->file_type = $file_type;
1023
                                    $feed->file_name = basename($feed_filename);
1024
                                    $feedMapper->update($feed);
1025
                                } else {
1026
                                    error_log('no se pudo mover o renombrar el documento : ' . $feed_tmp_filename . ' al directorio : ' . $full_filename);
1027
                                }
1028
                            } catch (\Throwable $e) {
1029
                                error_log($e->getTraceAsString());
1030
                            }
1031
                        }
1032
                        if ($file_type == Feed::FILE_TYPE_IMAGE) {
1033
                            try {
1034
                                $target_path = $this->config['leaderslinked.fullpath.feed'] . $feed->uuid;
1035
                                if (!file_exists($target_path)) {
1036
                                    mkdir($target_path, 0755);
1037
                                }
1038
 
14510 kerby 1039
                                Functions::deleteFilename($target_path, $feed->file_name);
14509 kerby 1040
 
14411 kerby 1041
                                list($target_width, $target_height) = explode('x', $this->config['leaderslinked.image_sizes.feed_image_size']);
1042
 
1043
                                $feed_filename = substr($feed_filename, 0, strrpos($feed_filename, '.'))  . '.png';
1044
                                $crop_to_dimensions = false;
1045
                                if (Image::uploadImage($feed_tmp_filename, $target_path, $feed_filename, $target_width, $target_height, $crop_to_dimensions)) {
1046
                                    $feed->file_type = $file_type;
1047
                                    $feed->file_name = basename($feed_filename);
1048
                                    $feedMapper->update($feed);
1049
                                }
1050
                            } catch (\Throwable $e) {
1051
                                error_log($e->getTraceAsString());
1052
                            }
1053
                        }
1054
                        if ($file_type == Feed::FILE_TYPE_VIDEO) {
1055
                            try {
1056
                                $target_path = $this->config['leaderslinked.fullpath.feed'] . $feed->uuid;
1057
                                if (!file_exists($target_path)) {
1058
                                    mkdir($target_path, 0755);
1059
                                }
14510 kerby 1060
                                Functions::deleteFilename($target_path, $feed->file_name);
14411 kerby 1061
                                $full_filename = $target_path  . DIRECTORY_SEPARATOR . $feed_filename;
1062
 
1063
                                $result = move_uploaded_file($feed_tmp_filename, $full_filename);
1064
                                if ($result) {
1065
 
1066
                                    $size = $this->config['leaderslinked.image_sizes.feed_image_size'];
1067
                                    $getFromSecound = 2;
1068
 
1069
                                    //extracción del cover
1070
                                    $generateFileName = substr($feed_filename, 0, strrpos($feed_filename, '.'));
1071
                                    $generateFile =  $target_path  . DIRECTORY_SEPARATOR . $generateFileName .  '.png';
1072
                                    $cmd            = "/usr/bin/ffmpeg -i $full_filename -an -ss $getFromSecound -s $size $generateFile";
1073
                                    exec($cmd);
1074
 
1075
 
1076
                                    $feed->file_type = $file_type;
1077
                                    $feed->file_name = basename($feed_filename);
1078
                                    $feed->file_image_preview = basename($generateFile);
1079
                                    $feedMapper->update($feed);
1080
 
1081
                                    $videoConvert = new VideoConvert();
1082
                                    $videoConvert->filename = $full_filename;
1083
                                    $videoConvert->type = VideoConvert::TYPE_FEED;
1084
 
1085
                                    $videoConvertMapper = VideoConvertMapper::getInstance($this->adapter);
1086
                                    $videoConvertMapper->insert($videoConvert);
1087
                                } else {
1088
                                    error_log('no se pudo mover o renombrar el documento : ' . $feed_tmp_filename . ' al directorio : ' . $full_filename);
1089
                                }
1090
                            } catch (\Throwable $e) {
1091
                                error_log($e->getTraceAsString());
1092
                            }
1093
                        }
1094
 
14510 kerby 1095
 
14411 kerby 1096
                        $response = [
1097
                            'success'   => true,
1098
                            'data'   => 'success'
1099
                        ];
1100
                    } else {
1101
                        $messages = [];
1102
                        $form_messages = (array) $form->getMessages();
1103
                        foreach ($form_messages  as $fieldname => $field_messages) {
1104
                            $messages[$fieldname] = array_values($field_messages);
1105
                        }
14509 kerby 1106
                        $response = [
1107
                            'success' => false,
1108
                            'data' => $messages
1109
                        ];
14411 kerby 1110
                    }
1111
                } else {
1112
                    $response = [
1113
                        'success' => false,
1114
                        'data' => 'ERROR_METHOD_NOT_ALLOWED'
1115
                    ];
1116
                }
1117
 
1118
                return new JsonModel($response);
1119
            }
1120
        } catch (\Throwable $e) {
1121
            $e->getMessage();
1122
            return new JsonModel([
1123
                'success' => false,
1124
                'data' => $e
1125
            ]);
1126
        }
1127
    }
14459 kerby 1128
 
1129
    public function filterAction()
1130
    {
1131
        $request = $this->getRequest();
1132
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1133
 
1134
        if ($request->isPost()) {
1135
 
1136
            $dataPost = $request->getPost()->toArray();
1137
            $items = [];
1138
            $feedMapper = FeedMapper::getInstance($this->adapter);
1139
            $paginator = $feedMapper->fetchAllByDevelopAndCategoryId($dataPost['category_id']);
1140
 
1141
            foreach ($paginator as $record) {
1142
                $topicMapper = TopicMapper::getInstance($this->adapter);
1143
                $topic = $topicMapper->fetchOne($record->topic_id);
1144
                $topic_title =  ($topic) ? $topic->title : '';
1145
                $preview = ($record->file_image_preview != null && $record->file_image_preview != '') ? $this->url()->fromRoute('storage', ['code' => $record->uuid, 'type' => 'feed', 'filename' => $record->file_image_preview]) : null;
1146
                $item = [
1147
                    'id' => $record->id,
1148
                    'uuid' => $record->uuid,
1149
                    'title' => $record->title,
1150
                    'topic' => $topic_title,
1151
                    'added_on' => $record->added_on,
1152
                    'description' => $record->description,
1153
                    'file' => $record->file_type ? $record->file_type : '',
1154
                    'link_media' => $record->link_media ? $record->link_media : '',
1155
                    'link_name' => $record->link_name,
1156
                    'file_name' => $record->file_name ? $record->file_name : '',
1157
                    'link_file' => $this->url()->fromRoute('storage', ['code' => $record->uuid, 'type' => 'feed', 'filename' => $record->file_name]),
1158
                    'status' => $record->status,
1159
                    'preview' => $preview,
1160
                    'actions' => [
1161
                        'link_edit' => $this->url()->fromRoute('development-and-content/waiting/edit', ['id' => $record->uuid]),
1162
                        'link_get' => $this->url()->fromRoute('development-and-content/waiting/getContent', ['id' => $record->uuid]),
1163
                        'link_aproved' => $this->url()->fromRoute('development-and-content/waiting/aproved', ['id' => $record->uuid]),
1164
                        'link_delete' => $this->url()->fromRoute('development-and-content/waiting/delete', ['id' => $record->uuid]),
1165
                        'link_categories' => $this->url()->fromRoute('development-and-content/waiting/categories', ['id' => $record->uuid]),
1166
                    ]
1167
                ];
1168
 
1169
                array_push($items, $item);
1170
            }
1171
 
1172
            return new JsonModel([
1173
                'success' => true,
1174
                'data' => [
1175
                    'items' => $items,
1176
                ]
1177
            ]);
1178
 
1179
        } else {
1180
            return new JsonModel([
1181
                'success' => false,
1182
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
1183
            ]);
1184
        }
1185
 
1186
    }
13308 eleazar 1187
}