Exemple #1
0
 /**
  * @Security("has_role('ROLE_USER')")
  */
 public function addAction(Request $request)
 {
     if (($url = $request->request->get("url", null)) === null) {
         return new JsonResponse(array("type" => "alert", "message" => "Le lien de la vidéo n'a pas été fourni."), 200);
     }
     if (preg_match('#^https?://\\w{0,3}.?youtube+\\.\\w{2,3}/watch\\?v=([\\w-]{11})#', $url, $matches) == false) {
         return new JsonResponse(array("type" => "alert", "message" => "Le lien de la video Youtube n'est pas valide."), 200);
     }
     $content = file_get_contents("http://youtube.com/get_video_info?video_id=" . $matches[1]);
     parse_str($content, $videoYoutubeData);
     if ($videoYoutubeData["status"] == "fail") {
         return new JsonResponse(array("type" => "alert", "message" => "La vidéo Youtube n'existe pas. Soit parce qu'elle ... n'existe effectivement pas, soit parce que l'exportation n'est pas autorisée par Youtube."), 200);
     }
     if (!$this->get('security.context')->isGranted("ROLE_SUPER_ADMIN")) {
         if ($videoYoutubeData["length_seconds"] > 330) {
             return new JsonResponse(array("type" => "alert", "message" => "La vidéo Youtube dépasse les 3m 30s"), 200);
         }
         /**
          * @var $videos Video[]
          * @var $videoRepository EntityRepository
          */
         $videoRepository = $this->getDoctrine()->getManager()->getRepository("AppBundle:Video");
         $videos = $videoRepository->createQueryBuilder("v")->andWhere("v.user = :user")->setParameter(":user", $this->getUser())->addOrderBy("v.creationDate", "ASC")->getQuery()->getResult();
         if (count($videos) > 0) {
             return new JsonResponse(array("type" => "alert", "message" => "Vous avez déjà une vidéo en file d'attente. Veuillez attendre sa lecture avant d'en soumettre une autre."), 200);
         }
         foreach ($videos as $video) {
             $youtube = $video->getYoutube();
             if ($youtube["video_id"] == $matches[1]) {
                 return new JsonResponse(array("type" => "alert", "message" => "Cette vidéo est déjà présente dans la liste d'attente. Veuillez attendre sa lecture avant de la soumettre à nouveau."), 200);
             }
         }
     }
     $video = new Video();
     $video->setUser($this->getUser());
     $video->setYoutube($videoYoutubeData);
     $this->getDoctrine()->getManager()->persist($video);
     $this->getDoctrine()->getManager()->flush();
     return new JsonResponse(array("type" => "success", "message" => "Votre vidéo Youtube a été ajoutée"), 201);
 }
Exemple #2
0
 /**
  * Add videos
  *
  * @param \AppBundle\Entity\Video $videos
  * @return User
  */
 public function addVideo(\AppBundle\Entity\Video $videos)
 {
     $this->videos[] = $videos;
     $videos->setUser($this);
     return $this;
 }
Exemple #3
0
 /**
  * @Template()
  */
 public function uploadAction()
 {
     $video = new Video();
     $video->setUser($this->getUser());
     $form = $this->createFormBuilder($video)->add('title', 'text')->add('description', 'text')->add('status', 'choice', array('choices' => array('private' => 'Private', 'link' => 'Link', 'public' => 'Public'), 'required' => true))->add('file', 'file')->getForm();
     $error = 'Something wrong has been detected !';
     if ($this->getRequest()->isMethod('POST')) {
         $form->handleRequest($this->getRequest());
         if ($form->isValid()) {
             $file = $video->getFile();
             if ($file->getClientOriginalExtension() == 'mp4' && $file->getClientSize() <= $file->getMaxFilesize()) {
                 $em = $this->getDoctrine()->getManager();
                 $em->persist($video);
                 $em->flush();
                 $video->setHash(md5($video->getId()));
                 $video->setShareUrl("/video/link/" . $video->getHash());
                 $isUploaded = $video->upload();
                 if (!$isUploaded) {
                     $em->remove($video);
                     $em->flush();
                     return array('form' => $form->createView(), 'error' => $error);
                 } else {
                     chdir($video->getUploadRootDir());
                     exec("ffmpeg -i " . $video->getPath() . " -ss 00:00:05.000 -f image2 -vframes 1 " . $video->getId() . ".png");
                     $em->persist($video);
                     $em->flush();
                 }
                 return $this->redirect($this->generateUrl('user_video'));
             } else {
                 return array('form' => $form->createView(), 'error' => $error);
             }
         } else {
             return array('form' => $form->createView(), 'error' => $error);
         }
     }
     return array('form' => $form->createView());
 }