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
                    }
14695 kerby 639
                    //preview
14717 kerby 640
                    $fileImg = $this->params()->fromFiles('img_add');
14695 kerby 641
                    if (isset($fileImg) && empty($fileImg['error'])) {
13308 eleazar 642
 
14695 kerby 643
                        $img_tmp_filename  = $fileImg['tmp_name'];
644
                        $img_filename  = $this->normalizeString($fileImg['name']);
645
                    } else {
646
                        $img_tmp_filename = null;
647
                        $img_filename = null;
648
                    }
649
 
14411 kerby 650
                    $feedMapper = FeedMapper::getInstance($this->adapter);
13308 eleazar 651
 
14411 kerby 652
                    if($feedMapper->insert($feed)) {
653
                        $feed = $feedMapper->fetchOne($feed->id);
654
                        $feedMapper->update($feed);
655
                            if( $file_type == Feed::FILE_TYPE_DOCUMENT) {
656
                                try {
657
                                    $target_path = $this->config['leaderslinked.fullpath.feed'] . $feed->uuid;
658
                                    if(!file_exists($target_path)) {
659
                                        mkdir($target_path, 0755);
660
                                    }
13308 eleazar 661
 
14411 kerby 662
                                    $full_filename = $target_path  . DIRECTORY_SEPARATOR .$feed_filename;
663
                                    $result = move_uploaded_file($feed_tmp_filename , $full_filename);
664
                                    if($result) {
665
 
666
                                        $feed->file_type = $file_type;
667
                                        $feed->file_name = basename($feed_filename);
668
                                        $feedMapper->update($feed);
669
                                    } else {
670
                                        error_log('no se pudo mover o renombrar el documento : ' . $feed_tmp_filename . ' al directorio : ' . $full_filename );
671
                                    }
672
                                } catch(\Throwable $e) {
673
                                    error_log($e->getTraceAsString());
13308 eleazar 674
                                }
675
                            }
14411 kerby 676
                            if( $file_type == Feed::FILE_TYPE_IMAGE) {
677
                                try {
678
                                    $target_path = $this->config['leaderslinked.fullpath.feed'] . $feed->uuid;
679
                                    if(!file_exists($target_path)) {
680
                                        mkdir($target_path, 0755);
681
                                    }
682
 
683
                                    list($target_width, $target_height) = explode('x', $this->config['leaderslinked.image_sizes.feed_image_size']);
684
 
685
                                    $feed_filename = substr($feed_filename, 0, strrpos($feed_filename, '.'))  . '.png';
686
                                    $crop_to_dimensions = false;
687
                                    if(Image::uploadImage($feed_tmp_filename, $target_path, $feed_filename, $target_width, $target_height, $crop_to_dimensions )) {
688
                                        $feed->file_type = $file_type;
689
                                        $feed->file_name = basename($feed_filename);
690
                                        $feedMapper->update($feed);
691
                                    }
692
                                } catch(\Throwable $e) {
693
                                    error_log($e->getTraceAsString());
13308 eleazar 694
                                }
695
                            }
14411 kerby 696
                            if( $file_type == Feed::FILE_TYPE_VIDEO) {
697
                                try {
698
                                    $target_path = $this->config['leaderslinked.fullpath.feed'] . $feed->uuid;
699
                                    if(!file_exists($target_path)) {
700
                                        mkdir($target_path, 0755);
701
                                    }
13308 eleazar 702
 
14411 kerby 703
                                    $full_filename = $target_path  . DIRECTORY_SEPARATOR . $feed_filename;
13308 eleazar 704
 
14411 kerby 705
                                    $result = move_uploaded_file($feed_tmp_filename , $full_filename);
706
                                    if($result) {
707
 
708
                                        $size = $this->config['leaderslinked.image_sizes.feed_image_size'];
709
                                        $getFromSecound = 2;
710
 
711
                                        //extracción del cover
712
                                        $generateFileName = substr($feed_filename, 0, strrpos($feed_filename, '.'));
713
                                        $generateFile =  $target_path  . DIRECTORY_SEPARATOR . $generateFileName .  '.png';
714
                                        $cmd            = "/usr/bin/ffmpeg -i $full_filename -an -ss $getFromSecound -s $size $generateFile";
715
                                        exec($cmd);
716
 
717
 
718
                                        $feed->file_type = $file_type;
719
                                        $feed->file_name = basename($feed_filename);
720
                                        $feed->file_image_preview = basename($generateFile);
721
                                        $feedMapper->update($feed);
722
 
723
                                        $videoConvert = new VideoConvert();
724
                                        $videoConvert->filename = $full_filename;
725
                                        $videoConvert->type = VideoConvert::TYPE_FEED;
726
 
727
                                        $videoConvertMapper = VideoConvertMapper::getInstance($this->adapter);
728
                                        $videoConvertMapper->insert($videoConvert);
729
                                    } else {
730
                                        error_log('no se pudo mover o renombrar el documento : ' . $feed_tmp_filename . ' al directorio : ' . $full_filename );
731
                                    }
732
                                } catch(\Throwable $e) {
733
                                    error_log($e->getTraceAsString());
13308 eleazar 734
                                }
735
                            }
14695 kerby 736
 
737
                            if ($file_type != Feed::FILE_TYPE_VIDEO && !empty($img_tmp_filename) && !empty($img_filename)) {
738
 
739
                                try {
740
                                    $target_path = $this->config['leaderslinked.fullpath.feed'] . $feed->uuid;
741
                                    if (!file_exists($target_path)) {
742
                                        mkdir($target_path, 0755);
743
                                    }
744
 
745
                                    Functions::deleteFilename($target_path, $feed->file_image_preview);
746
 
747
                                    list($target_width, $target_height) = explode('x', $this->config['leaderslinked.image_sizes.feed_image_size']);
748
 
749
                                    $img_filename = substr($img_filename, 0, strrpos($img_filename, '.'))  . '.png';
750
 
751
 
752
                                    if (Functions::uploadImage($img_tmp_filename, $target_path, $img_filename, $target_width, $target_height)) {
753
                                        $feed->file_image_preview = basename($img_filename);
754
                                        $feedMapper->update($feed);
755
                                    }
756
                                } catch (\Throwable $e) {
757
                                    error_log($e->getTraceAsString());
758
                                }
759
                            }
14411 kerby 760
 
761
 
762
                            $response = [
763
                                'success'   => true,
764
                                'data'   => 'success'
765
                            ];
766
                    } else {
767
                        $messages = [];
768
                        $form_messages = (array) $form->getMessages();
769
                        foreach($form_messages  as $fieldname => $field_messages)
770
                        {
771
                            $messages[$fieldname] = array_values($field_messages);
13308 eleazar 772
                        }
773
 
774
                    }
