Proyectos de Subversion LeadersLinked - Services

Rev

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

Rev 333 Rev 334
Línea 45... Línea 45...
45
use LeadersLinked\Model\FastSurveyVote;
45
use LeadersLinked\Model\FastSurveyVote;
46
use LeadersLinked\Mapper\AbuseReportMapper;
46
use LeadersLinked\Mapper\AbuseReportMapper;
47
use LeadersLinked\Mapper\UserBlockedMapper;
47
use LeadersLinked\Mapper\UserBlockedMapper;
48
use LeadersLinked\Model\AbuseReport;
48
use LeadersLinked\Model\AbuseReport;
49
use LeadersLinked\Model\User;
49
use LeadersLinked\Model\User;
50
use LeadersLinked\Library\S3Files;
-
 
51
use LeadersLinked\Library\Storage;
50
use LeadersLinked\Library\Storage;
Línea 52... Línea 51...
52
 
51
 
53
 
52
 
Línea 665... Línea 664...
665
            $feed->status = Feed::STATUS_PUBLISHED;
664
            $feed->status = Feed::STATUS_PUBLISHED;
666
            $feed->total_comments    = 0;
665
            $feed->total_comments    = 0;
667
            $feed->total_shared     = 0;
666
            $feed->total_shared     = 0;
Línea 668... Línea 667...
668
 
667
 
-
 
668
 
669
 
669
            $files = $this->getRequest()->getFiles()->toArray();
670
            $files      = $this->getRequest()->getFiles()->toArray();
-
 
671
            $file_type  = '';
670
            $type = '';
672
 
671
            $filename = '';
673
            if (isset($files['file']) && empty($files['file']['error'])) {
672
            if (isset($files['file']) && empty($files['file']['error'])) {
674
                $feed_tmp_filename  = $files['file']['tmp_name'];
673
                $tmp_filename  = $files['file']['tmp_name'];
675
                $feed_filename      = $this->normalizeString($files['file']['name']);
674
                $filename      = \LeadersLinked\Library\Functions::normalizeStringFilename($files['file']['name']);
676
 
-
 
677
                $mime_type = mime_content_type($feed_tmp_filename);
-
 
678
 
675
                
679
 
676
                $mime_type = mime_content_type($tmp_filename);
680
                if ($mime_type == 'image/jpg' || $mime_type == 'image/jpeg' || $mime_type == 'image/png') {
677
                if ($mime_type == 'image/jpg' || $mime_type == 'image/jpeg' || $mime_type == 'image/png') {
681
                    $file_type = Feed::FILE_TYPE_IMAGE;
678
                    $type = Feed::TYPE_IMAGE;
682
                } else if ($mime_type ==  'video/quicktime' ||  $mime_type == 'video/webm' || $mime_type == 'video/mpeg' || $mime_type == 'video/mpg' || $mime_type == 'video/mp4') {
679
                } else if ($mime_type == 'video/quicktime' ||  $mime_type == 'video/webm' || $mime_type == 'video/mpeg' || $mime_type == 'video/mpg' || $mime_type == 'video/mp4') {
683
                    $file_type = Feed::FILE_TYPE_VIDEO;
680
                    $type = Feed::TYPE_VIDEO;
684
                } else if ($mime_type == 'application/pdf') {
681
                } else if ($mime_type == 'application/pdf') {
685
                    $file_type = Feed::FILE_TYPE_DOCUMENT;
682
                    $type = Feed::TYPE_DOCUMENT;
Línea 686... Línea 683...
686
                }
683
                }
Línea 734... Línea 731...
734
                }
731
                }
Línea 735... Línea 732...
735
 
732
 
Línea 736... Línea 733...
736
 
733
 
Línea 737... Línea 734...
737
                $feed = $feedMapper->fetchOne($feed->id);
734
                $feed = $feedMapper->fetchOne($feed->id);
738
                
735
                
