Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 13921 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 13921 Rev 14029
Línea 506... Línea 506...
506
                'success' => false,
506
                'success' => false,
507
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
507
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
508
            ]);
508
            ]);
509
        }
509
        }
510
    }
510
    }
511
    public function sendAllAction()
-
 
512
    {
-
 
513
        
-
 
514
        $request = $this->getRequest();
-
 
515
        if($request->isPost()) {
-
 
516
            
-
 
517
            
-
 
518
            $currentUserPlugin = $this->plugin('currentUserPlugin');
-
 
519
            $currentUser = $currentUserPlugin->getUser();
-
 
520
            $currentCompany = $currentUserPlugin->getCompany();
-
 
Línea 521... Línea -...
521
 
-
 
522
            $data = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());
-
 
523
            
-
 
524
            $form = new CommunicationInMailSendAllForm();
-
 
525
            $form->setData($data);
-
 
526
            
-
 
527
            if($form->isValid()) {
-
 
528
                
-
 
529
                $sendType=$form->get('type_send')->getValue();
-
 
530
                $users=[];
-
 
531
                if($sendType=='company_all'){
-
 
532
                    $companyUserMapper = CompanyUserMapper::getInstance($this->adapter);
-
 
533
                    $userMapper = UserMapper::getInstance($this->adapter);
-
 
534
                    $datosCompanyUser = $companyUserMapper->fetchAllByCompanyIdAndNotUserId($currentCompany->id, $currentUser->id);
-
 
535
                    foreach($datosCompanyUser as $record){
-
 
536
                        $datosUser = $userMapper->fetchOne($record->user_id);
-
 
537
                        array_push($users,  $datosUser);
-
 
538
                    }
-
 
539
                }else if($sendType=='studens_all'){
-
 
540
                    $userMapper = UserMapper::getInstance($this->adapter);
-
 
541
                    $datosCompanyUser = $userMapper->fetchAllStudensByCompanyId($currentCompany->id);
-
 
542
                    foreach($datosCompanyUser as $record){
-
 
543
                        $datosUser = $userMapper->fetchOne($record->id);
-
 
544
                        array_push($users,  $datosUser);
-
 
545
                    }
-
 
546
                }else{
-
 
547
                    return new JsonModel([
-
 
548
                        'success'  => false,
-
 
549
                        'data' => 'te falta amor, hermano'
-
 
550
                    ]);
-
 
551
                }
-
 
552
 
-
 
553
                foreach($users as $user){
-
 
554
                    
-
 
555
                
-
 
556
                    $conversationMapper = ConversationMapper::getInstance($this->adapter);
-
 
557
                    $conversation = $conversationMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
-
 
558
                    
-
 
559
                    if($conversation) {
-
 
560
                        $conversation->receiver_status = Conversation::STATUS_NORMAL;
-
 
561
                        $conversation->sender_status = Conversation::STATUS_NORMAL;
-
 
562
                        if(!$conversationMapper->update($conversation)) {
-
 
563
                            return new JsonModel([
-
 
564
                                'success'  => false,
-
 
565
                                'data' => $conversationMapper->getError()
-
 
566
                            ]);
-
 
567
                        }
-
 
568
                    } else {
-
 
569
                        $conversation = new Conversation();
-
 
570
                        $conversation->sender_id = $currentUser->id;
-
 
571
                        $conversation->sender_status = Conversation::STATUS_NORMAL;
-
 
572
                        $conversation->receiver_id = $user->id;
-
 
573
                        $conversation->receiver_status = Conversation::STATUS_NORMAL;
-
 
574
                    
-
 
575
                        if(!$conversationMapper->insert($conversation)) {
-
 
576
                            return new JsonModel([
-
 
577
                                'success'  => false,
-
 
578
                                'data' => $conversationMapper->getError()
-
 
579
                            ]);
-
 
580
                        }
-
 
581
                        
-
 
582
                    }
-
 
583
                    $files = $this->getRequest()->getFiles()->toArray();
-
 
584
                    $type = Message::TYPE_TEXT;
-
 
585
                    
-
 
586
                    $encoding = $this->params()->fromRoute('encoding');
-
 
587
                    if($encoding == 'base64') {
-
 
588
                        
-
 
589
                        
-
 
590
                        $fileBase64Name = $this->params()->fromPost('file_base64_name');
-
 
591
                        $fileBase64Content = $this->params()->fromPost('file_base64_content');
-
 
592
                        
-
 
593
    
-
 
594
                        if($fileBase64Name && $fileBase64Content) {
-
 
595
                            
-
 
596
                            try {
-
 
597
                                
-
 
598
                                $fileBase64Content = base64_decode($fileBase64Content);
-
 
599
                                if($fileBase64Content) {
-
 
600
 
-
 
601
                                    $message_filename      = $this->normalizeString($fileBase64Name);
-
 
602
                                    $message_tmp_filename = 'data' . DIRECTORY_SEPARATOR . 'tmp';
-
 
603
                                    if(!file_exists($message_tmp_filename)) {
-
 
604
                                        mkdir($message_tmp_filename, 0755, true);
-
 
605
                                    }
-
 
606
 
-
 
607
                                    $message_tmp_filename = 'data' . DIRECTORY_SEPARATOR . 'tmp' . DIRECTORY_SEPARATOR . $message_filename;
-
 
608
                                    file_put_contents($message_tmp_filename, $fileBase64Content);
-
 
609
                                    
-
 
610
                                    
-
 
611
                                    
-
 
612
                                    $mime_type = mime_content_type($message_tmp_filename);
-
 
613
                                    //echo '$mime_type = '. $mime_type; exit;
-
 
614
                                    
-
 
615
                                    
-
 
616
                                    if($mime_type == 'image/jpg' || $mime_type == 'image/jpeg' || $mime_type == 'image/png') {
-
 
617
                                        $type = Message::TYPE_IMAGE;
-
 
618
                                    } else if($mime_type == 'video/webm' || $mime_type == 'video/mpeg' || $mime_type == 'video/mpg' || $mime_type == 'video/mp4') {
-
 
619
                                        $type = Message::FILE_TYPE_VIDEO;
-
 
620
                                    } else if($mime_type == 'application/pdf') {
-
 
621
                                        $type = Message::FILE_TYPE_DOCUMENT;
-
 
622
                                    }
-
 
623
                                    
-
 
624
                                }
-
 
625
                            } catch(\Exception $e) {
-
 
626
                                
-
 
627
                            }
-
 
628
                        }
-
 
629
                        
-
 
630
                    } else {
-
 
631
                        
-
 
632
                        if(isset($files['file']) && empty($files['file']['error'])) {
-
 
633
                            $message_tmp_filename  = $files['file']['tmp_name'];
-
 
634
                            $message_filename      = $this->normalizeString($files['file']['name']);
-
 
635
                            
-
 
636
                            $mime_type = mime_content_type($message_tmp_filename);
-
 
637
                            
-
 
638
                            
-
 
639
                            if($mime_type == 'image/jpg' || $mime_type == 'image/jpeg' || $mime_type == 'image/png') {
-
 
640
                                $type = Message::TYPE_IMAGE;
-
 
641
                            } else if($mime_type == 'video/webm' || $mime_type == 'video/mpeg' || $mime_type == 'video/mpg' || $mime_type == 'video/mp4') {
-
 
642
                                $type = Message::TYPE_VIDEO;
-
 
643
                            } else if($mime_type == 'application/pdf') {
-
 
644
                                $type = Message::TYPE_DOCUMENT;
-
 
645
                            }
-
 
646
                        }
-
 
647
                    }
-
 
648
                    
-
 
649
                    
-
 
650
                    
-
 
651
                    $message = new Message();
-
 
652
                    $message->conversation_id = $conversation->id;
-
 
653
                    $message->read = Message::NO;
-
 
654
                    $message->message = $form->get('message')->getValue();
-
 
655
                    $message->receiver_id = $user->id;
-
 
656
                    $message->receiver_status = Message::STATUS_NORMAL;
-
 
657
                    $message->sender_id = $currentUser->id;
-
 
658
                    $message->sender_status = Message::STATUS_NORMAL;
-
 
659
                    $message->type = $type;
-
 
660
                    
-
 
661
 
-
 
662
                    
-
 
663
                    $messageMapper = MessageMapper::getInstance($this->adapter);
-
 
664
                    if($messageMapper->insert($message)) {
-
 
665
                        
-
 
666
                        $message = $messageMapper->fetchOne($message->id);
-
 
667
                        
-
 
668
                        
-
 
669
                        if( $type == Message::TYPE_DOCUMENT) {
-
 
670
                            try {
-
 
671
                                $target_path = $this->config['leaderslinked.fullpath.message'] . $message->uuid;
-
 
672
                                if(!file_exists($target_path)) {
-
 
673
                                    mkdir($target_path, 0755);
-
 
674
                                }
-
 
675
                                
-
 
676
                                $full_filename = $target_path  . DIRECTORY_SEPARATOR .$message_filename;
-
 
677
                                
-
 
678
                                if($encoding == 'base64') {
-
 
679
                                    $resultMoveOrRename = rename($message_tmp_filename , $full_filename);
-
 
680
                                } else {
-
 
681
                                    $resultMoveOrRename = move_uploaded_file($message_tmp_filename , $full_filename);
-
 
682
                                }
-
 
683
                                
-
 
684
                                if($resultMoveOrRename) {
-
 
685
                                    
-
 
686
                                    $message->type = $type;
-
 
687
                                    $message->filename = basename($message_filename);
-
 
688
                                    $messageMapper->update($message);
-
 
689
                                } else {
-
 
690
                                    error_log('no se pudo mover o renombrar el documento : ' . $message_tmp_filename . ' al directorio : ' . $full_filename );
-
 
691
                                }
-
 
692
                            } catch(\Throwable $e) {
-
 
693
                                error_log($e->getTraceAsString());
-
 
694
                            }
-
 
695
                        }
-
 
696
                        if( $type == Message::TYPE_IMAGE) {
-
 
697
                            try {
-
 
698
                                $target_path = $this->config['leaderslinked.fullpath.message'] . $message->uuid;
-
 
699
                                if(!file_exists($target_path)) {
-
 
700
                                    mkdir($target_path, 0755);
-
 
701
                                }
-
 
702
                                
-
 
703
                                list($target_width, $target_height) = explode('x', $this->config['leaderslinked.image_sizes.message_image_size']);
-
 
704
                                
-
 
705
                                $message_filename = substr($message_filename, 0, strrpos($message_filename, '.'))  . '.png';
-
 
706
                                $crop_to_dimensions = false;
-
 
707
                                if(Image::uploadImage($message_tmp_filename, $target_path, $message_filename, $target_width, $target_height, $crop_to_dimensions )) {
-
 
708
                                    $message->type = $type;
-
 
709
                                    $message->filename = basename($message_filename);
-
 
710
                                    $messageMapper->update($message);
-
 
711
                                }
-
 
712
                            } catch(\Throwable $e) {
-
 
713
                                error_log($e->getTraceAsString());
-
 
714
                            }
-
 
715
                        }
-
 
716
                        if( $type == Message::TYPE_VIDEO) {
-
 
717
                            try {
-
 
718
                                $target_path = $this->config['leaderslinked.fullpath.message'] . $message->uuid;
-
 
719
                                if(!file_exists($target_path)) {
-
 
720
                                    mkdir($target_path, 0755);
-
 
721
                                }
-
 
722
                                
-
 
723
                                $full_filename = $target_path  . DIRECTORY_SEPARATOR . $message_filename;
-
 
724
                                
-
 
725
                                if($encoding == 'base64') {
-
 
726
                                    $resultMoveOrRename = rename($message_tmp_filename , $full_filename);
-
 
727
                                } else {
-
 
728
                                    $resultMoveOrRename = move_uploaded_file($message_tmp_filename , $full_filename);
-
 
729
                                }
-
 
730
                                
-
 
731
                                if($resultMoveOrRename) {
-
 
732
                                    
-
 
733
                                    $size = $this->config['leaderslinked.image_sizes.message_image_size'];
-
 
734
                                    $getFromSecound = 2;
-
 
735
                                    
-
 
736
                                    //extracción del cover
-
 
737
                                    $generateFileName = substr($message_filename, 0, strrpos($message_filename, '.'));
-
 
738
                                    $generateFile =  $target_path  . DIRECTORY_SEPARATOR . $generateFileName .  '.png';
-
 
739
                                    $cmd            = "/usr/bin/ffmpeg -i $full_filename -an -ss $getFromSecound -s $size $generateFile";
-
 
740
                                    exec($cmd);
-
 
741
                                    
-
 
742
                                    
-
 
743
                                    $message->type = $type;
-
 
744
                                    $message->filename = basename($message_filename);
-
 
745
                                    $message->image_preview = basename($generateFile);
-
 
746
                                    $messageMapper->update($message);
-
 
747
                                    
-
 
748
                                    $videoConvert = new VideoConvert();
-
 
749
                                    $videoConvert->filename = $full_filename;
-
 
750
                                    $videoConvert->type = VideoConvert::TYPE_FEED;
-
 
751
                                    
-
 
752
                                    $videoConvertMapper = VideoConvertMapper::getInstance($this->adapter);
-
 
753
                                    $videoConvertMapper->insert($videoConvert);
-
 
754
                                } else {
-
 
755
                                    error_log('no se pudo mover o renombrar el documento : ' . $message_tmp_filename . ' al directorio : ' . $full_filename );
-
 
756
                                }
-
 
757
                            } catch(\Throwable $e) {
-
 
758
                                error_log($e->getTraceAsString());
-
 
759
                            }
-
 
760
                        } 
-
 
761
                
-
 
762
                        
-
 
763
                    } else {
-
 
764
                        return new JsonModel([
-
 
765
                            'success'   => false,
-
 
766
                            'data'   => $messageMapper->getError()
-
 
767
                        ]);
-
 
768
                    }
-
 
769
                }
-
 
770
                
-
 
771
                
-
 
772
                $message = $messageMapper->fetchOne($message->id);
-
 
773
                        
-
 
774
                if($message->filename) {
-
 
775
                    
-
 
776
                
-
 
777
                    $filename = $this->url()->fromRoute('storage', ['type' => 'message', 'filename' => $message->filename, 'code' => $message->uuid]);
-
 
778
 
-
 
779
                } else {
-
 
780
                    $filename = '';
-
 
781
                }
-
 
782
                
-
 
783
                $dt = \DateTime::createFromFormat('Y-m-d H:i:s', $message->added_on);
-
 
784
 
-
 
785
                
-
 
786
                return new JsonModel([
-
 
787
                    'success'   => true,
-
 
788
                    'data'   => 'Mensajes enviados con exito'
-
 
789
                ]);
-
 
790
                
-
 
791
                
-
 
792
            } else {
-
 
793
 
-
 
794
                
-
 
795
                $messages = [];
-
 
796
                $form_messages = (array) $form->getMessages();
-
 
797
                foreach($form_messages  as $fieldname => $field_messages)
-
 
798
                {
-
 
799
                    $messages[$fieldname] = array_values($field_messages);
-
 
800
                }
-
 
801
                
-
 
802
                return new JsonModel([
-
 
803
                    'success'   => false,
-
 
804
                    'data'   => $messages
-
 
805
                ]);
-
 
806
            }
-
 
807
            
-
 
808
            
-
 
809
              
-
 
810
        } else {
-
 
811
            return new JsonModel([
-
 
812
                'success' => false,
-
 
813
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
-
 
814
            ]);
-
 
815
        }
-
 
816
 
-
 
817
    }
511
 
818
    /**
512
    /**
819
     * Esta función envia un mensaje
513
     * Esta función envia un mensaje
820
     * Es una petición POST el url recuperado en /inmail
514
     * Es una petición POST el url recuperado en /inmail
821
     * [ruta del servidor]/inmail/view/[uidd del usuario]/view/message/send 
515
     * [ruta del servidor]/inmail/view/[uidd del usuario]/view/message/send