775
 
14411 kerby 776
                } else {
777
                    $response = [
778
                        'success' => false,
779
                        'data' => 'ERROR_METHOD_NOT_ALLOWED'
780
                    ];
13308 eleazar 781
                }
782
 
14411 kerby 783
                return new JsonModel($response);
13308 eleazar 784
            }
785
 
14411 kerby 786
        } catch (\Throwable $e) {
787
            $e->getMessage();
788
            return new JsonModel([
789
                'success' => false,
790
                'data' => $e
791
            ]);
13308 eleazar 792
        }
793
    }
794
 
795
    public function deleteAction() {
796
        $currentUserPlugin = $this->plugin('currentUserPlugin');
797
        $currentUser = $currentUserPlugin->getUser();
798
        $currentCompany = $currentUserPlugin->getCompany();
799
 
800
        $request = $this->getRequest();
801
        if($request->isPost()) {
802
 
803
 
804
            $id =  $this->params()->fromRoute('id');
805
 
806
            $feedMapper = FeedMapper::getInstance($this->adapter);
807
            $feed = $feedMapper->fetchOneByUuid($id);
808
            if(!$feed) {
809
                $response = [
810
                    'success' => false,
811
                    'data' => 'ERROR_POST_NOT_FOUND'
812
                ];
813
                return new JsonModel($response);
814
            }
815
 
816
            if($feed->company_id != $currentCompany->id) {
817
                $response = [
818
                    'success' => false,
819
                    'data' => 'ERROR_UNAUTHORIZED'
820
                ];
821
                return new JsonModel($response);
822
            }
823
 
824
            $feedMapper = FeedMapper::getInstance($this->adapter);
825
            $feed->status = Feed::STATUS_DELETED;
826
            if($feedMapper->update($feed)) {
14718 kerby 827
 
828
                $target_path = $this->config['leaderslinked.fullpath.feed'] . $feed->uuid;
829
 
830
                Functions::deleteFilename($target_path, $feed->file_image_preview);
831
                Functions::deleteFilename($target_path, $feed->file_name);
832
 
13308 eleazar 833
                $response = [
834
                    'success' => true,
835
                    'data' => 'LABEL_FEED_WAS_DELETED'
836
                ];
837
 
838
            } else {
839
                $response = [
840
                    'success' => false,
841
                    'data' => $feedMapper->getError()
842
                ];
843
            }
844
 
845
 
846
            return new JsonModel($response);
847
 
848
        } else {
849
            $response = [
850
                'success' => false,
851
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
852
            ];
853
        }
854
 
855
        return new JsonModel($response);
856
 
857
    }