739
                if($file_type) {
-
 
740
 
736
                if($type) {
741
                    $target_path    = $target_path = $this->storage->getPathFeed();
-
 
-
 
737
 
Línea -... Línea 738...
-
 
738
                    $target_path    = $this->storage->getPathFeed();
742
                    $interal_path   = 'data' . DIRECTORY_SEPARATOR . 'storage' . DIRECTORY_SEPARATOR . 'tmp';
739
                    $storage        = Storage::getInstance($this->config, $this->adapter);
-
 
740
                    $target_path    = $storage->getPathHabitContent();
-
 
741
                    
Línea -... Línea 742...
-
 
742
                    
743
                    if(!file_exists($interal_path)) {
743
                    
744
                        mkdir($interal_path, 0775);
744
                    if ($type == Feed::TYPE_DOCUMENT) {
745
                    }
745
                        
746
                    
746
                        
747
                    if ($file_type == Feed::FILE_TYPE_DOCUMENT) {
747
                        
Línea 748... Línea 748...
748
                        
748
                        
749
                        if ($this->storage->putFile($target_path, $feed->uuid, $feed_filename)) {
-
 
750
                            $feed->file_type = $file_type;
-
 
751
                            $feed->file_name = $feed_filename;
-
 
752
                            $feedMapper->update($feed);
-
 
753
                        }
-
 
754
                        
-
 
755
                    } else if ($file_type == Feed::FILE_TYPE_IMAGE) {
749
                        if($storage->moveAndPutFile($tmp_filename, $target_path, $feed->uuid,  $filename)) {
756
                        $image = Image::getInstance($this->config);
750
                            $feed->file_type = $type;
Línea -... Línea 751...
-
 
751
                            $feed->file_name = $filename;
-
 
752
                            $feedMapper->update($feed);
-
 
753
                        }
-
 
754
                        
-
 
755
                    } else if ($type == Feed::TYPE_IMAGE) {
757
                      
756
                        $crop_to_dimensions = false;
-
 
757
                        list($target_width, $target_height) = explode('x', $this->config['leaderslinked.image_sizes.feed_image_size']);
-
 
758
                        
-
 
759
                        
-
 
760
                        $image = Image::getInstance($this->config);
758
                        list($target_width, $target_height) = explode('x', $this->config['leaderslinked.image_sizes.feed_image_size']);
761
                        
759
    
762
                        
760
                   
763
                        $filename = substr($filename, 0, strrpos($filename, '.'))  . '.png';
-
 
764
                        $full_tmp_filename = $image->uploadProcessChangeSize($tmp_filename, $filename, $target_width, $target_height, $crop_to_dimensions);
761
                        $feed_filename      = substr($feed_filename, 0, strrpos($feed_filename, '.'))  . '.png';
765
                        
762
                        $crop_to_dimensions = false;
766
                        
763
                        $unlink_source      = true;
767
                        if($full_tmp_filename) {
764
                        
768
                            if($storage->putFile($target_path, $feed->uuid,  $full_tmp_filename)) {
Línea -... Línea 769...
-
 
769
                                $feed->file_type = $type;
-
 
770
                                $feed->file_name = $filename;
-
 
771
                                $feedMapper->update($feed);
Línea 765... Línea -...
765
                        if($image->uploadImageChangeSize($feed_tmp_filename, $target_path, $feed->uuid, $feed_filename, $target_width, $target_height, $crop_to_dimensions, $unlink_source)) {
-
 
766
                            $feed->file_type = $file_type;
-
 
767
                            $feed->file_name = $feed_filename;
-
 
768
                            $feedMapper->update($feed);
-
 
769
                        }
-
 
770
                    }
-
 
771
                    if ($file_type == Feed::FILE_TYPE_VIDEO) {
-
 
772
                        try {
-
 
Línea 773... Línea -...
773
                            
-
 
774
                            
-
 
775
                            $full_filename          = $interal_path . DIRECTORY_SEPARATOR. $feed_filename;
-
 
776
                            $poster_filename        = substr($feed_filename, 0, strrpos($feed_filename, '.')).  '.jpg';
-
 
777
                            $poster_full_filename   = $interal_path . DIRECTORY_SEPARATOR . $poster_filename;
-
 
778
                            
-
 
779
                            move_uploaded_file($feed_tmp_filename, $full_filename);
-
 
780
                            
-
 
781
                            $cmd        = "/usr/bin/ffprobe -v error -of flat=s=_ -select_streams v:0 -show_entries stream=height,width,duration  $full_filename";
-
 
782
                            $response   = trim(shell_exec($cmd));
-
 
783
                            
-
 
784
                            $source_duration = 0;
-
 
785
                            $lines = explode("\n", $response);
-
 
786
                            foreach ($lines as $line) {
-
 
787
                                $line = trim(strtolower($line));
-
 
788
                                if (strpos($line, 'duration') !== false) {
-
 
789
                                    $values = explode('=', $line);
-
 
790
                                    $source_duration = intval(str_replace($values[1], '#', ''), 10);
-
 
791
                                }
-
 
792
                            }
-
 
793
                            
-
 
794
                            
-
 
795
                            if ($source_duration == 0) {
-
 
796
                                $second_extract = '00:00:02';
-
 
797
                            } else {
-
 
798
                                if ($source_duration > 10) {
-
 
799
                                    $second_extract = '00:00:10';
-
 
800
                                } else {
-
 
801
                                    $second_extract = '00:00:02';
-
 
802
                                }
-
 
803
                            }
772
                            }
804
                            
-
 
805
                            //$imageSize = $this->config['leaderslinked.image_sizes.feed_image_size'];
-
 
806
                            
773
                        }
807
                            //$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";
774
                    }
808
                            // $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";
775
                    if ($type == Feed::TYPE_VIDEO) {
809
                            $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";
-
 
810
                            exec($cmd);
-
 
811
                            
-
 
812
                            
-
 
813
                            $ok = $this->storage->putFile($target_path, $feed->uuid, $poster_full_filename);
776
                        try {
Línea 814... Línea 777...
814
                            $ok = $ok && $this->storage->putFile($target_path, $feed->uuid, $full_filename);
777
                            
815
                            
778
                            $poster_filename    = substr($filename, 0, strrpos($filename, '.')).  '.jpg';
816
                            if( $ok ) {
779
                            $tmp_poster         = sys_get_temp_dir()  . DIRECTORY_SEPARATOR . $poster_filename;
817
                                
780
                            \LeadersLinked\Library\Video::extractPoster($tmp_filename, $tmp_poster);
Línea 818... Línea 781...
818
                                $feed->file_type = $file_type;
781
                            
819
                                $feed->file_name = basename($feed_filename);
782
                            
820
                                $feed->file_image_preview = basename($poster_filename);;
783
                            if($storage->moveAndPutFile($tmp_poster, $target_path, $feed->uuid,  $poster_filename) && $storage->moveAndPutFile($tmp_filename, $target_path, $feed->uuid,  $filename)) {
821
                                
784
       
Línea 822... Línea 785...
822
                    
785
                                $feed->file_type = $type;
823
                                
786
                                $feed->file_name = $filename;
824
                                if($feedMapper->update($feed)) {
-
 
825
                                    
-
 
826
                                    $videoConvert               = new VideoConvert();
-
 
827
                                    $videoConvert->uuid         = $feed->uuid;
-
 
Línea -... Línea 787...
-
 
787
                                if($feedMapper->update($feed)) {
-
 
788
                                    
-
 
789
                                    $videoConvert               = new \LeadersLinked\Model\VideoConvert();
828
                                    $videoConvert->filename     = basename($feed_filename);
790
                                    $videoConvert->uuid         = $feed->uuid;
829
                                    $videoConvert->type         = VideoConvert::TYPE_FEED;
791
                                    $videoConvert->filename     = $filename;
-
 
792
                                    $videoConvert->type         = \LeadersLinked\Model\VideoConvert::TYPE_FEED;
-
 
793
                                    
830
                                    
794
                                    $videoConvertMapper = \LeadersLinked\Mapper\VideoConvertMapper::getInstance($this->adapter);
Línea 831... Línea 795...
831
                                    $videoConvertMapper = VideoConvertMapper::getInstance($this->adapter);
795
                                    $videoConvertMapper->insert($videoConvert);
832
                                    $videoConvertMapper->insert($videoConvert);
796
                                }
Línea 1523... Línea 1487...
1523
 
1487
 
1524
 
1488
 
Línea 1525... Línea -...
1525
        return new JsonModel($response);
-
 
1526
    }
-
 
1527
 
-
 
1528
    /**
-
 
1529
     * 
-
 
1530
     * @param string $str
-
 
1531
     * @return string
-
 
1532
     */
-
 
1533
    private function normalizeString($str = '')
-
 
1534
    {
-
 
1535
        $basename  = substr($str, 0, strrpos($str, '.'));
-
 
1536
        $basename  = str_replace('.', '-', $basename);
-
 
1537
 
-
 
1538
        $extension  = substr($str, strrpos($str, '.'));
-
 
1539
 
-
 
1540
        $str = $basename . $extension;
-
 
1541
 
-
 
1542
        $str = strip_tags($str);
-
 
1543
        $str = preg_replace('/[\r\n\t ]+/', ' ', $str);
-
 
1544
        $str = preg_replace('/[\"\*\/\:\<\>\?\'\|\,]+/', ' ', $str);
-
 
1545
        $str = strtolower($str);
-
 
1546
        $str = html_entity_decode($str, ENT_QUOTES, "utf-8");
-
 
1547
        $str = htmlentities($str, ENT_QUOTES, "utf-8");
-
 
1548
        $str = preg_replace("/(&)([a-z])([a-z]+;)/i", '$2', $str);
-
 
1549
        $str = str_replace(' ', '-', $str);
-
 
1550
        $str = rawurlencode($str);
-
 
Línea 1551... Línea 1489...
1551
        $str = str_replace('%', '-', $str);
1489
        return new JsonModel($response);
1552
        return trim(strtolower($str));
1490
    }