src/Controller/MediaController.php line 65

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Component\Routing\Annotation\Route;
  4. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  5. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  6. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
  7. use Symfony\Component\Routing\RouterInterface;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use App\Form\MediaFormType;
  11. use JMS\Serializer\SerializerBuilder;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use App\Entity\Media;
  14. use App\Entity\Newsfeed;
  15. use Symfony\Contracts\Translation\TranslatorInterface;
  16. class MediaController extends AbstractController 
  17. {
  18.     private $session;
  19.     private $em;
  20.     private $translator;
  21.     private $router;
  22.     public function __construct(EntityManagerInterface $emTranslatorInterface $translatorRouterInterface $routerSessionInterface $session)
  23.     {
  24.         $this->em $em;
  25.         $this->translator $translator;
  26.         $this->router $router;
  27.         $this->session $session;
  28.     }
  29.     
  30.     private function get_media_new(TranslatorInterface $translator) {
  31.         $repository $this->getDoctrine()->getRepository(Media::class);
  32.         $new $repository->findby(array('approved' => 0),array('time' => 'DESC'));
  33.         return $new;
  34.     }
  35.     private function get_media_approved(TranslatorInterface $translator) {
  36.         $repository $this->getDoctrine()->getRepository(Media::class);
  37.         $approved $repository->findby(array('approved' => 1),array('time' => 'DESC'));
  38.         return $approved;
  39.     }
  40.     /**
  41.      * @Route("/othermedia", name="media")
  42.      */
  43.     public function index(TranslatorInterface $translator)
  44.     {
  45.         $items $this->get_media_approved($translator);
  46.         return $this->render('media.html.twig', [
  47.             'items' => $items,
  48.         ]);
  49.     }
  50.     /**
  51.      * @Route("/othermedia/{id}", name="media_item")
  52.      */
  53.     public function item(Media $media)
  54.     {
  55.         return $this->render('media_item.html.twig', [
  56.             'item' => $media,
  57.         ]);
  58.     }
  59.     /**
  60.      * @Route("/othermedia/add", name="media_add")
  61.      * @Route("/moderate/othermedia/add", name="media_moderate_add")
  62.      */
  63.     public function add(EntityManagerInterface $emRequest $requestTranslatorInterface $translator)
  64.     {
  65.         $routeName $request->attributes->get('_route');
  66.         if($routeName == 'media_add'){
  67.             $this->denyAccessUnlessGranted('ROLE_USER');
  68.             if($_ENV['DISABLE_FORMS'] == "true") { return $this->render('maintenance_form_disabled.html.twig'); }
  69.         } else {
  70.             $this->denyAccessUnlessGranted('ROLE_MOD_MEDIA');
  71.         }
  72.         $form $this->createForm(MediaFormType::class);
  73.         $form->handleRequest($request);
  74.         if ($form->isSubmitted() && $form->isValid()){
  75.             $media $form->getData();
  76.             $media->setUserId($this->getUser()->getId());
  77.             $media->setUsername($this->getUser()->getUsername());
  78.             $media->setApproved('0');
  79.             $media->setTime(new \DateTime('now'));
  80.             $em->persist($media);
  81.             $em->flush();
  82.             $this->addFlash('success'$translator->trans("Media toegevoegd"));
  83.             return $this->redirectToRoute('media');
  84.         }
  85.         return $this->render('form_edit.html.twig', [
  86.             'title' => $translator->trans("media toevoegen"),
  87.             'form' => $form->createView()
  88.         ]);
  89.     }
  90.     /**
  91.      * @Route("/moderate/othermedia", name="media_moderate")
  92.      */
  93.     public function moderate(Request $requestTranslatorInterface $translator)
  94.     {
  95.         $this->denyAccessUnlessGranted('ROLE_MOD_MEDIA');
  96.         $new $this->get_media_new($translator);
  97.         $approved $this->get_media_approved($translator);
  98.         $merged array_merge($new,$approved);
  99.         return $this->render('media_moderate.html.twig', [
  100.             'items' => $merged,
  101.         ]);
  102.     }
  103.     /**
  104.      * @Route("/moderate/othermedia/{id}/edit", name="media_moderate_edit")
  105.      */
  106.     public function edit(Media $mediaEntityManagerInterface $emRequest $requestTranslatorInterface $translator)
  107.     {
  108.         $this->denyAccessUnlessGranted('ROLE_MOD_MEDIA');
  109.         $form $this->createForm(MediaFormType::class, $media);
  110.         $form->handleRequest($request);
  111.         if ($form->isSubmitted() && $form->isValid()){
  112.             $media $form->getData();
  113.             $media->setApprovedUserId($this->getUser()->getId());
  114.             $media->setApprovedUsername($this->getUser()->getUsername());
  115.             $em->persist($media);
  116.             $em->flush();
  117.             $this->addFlash('success'$translator->trans("Media bijgewerkt"));
  118.             
  119.             return $this->redirectToRoute('media_moderate');
  120.         }
  121.         return $this->render('form_edit.html.twig', [
  122.             'title' => $translator->trans("Media bewerken"),
  123.             'form' => $form->createView()
  124.         ]);
  125.     }
  126.     /**
  127.      * @Route("/moderate/othermedia/{id}/approve", name="media_moderate_approve")
  128.      */
  129.     public function moderate_approve(int $idMedia $mediaEntityManagerInterface $emTranslatorInterface $translator)
  130.     {
  131.         $this->denyAccessUnlessGranted('ROLE_MOD_MEDIA');
  132.         $media->setApprovedUserId($this->getUser()->getId());
  133.         $media->setApprovedUsername($this->getUser()->getUsername());
  134.         $media->setApproved('1');
  135.         $em->persist($media);
  136.         $em->flush();
  137.         $repository $em->getRepository(SearchItems::class);
  138.         $searchitem $repository->findOneBy(array('path' => $this->router->generate('media_item', [ 'id' => $media->getId()]) ));
  139.         if(!$searchitem) {
  140.             $searchitem = new SearchItems();
  141.         }
  142.         $searchitem->setType('media');
  143.         $searchitem->setPath($this->router->generate('media_item', [ 'id' => $media->getId()]));
  144.         $searchitem->setNameNl($media->getMmedium().': '.$media->getTitleNl());
  145.         $searchitem->setNameEn($media->getMmedium().': '.$media->getTitleEn());
  146.         $searchitem->setKeywordsNl($media->getMmedium().', '.$media->getTitleNl());
  147.         $searchitem->setKeywordsEn($media->getMmedium().', '.$media->getTitleEn());
  148.         $searchitem->setLastUpdateTime($media->getTime());
  149.         $this->em->persist($searchitem);
  150.         $newsfeed = new Newsfeed();
  151.         $newsfeed->setTitleNl($media->getMedium().": ".$media->getTitleNl());
  152.         $newsfeed->setTitleEn($media->getMedium().": ".$media->getTitleEn());
  153.         $newsfeed->setRemoteId($media->getId());
  154.         $newsfeed->setType('media');
  155.         $newsfeed->setIsUpdate(0);
  156.         $newsfeed->setTime(new \DateTime());
  157.         $em $this->getDoctrine()->getManager();
  158.         $em->persist($newsfeed);
  159.         $em->flush();
  160.         $this->addFlash('success'$translator->trans("Media goedgekeurd"));
  161.         return $this->redirectToRoute('media_moderate');
  162.     }
  163.     /**
  164.      * @Route("/moderate/othermedia/{id}/delete", name="media_moderate_delete")
  165.      */
  166.     public function moderate_delete(int $idMedia $mediaEntityManagerInterface $emTranslatorInterface $translator)
  167.     {
  168.         $this->denyAccessUnlessGranted('ROLE_MOD_MEDIA');
  169.         $repository $em->getRepository(SearchItems::class);
  170.         $searchitem $repository->findOneBy(array('path' => $this->router->generate('media_item', [ 'id' => $media->getId()]) ));
  171.         if($searchitem){
  172.             $em->remove($searchitem);
  173.             $em->flush();
  174.         }
  175.         $em->remove($media);
  176.         $em->flush();
  177.         $this->addFlash('success'$translator->trans("Media verwijderd"));
  178.         return $this->redirectToRoute('media_moderate');
  179.     }
  180. }