13414 eleazar 858
 
13424 eleazar 859
    private function normalizeString ($str = ''){
860
        $basename  = substr($str, 0, strrpos($str, '.'));
861
        $basename  = str_replace('.', '-', $basename);
862
 
863
        $extension  = substr($str, strrpos($str, '.'));
864
 
865
        $str = $basename . $extension;
866
 
867
        $str = strip_tags($str);
868
        $str = preg_replace('/[\r\n\t ]+/', ' ', $str);
869
        $str = preg_replace('/[\"\*\/\:\<\>\?\'\|\,]+/', ' ', $str);
870
        $str = strtolower($str);
871
        $str = html_entity_decode( $str, ENT_QUOTES, "utf-8" );
872
        $str = htmlentities($str, ENT_QUOTES, "utf-8");
873
        $str = preg_replace("/(&)([a-z])([a-z]+;)/i", '$2', $str);
874
        $str = str_replace(' ', '-', $str);
875
        $str = rawurlencode($str);
876
        $str = str_replace('%', '-', $str);
877
        return trim(strtolower($str));
878
    }
879
 
13414 eleazar 880
    public function aprovedAction() {
881
        $currentUserPlugin = $this->plugin('currentUserPlugin');
882
        $currentUser = $currentUserPlugin->getUser();
883
        $currentCompany = $currentUserPlugin->getCompany();
884
 
885
        $request = $this->getRequest();
886
        if($request->isPost()) {
13423 eleazar 887
 
13414 eleazar 888
            $id =  $this->params()->fromRoute('id');
889
 
890
            $feedMapper = FeedMapper::getInstance($this->adapter);
891
            $feed = $feedMapper->fetchOneByUuid($id);
892
            if(!$feed) {
893
                $response = [
894
                    'success' => false,
895
                    'data' => 'ERROR_POST_NOT_FOUND'
896
                ];
897
                return new JsonModel($response);
898
            }
899
 
900
            if($feed->company_id != $currentCompany->id) {
901
                $response = [
902
                    'success' => false,
903
                    'data' => 'ERROR_UNAUTHORIZED'
904
                ];
905
                return new JsonModel($response);
906
            }
907
 
908
            $feedMapper = FeedMapper::getInstance($this->adapter);
909
            $feed->status = Feed::STATUS_PUBLISHED;
910
            if($feedMapper->update($feed)) {
911
                $response = [
912
                    'success' => true,
13416 eleazar 913
                    'data' => 'LABEL_FEED_WAS_ADDED'
13414 eleazar 914
                ];
915
 
916
            } else {
917
                $response = [
918
                    'success' => false,
919
                    'data' => $feedMapper->getError()
920
                ];
921
            }
922
 
923
 
924
            return new JsonModel($response);
925
 
926
        } else {
927
            $response = [
928
                'success' => false,
929
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
930
            ];
931
        }
932
 
933
        return new JsonModel($response);
934
 
935
    }
