Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 17019 | Rev 17278 | Ir a la última revisión | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 17019 Rev 17277
Línea 91... Línea 91...
91
     * {@inheritDoc}
91
     * {@inheritDoc}
92
     * @see \Laminas\Mvc\Controller\AbstractActionController::indexAction()
92
     * @see \Laminas\Mvc\Controller\AbstractActionController::indexAction()
93
     */
93
     */
94
    public function indexAction()
94
    public function indexAction()
95
    {
95
    {
96
        $currentUserPlugin = $this->plugin('currentUserPlugin');
-
 
97
        $currentUser = $currentUserPlugin->getUser();
96
        $request = $this->getRequest();
98
        $currentCompany = $currentUserPlugin->getCompany();
-
 
99
 
-
 
Línea -... Línea 97...
-
 
97
 
-
 
98
        if (!$request->isGet()) {
-
 
99
            return new JsonModel([
-
 
100
                'success' => false,
-
 
101
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
-
 
102
            ]);
Línea 100... Línea -...
100
 
-
 
101
 
-
 
102
        $request = $this->getRequest();
103
        }
Línea 103... Línea 104...
103
        if ($request->isGet()) {
104
 
104
            $headers  = $request->getHeaders();
105
        $headers  = $request->getHeaders();
105
 
106
 
Línea 106... Línea 107...
106
            $isJson = false;
107
        $isJson = false;
Línea 107... Línea 108...
107
            if ($headers->has('Accept')) {
108
        if ($headers->has('Accept')) {
108
                $accept = $headers->get('Accept');
109
            $accept = $headers->get('Accept');
Línea 109... Línea 110...
109
 
110
 
110
                $prioritized = $accept->getPrioritized();
111
            $prioritized = $accept->getPrioritized();
111
 
-
 
112
                foreach ($prioritized as $key => $value) {
112
 
113
                    $raw = trim($value->getRaw());
113
            foreach ($prioritized as $key => $value) {
-
 
114
                $raw = trim($value->getRaw());
Línea 114... Línea 115...
114
 
115
 
115
                    if (!$isJson) {
-
 
116
                        $isJson = strpos($raw, 'json');
-
 
Línea 117... Línea 116...
117
                    }
116
                if (!$isJson) {
118
                }
117
                    $isJson = strpos($raw, 'json');
119
            }
118
                }
120
 
119
            }
121
            $formFeed = new CreateFeedForm($this->adapter);
120
        }
122
            
121
 
-
 
122
        $formFeed = new CreateFeedForm($this->adapter);
123
     
123
 
124
 
-
 
125
            $this->layout()->setTemplate('layout/layout-backend');
-
 
126
            $viewModel = new ViewModel();
-
 
127
            $viewModel->setTemplate('leaders-linked/feeds/index.phtml');
-
 
128
            $viewModel->setVariables([
-
 
129
                'formFeed'      => $formFeed,
-
 
130
            ]);
124
        $this->layout()->setTemplate('layout/layout-backend');
Línea 131... Línea 125...
131
            return $viewModel;
125
        $viewModel = new ViewModel();
132
        } else {
126
        $viewModel->setTemplate('leaders-linked/feeds/index.phtml');
Línea 484... Línea 478...
484
        return new JsonModel($response);
478
        return new JsonModel($response);
485
    }
479
    }
Línea 486... Línea 480...
486
 
480
 
487
    public function addAction()
481
    public function addAction()
488
    {
-
 
-
 
482
    {
Línea 489... Línea 483...
489
        
483
        $request = $this->getRequest();
490
 
484
 
Línea 491... Línea 485...
491
        $currentUserPlugin = $this->plugin('currentUserPlugin');
485
        $currentUserPlugin = $this->plugin('currentUserPlugin');
492
        $currentUser = $currentUserPlugin->getUser();
486
        $currentUser = $currentUserPlugin->getUser();
Línea 493... Línea -...
493
        
-
 
494
        $currentNetworkPlugin = $this->plugin('currentNetworkPlugin');
487
        
495
        $currentNetwork = $currentNetworkPlugin->getNetwork();
-
 
Línea 496... Línea 488...
496
        
488
        $currentNetworkPlugin = $this->plugin('currentNetworkPlugin');
497
        
-
 
Línea -... Línea 489...
-
 
489
        $currentNetwork = $currentNetworkPlugin->getNetwork();
-
 
490
        
-
 
491
        $currentCompany = $currentUserPlugin->getCompany();
-
 
492
 
-
 
493
        $myt_id =  $this->params()->fromRoute('myt_id');
-
 
494
 
Línea 498... Línea 495...
498
        $currentCompany = $currentUserPlugin->getCompany();
495
        if (!$request->isPost()) {
499
        $myt_id =  $this->params()->fromRoute('myt_id');
496
            return new JsonModel([
-
 
497
                'success' => false,
500
 
498
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
-
 
499
            ]);
-
 
500
        }
-
 
501
 
Línea 501... Línea 502...
501
        $request = $this->getRequest();
502
        $dataPost = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());
Línea 502... Línea 503...
502
        if ($request->isPost()) {
503
        $feed_content_type = empty($dataPost['feed_content_type']) ? '' :  $dataPost['feed_content_type'];
503
 
-
 
Línea -... Línea 504...
-
 
504
        
-
 
505
        
-
 
506
        if( $feed_content_type == Feed::FILE_TYPE_FAST_SURVEY) {
-
 
507
            $form = new FastSurveyForm();
-
 
508
            $form->setData($dataPost);
-
 
509
            
504
 
510
            if ($form->isValid()) {
-
 
511
                
505
            $dataPost = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());
512
                $dataPost = (array) $form->getData();
-
 
513
                
-
 
514
                $companyUserMapper = CompanyUserMapper::getInstance($this->adapter);
506
            $feed_content_type = empty($dataPost['feed_content_type']) ? '' :  $dataPost['feed_content_type'];
515
                $companyUser = $companyUserMapper->fetchOwnerByCompanyId($currentCompany->id);
-
 
516
                $now = $companyUserMapper->getDatebaseNow();
-
 
517
                
507
            
518
                
508
            
519
                $hydrator = new ObjectPropertyHydrator();
-
 
520
                $fastSurvey = new FastSurvey();
-
 
521
                $hydrator->hydrate($dataPost, $fastSurvey);
-
 
522
                
509
            if( $feed_content_type == Feed::FILE_TYPE_FAST_SURVEY) {
523
                $fastSurvey->network_id = $currentNetwork->id;
-
 
524
                $fastSurvey->company_id = $currentCompany->id;
510
                
525
                $fastSurvey->user_id = $companyUser->id;
-
 
526
                $fastSurvey->status = FastSurvey::STATUS_ACTIVE;
-
 
527
        
-
 
528
                
-
 
529
                $fastSurveyMapper = FastSurveyMapper::getInstance($this->adapter);
-
 
530
                $result = $fastSurveyMapper->insert($fastSurvey);
-
 
531
                if ($result) {
-
 
532
                    $feed = new Feed();
-
 
533
                    $feed->company_id = $currentCompany->id;
-
 
534
                    $feed->network_id = $currentNetwork->id;
-
 
535
                    $feed->user_id = $companyUser->id;
Línea -... Línea 536...
-
 
536
                    $feed->fast_survey_id = $fastSurvey->id;
-
 
537
                    $feed->type = Feed::TYPE_COMPANY;
Línea 511... Línea -...
511
                $form = new FastSurveyForm();
-
 
512
                $form->setData($dataPost);
-
 
513
                
538
                    $feed->file_type = Feed::FILE_TYPE_FAST_SURVEY;
Línea 514... Línea 539...
514
                if ($form->isValid()) {
539
                    $feed->posted_or_shared = Feed::POSTED;
515
                    
540
                    $feed->status = Feed::STATUS_PUBLISHED;
516
                    $dataPost = (array) $form->getData();
541
                    $feed->title = '-';
517
                    
542
                    $feed->description = '-';
518
                    $companyUserMapper = CompanyUserMapper::getInstance($this->adapter);
-
 
Línea 519... Línea -...
519
                    $companyUser = $companyUserMapper->fetchOwnerByCompanyId($currentCompany->id);
-
 
520
                    $now = $companyUserMapper->getDatebaseNow();
-
 
521
                    
-
 
522
                    
-
 
523
                    $hydrator = new ObjectPropertyHydrator();
-
 
524
                    $fastSurvey = new FastSurvey();
-
 
525
                    $hydrator->hydrate($dataPost, $fastSurvey);
-
 
526
                    
-
 
527
                    $fastSurvey->network_id = $currentNetwork->id;
-
 
528
                    $fastSurvey->company_id = $currentCompany->id;
-
 
529
                    $fastSurvey->user_id = $companyUser->id;
-
 
530
                    $fastSurvey->status = FastSurvey::STATUS_ACTIVE;
-
 
531
            
-
 
532
                    
-
 
533
                    $fastSurveyMapper = FastSurveyMapper::getInstance($this->adapter);
-
 
534
                    $result = $fastSurveyMapper->insert($fastSurvey);
-
 
535
                    if ($result) {
-
 
536
                        $feed = new Feed();
-
 
537
                        $feed->company_id = $currentCompany->id;
-
 
538
                        $feed->network_id = $currentNetwork->id;
-
 
539
                        $feed->user_id = $companyUser->id;
-
 
540
                        $feed->fast_survey_id = $fastSurvey->id;
-
 
541
                        $feed->type = Feed::TYPE_COMPANY;
-
 
542
                        $feed->file_type = Feed::FILE_TYPE_FAST_SURVEY;
-
 
543
                        $feed->posted_or_shared = Feed::POSTED;
-
 
544
                        $feed->status = Feed::STATUS_PUBLISHED;
-
 
545
                        $feed->title = '-';
-
 
546
                        $feed->description = '-';
-
 
547
                        $feed->total_comments   = 0;
-
 
548
                        $feed->total_shared     = 0;
-
 
549
                        $feed->shared_with      = Feed::SHARE_WITH_CONNECTIONS;
-
 
550
                        
-
 
551
                        $feedMapper = FeedMapper::getInstance($this->adapter);
-
 
552
                        $feedMapper->insert($feed);
-
 
553
                        
-
 
Línea 554... Línea -...
554
                        $this->logger->info('Se agrego la encuesta rápida : ' . $fastSurvey->question, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
-
 
555
                        
543
                    $feed->total_comments   = 0;
556
                        $response = [
544
                    $feed->total_shared     = 0;
557
                            'success'   => true,
-
 
558
                            'data'   => $this->renderFeed($feed->id, $now)
-
 
559
                        ];
-
 
560
                        
-
 
561
                        
-
 
562
                    } else {
-
 
563
                        $response = [
-
 
564
                            'success' => false,
545
                    $feed->shared_with      = Feed::SHARE_WITH_CONNECTIONS;
565
                            'data' => $fastSurveyMapper->getError()
546
                    
566
                        ];
547
                    $feedMapper = FeedMapper::getInstance($this->adapter);
567
                    }
548
                    $feedMapper->insert($feed);
568
                    
-
 
569
                    return new JsonModel($response);
-
 
570
                } else {
-
 
571
                    $messages = [];
-
 
Línea 572... Línea 549...
572
                    $form_messages = (array) $form->getMessages();
549
                    
573
                    foreach ($form_messages as $fieldname => $field_messages) {
-
 
574
                        
550
                    $this->logger->info('Se agrego la encuesta rápida : ' . $fastSurvey->question, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
575
                        $messages[$fieldname] = array_values($field_messages);
-
 
576
                    }
551
                    
577
                    
-
 
578
                    return new JsonModel([
-
 
579
                        'success' => false,
552
                    $response = [
580
                        'data' => $messages
553
                        'success'   => true,
581
                    ]);
-
 
Línea 582... Línea -...
582
                }
-
 
583
            }  else {
-
 
584
           
-
 
585
            
-
 
586
            
-
 
587
                
-
 
588
                $form = new CreateFeedForm($this->adapter);
-
 
589
    
-
 
590
                $form->setData($dataPost);
-
 
591
    
-
 
592
                if ($form->isValid()) {
-
 
593
    
-
 
594
    
-
 
595
                    $companyMapper = CompanyMapper::getInstance($this->adapter);
-
 
596
                    $now = $companyMapper->getDatebaseNow();
-
 
597
                    
-
 
598
                    
-
 
599
                    $company = $companyMapper->fetchOne($currentCompany->id);
-
 
600
    
-
 
601
                    $companyUserMapper = CompanyUserMapper::getInstance($this->adapter);
-
 
602
                    $owner = $companyUserMapper->fetchOwnerByCompanyId($company->id);
-
 
603
    
-
 
604
                    $dataPost['priority'] =  isset($dataPost['priority']) ? Feed::PRIORITY_URGENT  : '';
-
 
605
    
-
 
606
    
-
 
607
                    $hydrator = new ObjectPropertyHydrator();
-
 
608
                    $feed = new Feed();
-
 
609
                    $hydrator->hydrate($dataPost, $feed);
-
 
610
                     
-
 
611
                    if ($myt_id) {
-
 
612
                        $feedMapper = FeedMapper::getInstance($this->adapter);
-
 
613
                        $myt  = $feedMapper->fetchOneByUuid($myt_id);
-
 
614
                        $feed->network_id       = $currentUser->network_id;
-
 
615
                        $feed->company_id       = $currentCompany->id;
-
 
616
                        $feed->group_id         = null;
-
 
617
                        $feed->user_id          = $owner->user_id;
-
 
618
                        $feed->myt_id           = $myt->id;
-
 
619
                        $feed->related_feed     = $myt->id;
-
 
620
                        $feed->type             = Feed::TYPE_MYT_ANSWER;
-
 
621
                        $feed->posted_or_shared = Feed::POSTED;
-
 
622
                        $feed->shared_with      = Feed::SHARE_WITH_PUBLIC;
-
 
623
                    } else {
-
 
624
                        $feed->network_id       = $currentUser->network_id;
-
 
625
                        $feed->company_id       = $currentCompany->id;
-
 
626
                        $feed->group_id         = null;
-
 
627
                        $feed->user_id          = $owner->user_id;
-
 
628
                        $feed->type             = Feed::TYPE_COMPANY;
-
 
629
                        $feed->posted_or_shared = Feed::POSTED;
-
 
630
                        $feed->shared_with      = Feed::SHARE_WITH_CONNECTIONS;
-
 
631
                    }
-
 
632
    
-
 
633
    
-
 
634
    
-
 
635
    
-
 
636
                    $feed->total_comments   = 0;
-
 
637
                    $feed->total_shared     = 0;
-
 
638
    
-
 
639
    
-
 
640
                    $files = $this->getRequest()->getFiles()->toArray();
-
 
641
                    $file_type = '';
-
 
642
                    if (isset($files['file']) && empty($files['file']['error'])) {
-
 
643
                        $feed_tmp_filename  = $files['file']['tmp_name'];
-
 
644
                        $feed_filename      = \LeadersLinked\Library\Functions::normalizeStringFilename($files['file']['name']);
-
 
645
    
-
 
646
                        $mime_type = mime_content_type($feed_tmp_filename);
-
 
647
                        if ($mime_type == 'image/jpg' || $mime_type == 'image/jpeg' || $mime_type == 'image/png') {
-
 
648
                            $file_type = Feed::FILE_TYPE_IMAGE;
-
 
649
                        } else if ($mime_type == 'video/quicktime' ||  $mime_type == 'video/webm' || $mime_type == 'video/mpeg' || $mime_type == 'video/mpg' || $mime_type == 'video/mp4') {
-
 
650
                            $file_type = Feed::FILE_TYPE_VIDEO;
-
 
651
                        } else if ($mime_type == 'application/pdf') {
-
 
652
                            $file_type = Feed::FILE_TYPE_DOCUMENT;
-
 
653
                        }
-
 
654
                    }
-
 
655
    
-
 
656
    
-
 
657
                    $feedMapper = FeedMapper::getInstance($this->adapter);
-
 
658
                    $result = $feedMapper->insert($feed);
-
 
659
    
-
 
660
    
-
 
661
                    if ($result) {
-
 
662
    
-
 
663
                        $feed = $feedMapper->fetchOne($feed->id);
-
 
664
                        
-
 
665
                        
-
 
666
                        $storage = Storage::getInstance($this->config, $this->adapter);
-
 
667
                        $target_path = $storage->getPathFeed();
-
 
668
                        $interal_path   = 'data' . DIRECTORY_SEPARATOR . 'storage' . DIRECTORY_SEPARATOR . 'tmp';
-
 
669
                        if(!file_exists($interal_path)) {
-
 
670
                            mkdir($interal_path, 0775);
-
 
671
                        }
-
 
672
                        if ($file_type == Feed::FILE_TYPE_DOCUMENT) {
-
 
673
                           
-
 
674
                            
-
 
675
                            if ($storage->putFile($target_path, $feed->uuid, $feed_filename)) {
-
 
676
                                $feed->file_type = $file_type;
-
 
677
                                $feed->file_name = $feed_filename;
-
 
678
                                $feedMapper->update($feed);
-
 
679
                            }
-
 
680
                            
-
 
681
                        } else if ($file_type == Feed::FILE_TYPE_IMAGE) {
-
 
682
                            $image = Image::getInstance($this->config);
-
 
683
                            $target_path = $image->getStorage()->getPathFeed();
-
 
684
                            
-
 
685
                            list($target_width, $target_height) = explode('x', $this->config['leaderslinked.image_sizes.feed_image_size']);
-
 
686
                            
-
 
687
                            
-
 
688
                            $feed_filename = substr($feed_filename, 0, strrpos($feed_filename, '.'))  . '.png';
-
 
689
                            $crop_to_dimensions = false;
-
 
690
                            $unlink_source = true;
-
 
691
                            
-
 
692
                            if(!$image->uploadProcessChangeSize($feed_tmp_filename, $target_path, $feed->uuid, $feed_filename, $target_width, $target_height, $crop_to_dimensions, $unlink_source)) {
-
 
693
                                $feed->file_type = $file_type;
-
 
694
                                $feed->file_name = $feed_filename;
-
 
695
                                $feedMapper->update($feed);
-
 
696
                            }
-
 
697
                        }
-
 
698
                        if ($file_type == Feed::FILE_TYPE_VIDEO) {
-
 
699
                            try {
-
 
700
                                
-
 
701
                                $full_filename          = $interal_path . DIRECTORY_SEPARATOR. $feed_filename;
-
 
702
                                $poster_filename        = substr($feed_filename, 0, strrpos($feed_filename, '.')).  '.jpg';
-
 
703
                                $poster_full_filename   = $interal_path . DIRECTORY_SEPARATOR . $poster_filename;
-
 
704
                                
-
 
705
                                move_uploaded_file($feed_tmp_filename, $full_filename);
-
 
706
                                
-
 
707
                                $cmd        = "/usr/bin/ffprobe -v error -of flat=s=_ -select_streams v:0 -show_entries stream=height,width,duration  $full_filename";
-
 
708
                                $response   = trim(shell_exec($cmd));
-
 
709
                                
-
 
710
                                $source_duration = 0;
-
 
711
                                $lines = explode("\n", $response);
-
 
712
                                foreach ($lines as $line) {
-
 
713
                                    $line = trim(strtolower($line));
-
 
714
                                    if (strpos($line, 'duration') !== false) {
-
 
715
                                        $values = explode('=', $line);
-
 
716
                                        $source_duration = intval(str_replace($values[1], '#', ''), 10);
-
 
717
                                    }
-
 
718
                                }
-
 
719
                                
-
 
720
                                
-
 
721
                                if ($source_duration == 0) {
-
 
722
                                    $second_extract = '00:00:02';
-
 
723
                                } else {
-
 
724
                                    if ($source_duration > 10) {
-
 
725
                                        $second_extract = '00:00:10';
-
 
726
                                    } else {
-
 
727
                                        $second_extract = '00:00:02';
-
 
728
                                    }
-
 
729
                                }
-
 
730
                                
-
 
731
                                //$imageSize = $this->config['leaderslinked.image_sizes.feed_image_size'];
-
 
732
                                
-
 
733
                                //$cmd = "/usr/bin/ffmpeg -y -i $full_filename  -pix_fmt yuvj422p -deinterlace -an -ss $second_extract -f mjpeg -t 1 -r 1 -y -s $imageSize $generateFile";
-
 
734
                                // $cmd = "/usr/bin/ffmpeg -y -i $full_filename  -pix_fmt yuvj422p -an -ss $second_extract -f mjpeg -t 1 -r 1 -y -s $imageSize $generateFile";
-
 
735
                                $cmd = "/usr/bin/ffmpeg -y -i $full_filename  -pix_fmt yuvj422p -an -ss $second_extract -f mjpeg -t 1 -r 1 -y  $poster_full_filename";
-
 
736
                                exec($cmd);
-
 
737
                                
-
 
738
                                
-
 
739
                                $ok = $this->storage->putFile($target_path, $feed->uuid, $poster_full_filename);
-
 
740
                                $ok = $ok && $this->storage->putFile($target_path, $feed->uuid, $full_filename);
-
 
741
                                
-
 
742
                                if( $ok ) {
-
 
743
                                    
-
 
744
                                    $feed->file_type = $file_type;
-
 
745
                                    $feed->file_name = basename($feed_filename);
-
 
746
                                    $feed->file_image_preview = basename($poster_filename);;
-
 
747
                                    
-
 
748
                                    
-
 
749
                                    
-
 
750
                                    if($feedMapper->update($feed)) {
-
 
751
                                        
-
 
752
                                        $videoConvert               = new VideoConvert();
-
 
753
                                        $videoConvert->uuid         = $feed->uuid;
-
 
754
                                        $videoConvert->filename     = basename($feed_filename);
-
 
755
                                        $videoConvert->type         = VideoConvert::TYPE_FEED;
-
 
756
                                        
-
 
757
                                        $videoConvertMapper = VideoConvertMapper::getInstance($this->adapter);
-
 
758
                                        $videoConvertMapper->insert($videoConvert);
-
 
759
                                    }
-
 
760
                                }
-
 
761
                                
-
 
762
                                // @unlink($full_filename);
-
 
763
                                //@unlink($generate_full_filename);
-
 
764
                                
-
 
765
                                
-
 
766
                            } catch (\Throwable $e) {
-
 
767
                                error_log($e->getTraceAsString());
-
 
768
                            }
-
 
769
                        }
554
                        'data'   => $this->renderFeed($feed->id, $now)
770
    
-
 
771
    
-
 
772
                        $response = [
-
 
773
                            'success'   => true,
-
 
774
                            'data'   => $this->renderFeed($feed->id, $now)
-
 
775
                        ];
-
 
776
                    } else {
555
                    ];
-
 
556
                    
-
 
557
                    
-
 
558
                } else {
-
 
559
                    $response = [
-
 
560
                        'success' => false,
777
                        $response = [
561
                        'data' => $fastSurveyMapper->getError()
-
 
562
                    ];
-
 
563
                }
-
 
564
                
-
 
565
                return new JsonModel($response);
-
 
566
            } else {
-
 
567
                $messages = [];
-
 
568
                $form_messages = (array) $form->getMessages();
-
 
569
                foreach ($form_messages as $fieldname => $field_messages) {
-
 
570
                    
-
 
571
                    $messages[$fieldname] = array_values($field_messages);
-
 
572
                }
-
 
573
                
-
 
574
                return new JsonModel([
-
 
575
                    'success' => false,
-
 
576
                    'data' => $messages
-
 
577
                ]);
-
 
578
            }
-
 
579
        }  
-
 
580
        $form = new CreateFeedForm($this->adapter);
-
 
581
 
-
 
582
        $form->setData($dataPost);
-
 
583
 
-
 
584
        if (!$form->isValid()) {
-
 
585
            $messages = [];
-
 
586
            $form_messages = (array) $form->getMessages();
-
 
587
            foreach ($form_messages  as $fieldname => $field_messages)
-
 
588
            {
-
 
589
                $messages[$fieldname] = array_values($field_messages);
-
 
590
            }
-
 
591
            return new JsonModel([
-
 
592
                'success'   => false,
-
 
593
                'data'   => $messages
-
 
594
            ]);
-
 
595
        }
-
 
596
 
-
 
597
        $companyMapper = CompanyMapper::getInstance($this->adapter);
-
 
598
        $now = $companyMapper->getDatebaseNow();
-
 
599
        
-
 
600
        $company = $companyMapper->fetchOne($currentCompany->id);
-
 
601
 
-
 
602
        $companyUserMapper = CompanyUserMapper::getInstance($this->adapter);
-
 
603
        $owner = $companyUserMapper->fetchOwnerByCompanyId($company->id);
-
 
604
 
-
 
605
        $dataPost['priority'] =  isset($dataPost['priority']) ? Feed::PRIORITY_URGENT  : '';
778
                            'success'   => false,
606
 
-
 
607
        $hydrator = new ObjectPropertyHydrator();
-
 
608
        $feed = new Feed();
779
                            'data'   => $feedMapper->getError()
609
        $hydrator->hydrate($dataPost, $feed);
780
                        ];
610
 
781
                    }
611
        if ($myt_id) {
782
                } else {
612
            $feedMapper = FeedMapper::getInstance($this->adapter);
-
 
613
            $myt  = $feedMapper->fetchOneByUuid($myt_id);
783
                    $messages = [];
614
            $feed->network_id       = $currentUser->network_id;
Línea -... Línea 615...
-
 
615
            $feed->company_id       = $currentCompany->id;
-
 
616
            $feed->group_id         = null;
-
 
617
            $feed->user_id          = $owner->user_id;
-
 
618
            $feed->myt_id           = $myt->id;
-
 
619
            $feed->related_feed     = $myt->id;
-
 
620
            $feed->type             = Feed::TYPE_MYT_ANSWER;
-
 
621
            $feed->posted_or_shared = Feed::POSTED;
-
 
622
            $feed->shared_with      = Feed::SHARE_WITH_PUBLIC;
-
 
623
        } else {
-
 
624
            $feed->network_id       = $currentUser->network_id;
-
 
625
            $feed->company_id       = $currentCompany->id;
-
 
626
            $feed->group_id         = null;
-
 
627
            $feed->user_id          = $owner->user_id;
-
 
628
            $feed->type             = Feed::TYPE_COMPANY;
-
 
629
            $feed->posted_or_shared = Feed::POSTED;
-
 
630
            $feed->shared_with      = Feed::SHARE_WITH_CONNECTIONS;
-
 
631
        }
-
 
632
 
-
 
633
        $feed->total_comments   = 0;
-
 
634
        $feed->total_shared     = 0;
-
 
635
    
-
 
636
        $feedMapper = FeedMapper::getInstance($this->adapter);
-
 
637
 
-
 
638
        if(!$feedMapper->insert($feed)) {
-
 
639
            return new JsonModel([
-
 
640
                'success'   => false,
-
 
641
                'data'   => $feedMapper->getError()
-
 
642
            ]);
-
 
643
        }
-
 
644
 
-
 
645
        $feed = $feedMapper->fetchOne($feed->id);
-
 
646
 
-
 
647
        $storage = Storage::getInstance($this->config, $this->adapter);
-
 
648
        $storage->setFiles($request->getFiles()->toArray());
-
 
649
 
-
 
650
        if(!$storage->setCurrentFilename('file')) {
-
 
651
            return new JsonModel([
-
 
652
                'success'   => false,
-
 
653
                'data'   => 'ERROR_UPLOAD_FILE'
-
 
654
            ]);
-
 
655
        }
-
 
656
 
-
 
657
        $file_type = $storage->getFileType();
-
 
658
 
-
 
659
        if ($file_type == Feed::FILE_TYPE_DOCUMENT) {
-
 
660
            $tmp_filename = $storage->getTmpFilename();
-
 
661
            $filename = 'feed-' . $feed->uuid . '.pdf';
-
 
662
            $target_filename = $storage->composePathToFilename( 
-
 
663
                Storage::TYPE_FEED,
-
 
664
                $feed->uuid,
-
 
665
                $filename
-
 
666
            );
-
 
667
            
-
 
668
            if (!$storage->putFile($tmp_filename, $target_filename)) {
-
 
669
                return new JsonModel([
-
 
670
                    'success'   => false,
-
 
671
                    'data'   => 'ERROR_UPLOAD_FILE'
-
 
672
                ]);
-
 
673
            }
-
 
674
 
-
 
675
            $feed->file_type = $file_type;
-
 
676
            $feed->file_name = $filename;
-
 
677
 
-
 
678
            if(!$feedMapper->update($feed)) {
-
 
679
                return new JsonModel([
-
 
680
                    'success'   => false,
-
 
681
                    'data'   => 'ERROR_UPDATING_FEED'
-
 
682
                ]);
-
 
683
            }
-
 
684
        } 
-
 
685
 
-
 
686
        if ($file_type == Feed::FILE_TYPE_IMAGE) {
-
 
687
            list($target_width, $target_height) = explode('x', $this->config['leaderslinked.image_sizes.feed_image_size']);
-
 
688
 
-
 
689
            $tmp_filename = $storage->getTmpFilename();
-
 
690
            $filename = 'feed-' . $feed->uuid . '.png';
-
 
691
            $target_filename = $storage->composePathToFilename( 
-
 
692
                Storage::TYPE_FEED,
-
 
693
                $feed->uuid,
-
 
694
                $filename
-
 
695
            );
-
 
696
            
-
 
697
            if(!$storage->uploadImageResize($tmp_filename, $target_filename, $target_width, $target_height)) {
-
 
698
                return new JsonModel([
-
 
699
                    'success'   => false,
-
 
700
                    'data'   => 'ERROR_UPLOAD_FILE'
-
 
701
                ]);
-
 
702
            }
-
 
703
            
-
 
704
            $feed->file_type = $file_type;
-
 
705
            $feed->file_name = $filename; 
-
 
706
            
-
 
707
            if(!$feedMapper->update($feed)) {
-
 
708
                return new JsonModel([
-
 
709
                    'success'   => false,
-
 
710
                    'data'   => 'ERROR_UPDATING_FEED'
-
 
711
                ]);
-
 
712
            }
-
 
713
        }
-
 
714
 
-
 
715
        if ($file_type == Feed::FILE_TYPE_VIDEO) {
-
 
716
            $tmp_filename = $storage->getTmpFilename();
-
 
717
            $filename = 'feed-' . $feed->uuid . '.mp4';
-
 
718
            $target_filename = $storage->composePathToFilename( 
-
 
719
                Storage::TYPE_FEED,
-
 
720
                $feed->uuid,
-
 
721
                $filename
-
 
722
            );
-
 
723
 
-
 
724
            if(!$storage->putFile($tmp_filename, $target_filename)) {
-
 
725
                return new JsonModel([
-
 
726
                    'success'   => false,
-
 
727
                    'data'   => 'ERROR_UPLOAD_FILE'
-
 
728
                ]);
-
 
729
            }
-
 
730
            
-
 
731
            // Generate poster image filename
-
 
732
            $poster_filename = 'feed-' . $feed->uuid . '-poster.png';
-
 
733
            $poster_target_filename = $storage->composePathToFilename(
-
 
734
                Storage::TYPE_FEED,
-
 
735
                $feed->uuid,
-
 
736
                $poster_filename
-
 
737
            );
-
 
738
            
-
 
739
            // Extract poster from video using Storage class method
-
 
740
            if (!$storage->extractPosterFromVideo($target_filename, $poster_target_filename)) {
-
 
741
                return new JsonModel([
-
 
742
                    'success'   => false,
-
 
743
                    'data'   => 'ERROR_GENERATING_VIDEO_POSTER'
-
 
744
                ]);
-
 
745
            }
-
 
746
            
-
 
747
            $feed->file_type = $file_type;
-
 
748
            $feed->file_name = $filename;
-
 
749
            $feed->file_image_preview = $poster_filename;
-
 
750
            
-
 
751
            if(!$feedMapper->update($feed)) {
-
 
752
                return new JsonModel([
-
 
753
                    'success'   => false,
784
                    $form_messages = (array) $form->getMessages();
754
                    'data'   => 'ERROR_UPDATING_FEED'
-
 
755
                ]);
-
 
756
            }
-
 
757
            
785
                    foreach ($form_messages  as $fieldname => $field_messages) {
758
            $videoConvert = new VideoConvert();
Línea 786... Línea 759...
786
                        $messages[$fieldname] = array_values($field_messages);
759
            $videoConvert->uuid = $feed->uuid;
787
                    }
760
            $videoConvert->filename = $filename;
788
    
-
 
789
                    $response = [
-
 
790
                        'success'   => false,
-
 
791
                        'data'   => $messages
-
 
792
                    ];
761
            $videoConvert->type = VideoConvert::TYPE_FEED;
793
                }
762
            
794
            }
763
            $videoConvertMapper = VideoConvertMapper::getInstance($this->adapter);