public function uploadAction(request $request, $id, $type) { //we get the user entity $user = $this->container->get('security.context')->getToken()->getUser(); // On crée un objet Video $video = new Video(); $video->setType($type); //getting the code for the video $service = $this->container->get('bf_site.randomcode'); $code = $service->generate('video'); $video->setCode($code); //the upload is for a challenge video if ($type == 'challenge') { $challenge = $this->getDoctrine()->getManager()->getRepository('BFSiteBundle:Challenge')->findOneBy(array('id' => $id)); //we verify if the user already uploaded a video. $repository = $this->getDoctrine()->getManager()->getRepository('BFSiteBundle:Video'); $oldVideo = $repository->checkChallenge($user, $challenge); if (null !== $oldVideo) { //The user alreday has a video in the directory. $oldScore = $oldVideo->getScore(); $points = $user->getPoints() - $oldScore; $user->setPoints($points); } $video->setDate(new \Datetime())->setUser($user)->setChallenge($challenge); $form = $this->get('form.factory')->create(new VideoType(), $video); if ($form->handleRequest($request)->isValid()) { $em = $this->getDoctrine()->getManager(); $service = $this->container->get('bf_admin.videopoints'); $service->videoPoints($video); //we convert the video to the right size and with the watermark $exploded = explode('/', $video->getSource()); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'http://v.bestfootball.fr/test/convert.php?file=' . $exploded[3]); $retour = curl_exec($curl); curl_close($curl); //sending a mail to all lower repetitions //$challengeMailer = $this->container->get('bf_site.challengeMailer'); //$result = $challengeMailer->ChallengeMail($video, $video->getChallenge()); $this->addFlash('success', 'Your video was uploaded to our servers and you received ' . $video->getScore() . ' points for this video.'); return $this->redirect($this->generateUrl('bf_site_videos')); } return $this->render('BFSiteBundle:Video:upload.html.twig', array('form' => $form->createView())); } //the upload is for a duel video if ($type == 'duel') { //we check if the user has the right to upload his video for this duel. (if it is his duel) $repository = $this->getDoctrine()->getManager()->getRepository('BFSiteBundle:Duel'); $duel = $repository->findOneBy(array('id' => $id)); if ($duel->getHost() == $user || $duel->getGuest() == $user) { //We verify if the user and duel correspond $video->setDate(new \Datetime())->setDuel($duel)->setUser($user)->setScore('0'); //the user is the guest for the duel if ($duel->getGuest() == $user) { //check if he already uploaded a file. In that case we redirect him to the challenges page. if ($duel->getGuestCompleted() == '1') { $this->addFlash('warning', 'You already uploaded a video for this duel. You can only upload one video/duel.'); return $this->redirectToRoute('bf_site_profile_duels'); } else { $duel->setGuestCompleted('1'); $userRole = 'guest'; } } //the user is the Host for the duel if ($duel->getHost() == $user) { //check if he already uploaded a file. In that case we redirect him to the challenges page. if ($duel->getHostCompleted() == '1') { $this->addFlash('warning', 'You already uploaded a video for this duel. You can only upload one video/duel.'); return $this->redirectToRoute('bf_site_profile_duels'); } else { $duel->setHostCompleted('1'); $userRole = 'host'; } } //we check if the user has a video for this challenge. $highVideo = $this->getDoctrine()->getManager()->getRepository('BFSiteBundle:Video')->highestVideo($user, $duel->getChallenge()); $form = $this->get('form.factory')->create(new VideoDuelType(), $video); if ($form->handleRequest($request)->isValid()) { $em = $this->getDoctrine()->getManager(); $host = $duel->getHost(); $guest = $duel->getGuest(); if ($duel->getHostCompleted() == 1 && $duel->getGuestCompleted() == 1) { //both the players uploaded their video. We can now set the complete off the duel to 1 $duel->setCompleted('1'); //now we look at the video with the highest repitions and we give 50 points to the winner. //get the video of the other player if ($userRole == 'host') { $otherVideo = $this->getDoctrine()->getManager()->getRepository('BFSiteBundle:Video')->duelGuestVideo($guest, $duel); $hostscore = $video->getRepetitions(); $guestscore = $otherVideo->getRepetitions(); } elseif ($userRole == 'guest') { $otherVideo = $this->getDoctrine()->getManager()->getRepository('BFSiteBundle:Video')->duelHostVideo($host, $duel); $guestscore = $video->getRepetitions(); $hostscore = $otherVideo->getRepetitions(); } //we get compare the host to the guest score if ($hostscore > $guestscore) { //host wins $points = $host->getDuelPoints() + 100; $host->setDuelPoints($points); $wins = $host->getDuelWins() + 1; $host->setDuelWins($wins); $duel->setWinner($host); $em->persist($duel); $em->persist($host); //notifications $link = $this->generateUrl('bf_site_duel_view', array('id' => $duel->getId())); //host $message = 'Congratulations you won the duel against ' . $guest->getUsername() . ' adn you received 100 points !'; $service = $this->container->get('bf_site.notification'); $notificationhost = $service->create($host, $message, $duel, $link); //guest $message = 'unfortunately you lost the duel against ' . $host->getUsername(); $service = $this->container->get('bf_site.notification'); $notificationguest = $service->create($guest, $message, $duel, $link); $em->persist($notificationhost); $em->persist($notificationguest); } elseif ($hostscore < $guestscore) { //guest wins $points = $guest->getDuelPoints() + 100; $guest->setDuelPoints($points); $wins = $guest->getDuelWins() + 1; $guest->setDuelWins($wins); $duel->setWinner($guest); $em->persist($duel); $em->persist($guest); //notifications $link = $this->generateUrl('bf_site_duel_view', array('id' => $duel->getId())); //guest $message = 'Congratulations you won the duel against ' . $host->getUsername() . ' adn you received 100 points !'; $service = $this->container->get('bf_site.notification'); $notificationguest = $service->create($guest, $message, $duel, $link); //host $message = 'unfortunately you lost the duel against ' . $guest->getUsername(); $service = $this->container->get('bf_site.notification'); $notificationhost = $service->create($host, $message, $duel, $link); $em->persist($notificationhost); $em->persist($notificationguest); } elseif ($hostscore == $guestscore) { //same score,each 50 points //host points $points = $host->getDuelPoints() + 50; $host->setDuelPoints($points); $em->persist($host); //guest points $points = $guest->getDuelPoints() + 50; $guest->setDuelPoints($points); $em->persist($guest); //notifications $link = $this->generateUrl('bf_site_duel_view', array('id' => $duel->getId())); //host $message = 'Congratulations, the duel against ' . $guest->getUsername() . ' was a tie and you received 50 points !'; $service = $this->container->get('bf_site.notification'); $notificationhost = $service->create($host, $message, $duel, $link); //guest $message = 'Congratulations, the duel against ' . $host->getUsername() . ' was a tie and you received 50 points !'; $service = $this->container->get('bf_site.notification'); $notificationguest = $service->create($guest, $message, $duel, $link); $em->persist($notificationhost); $em->persist($notificationguest); } } //now we update the points of the user $em->persist($video); $em->persist($duel); $em->flush(); //we convert the video to the right size and with the watermark $exploded = explode('/', $video->getSource()); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'http://v.bestfootball.fr/test/convert.php?file=' . $exploded[3]); $retour = curl_exec($curl); curl_close($curl); $this->addFlash('success', 'Your video was uploaded to our servers.'); return $this->redirect($this->generateUrl('bf_site_videos')); } return $this->render('BFSiteBundle:Video:uploadDuel.html.twig', array('form' => $form->createView(), 'highVideo' => $highVideo, 'duel' => $duel)); } else { $this->addFlash('warning', 'You are not allowed to post a video to this Duel because it is not your duel'); return $this->redirectToRoute('bf_site_challenges'); } } if ($type == 'freestyle') { $video->setDate(new \Datetime())->setUser($user)->setScore('0')->setRepetitions(0); //frestyle section upload $form = $this->get('form.factory')->create(new VideoFreestyleType(), $video); if ($form->handleRequest($request)->isValid()) { $em = $this->getDoctrine()->getManager(); $em->persist($video); $em->flush(); //we convert the video to the right size and with the watermark $exploded = explode('/', $video->getSource()); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'http://v.bestfootball.fr/test/convert.php?file=' . $exploded[3]); $retour = curl_exec($curl); curl_close($curl); $this->addFlash('success', 'Your video was uploaded to our servers.'); return $this->redirect($this->generateUrl('bf_site_videos')); } return $this->render('BFSiteBundle:Video:uploadFreestyle.html.twig', array('form' => $form->createView())); } }