14411 kerby 936
 
937
    public function editAction()
938
    {
939
        $currentUserPlugin  = $this->plugin('currentUserPlugin');
940
        $currentCompany     = $currentUserPlugin->getCompany();
941
        $currentUser        = $currentUserPlugin->getUser();
942
        $request    = $this->getRequest();
943
        try {
14441 kerby 944
 
945
            $uuid = $this->params()->fromRoute('id');
946
            if (!$uuid) {
947
                $data = [
948
                    'success' => false,
949
                    'data' => 'ERROR_INVALID_PARAMETER'
950
                ];
951
 
952
                return new JsonModel($data);
953
            }
954
 
955
            $feedMapper = FeedMapper::getInstance($this->adapter);
956
 
957
            $feed = $feedMapper->fetchOneByUuid($uuid);
958
 
959
 
960
            if (!$feed) {
961
                $data = [
962
                    'success' => false,
963
                    'data' => 'ERROR_RECORD_NOT_FOUND'
964
                ];
965
 
966
                return new JsonModel($data);
967
            }
968
 
969
            if ($currentCompany) {
970
                if ($feed->company_id != $currentCompany->id) {
971
                    $data = [
972
                        'success' => false,
973
                        'data' => 'ERROR_UNAUTHORIZED'
974
                    ];
975
 
976
                    return new JsonModel($data);
977
                }
978
            } else {
979
                if ($feed->company_id) {
980
                    $data = [
981
                        'success' => false,
982
                        'data' => 'ERROR_UNAUTHORIZED'
983
                    ];
984
 
985
                    return new JsonModel($data);
986
                }
987
            }
988
 
14411 kerby 989
            if ($request->isPost()) {
990
 
14441 kerby 991
 
992
                $form = new CreateFeedForm($this->adapter);
14411 kerby 993
                $dataPost = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());
14499 kerby 994
                // $categoriesId = $dataPost['category_id'] ?? [];
995
                $categoryUuid = $dataPost['category_dc'];
14411 kerby 996
                $dataPost['category_id'] = null;
14734 kerby 997
                // print_r($dataPost);
14411 kerby 998
                $form->setData($dataPost);
14729 kerby 999
 
14411 kerby 1000
                if ($form->isValid()) {
1001
                    $dataPost = (array) $form->getData();
1002
                    $hydrator = new ObjectPropertyHydrator();
1003
                    $hydrator->hydrate($dataPost, $feed);
14724 kerby 1004
 
1005
                    $files = null;
14733 kerby 1006
 
14723 kerby 1007
                    if ( isset($dataPost['doc_edit']) && empty($dataPost['doc_edit']['error'])) {
14667 efrain 1008
                        $files = $dataPost['doc_edit'];
14530 kerby 1009
                    }
14723 kerby 1010
                    if ( isset($dataPost['video_edit']) && empty($dataPost['video_edit']['error'])) {
14667 efrain 1011
                        $files =$dataPost['video_edit'];
14529 kerby 1012
                    }
1013
 
14723 kerby 1014
                    $file_type = '';
14725 kerby 1015
                    if (isset($files) && empty($files['error'])) {
14722 kerby 1016
                        $feed_tmp_filename  = $files['tmp_name'];
1017
                        $feed_filename      = $this->normalizeString($files['name']);
14411 kerby 1018
 
14723 kerby 1019
                        $mime_type = mime_content_type($feed_tmp_filename);
1020
                        if ($mime_type == 'image/jpg' || $mime_type == 'image/jpeg' || $mime_type == 'image/png') {
1021
                            $file_type = Feed::FILE_TYPE_IMAGE;
1022
                        } else if ($mime_type == 'video/webm' || $mime_type == 'video/mpeg' || $mime_type == 'video/mpg' || $mime_type == 'video/mp4') {
1023
                            $file_type = Feed::FILE_TYPE_VIDEO;
1024
                        } else if ($mime_type == 'application/pdf') {
1025
                            $file_type = Feed::FILE_TYPE_DOCUMENT;
1026
                        }
14722 kerby 1027
                    }
14650 kerby 1028
                    //preview
14669 efrain 1029
                    $fileImg = $this->params()->fromFiles('img_edit');
1030
                    if (isset($fileImg) && empty($fileImg['error'])) {
1031
 
14650 kerby 1032
                        $img_tmp_filename  = $fileImg['tmp_name'];
14665 kerby 1033
                        $img_filename  = $this->normalizeString($fileImg['name']);
14671 efrain 1034
                    } else {
1035
                        $img_tmp_filename = null;
1036
                        $img_filename = null;
14650 kerby 1037
                    }
1038
 
14411 kerby 1039
                    $feedMapper = FeedMapper::getInstance($this->adapter);
14499 kerby 1040
                    $feed = $feedMapper->fetchOne($feed->id);
14411 kerby 1041
 
14499 kerby 1042
                    $categoriesMapper = TopicMapper::getInstance($this->adapter);
1043
                    $category = $categoriesMapper->fetchOneByUuidOrTitle($categoryUuid);
14509 kerby 1044
 
14499 kerby 1045
                    $feed->topic_id = $category->id;
14509 kerby 1046
 
14441 kerby 1047
                    if ($feedMapper->update($feed)) {
14411 kerby 1048
 
1049
                        if ($file_type == Feed::FILE_TYPE_DOCUMENT) {
1050
                            try {
14509 kerby 1051
 
14411 kerby 1052
                                $target_path = $this->config['leaderslinked.fullpath.feed'] . $feed->uuid;
14509 kerby 1053
 
1054
 
14411 kerby 1055
                                if (!file_exists($target_path)) {
1056
                                    mkdir($target_path, 0755);
1057
                                }
1058
 
14510 kerby 1059
                                Functions::deleteFilename($target_path, $feed->file_name);
14509 kerby 1060
 
14411 kerby 1061
                                $full_filename = $target_path  . DIRECTORY_SEPARATOR . $feed_filename;
1062
                                $result = move_uploaded_file($feed_tmp_filename, $full_filename);
1063
                                if ($result) {
1064
 
1065
                                    $feed->file_type = $file_type;
1066
                                    $feed->file_name = basename($feed_filename);
1067
                                    $feedMapper->update($feed);
1068
                                } else {
1069
                                    error_log('no se pudo mover o renombrar el documento : ' . $feed_tmp_filename . ' al directorio : ' . $full_filename);
1070
                                }
1071
                            } catch (\Throwable $e) {
1072
                                error_log($e->getTraceAsString());
1073
                            }
1074
                        }
1075
                        if ($file_type == Feed::FILE_TYPE_IMAGE) {
1076
                            try {
1077
                                $target_path = $this->config['leaderslinked.fullpath.feed'] . $feed->uuid;
1078
                                if (!file_exists($target_path)) {
1079
                                    mkdir($target_path, 0755);
1080
                                }
1081
 
14510 kerby 1082
                                Functions::deleteFilename($target_path, $feed->file_name);
14509 kerby 1083
 
14411 kerby 1084
                                list($target_width, $target_height) = explode('x', $this->config['leaderslinked.image_sizes.feed_image_size']);
1085
 
1086
                                $feed_filename = substr($feed_filename, 0, strrpos($feed_filename, '.'))  . '.png';
1087
                                $crop_to_dimensions = false;
1088
                                if (Image::uploadImage($feed_tmp_filename, $target_path, $feed_filename, $target_width, $target_height, $crop_to_dimensions)) {
1089
                                    $feed->file_type = $file_type;
1090
                                    $feed->file_name = basename($feed_filename);
1091
                                    $feedMapper->update($feed);
1092
                                }
1093
                            } catch (\Throwable $e) {
1094
                                error_log($e->getTraceAsString());
1095
                            }
1096
                        }
1097
                        if ($file_type == Feed::FILE_TYPE_VIDEO) {
1098
                            try {
1099
                                $target_path = $this->config['leaderslinked.fullpath.feed'] . $feed->uuid;
1100
                                if (!file_exists($target_path)) {
1101
                                    mkdir($target_path, 0755);
1102
                                }
14720 kerby 1103
 
14735 kerby 1104
 
14510 kerby 1105
                                Functions::deleteFilename($target_path, $feed->file_name);
14650 kerby 1106
 
1107
                                Functions::deleteFilename($target_path, $feed->file_image_preview);
1108
 
14411 kerby 1109
                                $full_filename = $target_path  . DIRECTORY_SEPARATOR . $feed_filename;
1110
 
1111
                                $result = move_uploaded_file($feed_tmp_filename, $full_filename);
1112
                                if ($result) {
1113
 
1114
                                    $size = $this->config['leaderslinked.image_sizes.feed_image_size'];
1115
                                    $getFromSecound = 2;
1116
 
1117
                                    //extracción del cover
1118
                                    $generateFileName = substr($feed_filename, 0, strrpos($feed_filename, '.'));
1119
                                    $generateFile =  $target_path  . DIRECTORY_SEPARATOR . $generateFileName .  '.png';
1120
                                    $cmd            = "/usr/bin/ffmpeg -i $full_filename -an -ss $getFromSecound -s $size $generateFile";
1121
                                    exec($cmd);
1122
 
1123
 
1124
                                    $feed->file_type = $file_type;
1125
                                    $feed->file_name = basename($feed_filename);
1126
                                    $feed->file_image_preview = basename($generateFile);
1127
                                    $feedMapper->update($feed);
1128
 
1129
                                    $videoConvert = new VideoConvert();
1130
                                    $videoConvert->filename = $full_filename;
1131
                                    $videoConvert->type = VideoConvert::TYPE_FEED;
1132
 
1133
                                    $videoConvertMapper = VideoConvertMapper::getInstance($this->adapter);
1134
                                    $videoConvertMapper->insert($videoConvert);
1135
                                } else {
1136
                                    error_log('no se pudo mover o renombrar el documento : ' . $feed_tmp_filename . ' al directorio : ' . $full_filename);
1137
                                }
1138
                            } catch (\Throwable $e) {
1139
                                error_log($e->getTraceAsString());
1140
                            }
1141
                        }
14676 efrain 1142
                        if($file_type != Feed::FILE_TYPE_VIDEO && !empty($img_tmp_filename) && !empty($img_filename)) {
14675 efrain 1143
 
14650 kerby 1144
                            try {
1145
                                $target_path = $this->config['leaderslinked.fullpath.feed'] . $feed->uuid;
1146
                                if (!file_exists($target_path)) {
1147
                                    mkdir($target_path, 0755);
1148
                                }
14671 efrain 1149
 
14650 kerby 1150
                                Functions::deleteFilename($target_path, $feed->file_image_preview);
1151
 
1152
                                list($target_width, $target_height) = explode('x', $this->config['leaderslinked.image_sizes.feed_image_size']);
1153
 
1154
                                $img_filename = substr($img_filename, 0, strrpos($img_filename, '.'))  . '.png';
14666 kerby 1155
 
14684 efrain 1156
 
14660 kerby 1157
                                if(Functions::uploadImage($img_tmp_filename, $target_path, $img_filename, $target_width, $target_height)){
1158
                                    $feed->file_image_preview = basename($img_filename);
1159
                                    $feedMapper->update($feed);
14695 kerby 1160
 
14660 kerby 1161
                                }
14650 kerby 1162
                            } catch (\Throwable $e) {
1163
                                error_log($e->getTraceAsString());
14677 efrain 1164
                            }
14684 efrain 1165
                        }
14671 efrain 1166
 
14411 kerby 1167
                        $response = [
1168
                            'success'   => true,
1169
                            'data'   => 'success'
1170
                        ];
1171
                    } else {
1172
                        $messages = [];
1173
                        $form_messages = (array) $form->getMessages();
1174
                        foreach ($form_messages  as $fieldname => $field_messages) {
1175
                            $messages[$fieldname] = array_values($field_messages);
1176
                        }
14509 kerby 1177
                        $response = [
1178
                            'success' => false,
1179
                            'data' => $messages
1180
                        ];
14411 kerby 1181
                    }
1182
                } else {
1183
                    $response = [
1184
                        'success' => false,
1185
                        'data' => 'ERROR_METHOD_NOT_ALLOWED'
1186
                    ];
1187
                }
1188
 
1189
                return new JsonModel($response);
1190
            }
1191
        } catch (\Throwable $e) {
1192
            $e->getMessage();
1193
            return new JsonModel([
1194
                'success' => false,
1195
                'data' => $e
1196
            ]);
1197
        }
