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