1198
    }
14459 kerby 1199
 
1200
    public function filterAction()
1201
    {
1202
        $request = $this->getRequest();
1203
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1204
 
1205
        if ($request->isPost()) {
1206
 
1207
            $dataPost = $request->getPost()->toArray();
1208
            $items = [];
1209
            $feedMapper = FeedMapper::getInstance($this->adapter);
1210
            $paginator = $feedMapper->fetchAllByDevelopAndCategoryId($dataPost['category_id']);
1211
 
1212
            foreach ($paginator as $record) {
1213
                $topicMapper = TopicMapper::getInstance($this->adapter);
1214
                $topic = $topicMapper->fetchOne($record->topic_id);
1215
                $topic_title =  ($topic) ? $topic->title : '';
1216
                $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;
1217
                $item = [
1218
                    'id' => $record->id,
1219
                    'uuid' => $record->uuid,
1220
                    'title' => $record->title,
1221
                    'topic' => $topic_title,
1222
                    'added_on' => $record->added_on,
1223
                    'description' => $record->description,
1224
                    'file' => $record->file_type ? $record->file_type : '',
1225
                    'link_media' => $record->link_media ? $record->link_media : '',
1226
                    'link_name' => $record->link_name,
1227
                    'file_name' => $record->file_name ? $record->file_name : '',
1228
                    'link_file' => $this->url()->fromRoute('storage', ['code' => $record->uuid, 'type' => 'feed', 'filename' => $record->file_name]),
1229
                    'status' => $record->status,
1230
                    'preview' => $preview,
1231
                    'actions' => [
1232
                        'link_edit' => $this->url()->fromRoute('development-and-content/waiting/edit', ['id' => $record->uuid]),
1233
                        'link_get' => $this->url()->fromRoute('development-and-content/waiting/getContent', ['id' => $record->uuid]),
1234
                        'link_aproved' => $this->url()->fromRoute('development-and-content/waiting/aproved', ['id' => $record->uuid]),
1235
                        'link_delete' => $this->url()->fromRoute('development-and-content/waiting/delete', ['id' => $record->uuid]),
1236
                        'link_categories' => $this->url()->fromRoute('development-and-content/waiting/categories', ['id' => $record->uuid]),
1237
                    ]
1238
                ];
1239
 
1240
                array_push($items, $item);
1241
            }
1242
 
1243
            return new JsonModel([
1244
                'success' => true,
1245
                'data' => [
1246
                    'items' => $items,
1247
                ]
1248
            ]);
1249
 
1250
        } else {
1251
            return new JsonModel([
1252
                'success' => false,
1253
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
1254
            ]);
1255
        }
1256
 
1257
    }
13308 eleazar 1258
}