src/Controller/Blog/PagesController.php line 65

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Blog;
  3. use App\Entity\Articles\Articles;
  4. use App\Entity\Core\Users;
  5. use App\Entity\Pages\Pages;
  6. use App\Entity\Pages\PagesHasBlocks;
  7. use App\Entity\Pages\PagesHasLanguages;
  8. use App\Form\Articles\ContactForm;
  9. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  10. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  13. use Symfony\Component\HttpFoundation\Session\Session;
  14. use Symfony\Component\Filesystem\Filesystem;
  15. use Symfony\Component\HttpFoundation\BinaryFileResponse;
  16. use Symfony\Component\HttpFoundation\ResponseHeaderBag;
  17. use Symfony\Component\HttpFoundation\StreamedResponse;
  18. use Symfony\Component\HttpFoundation\Response;
  19. use Symfony\Component\HttpFoundation\JsonResponse;
  20. use Symfony\Component\Mailer\Mailer;
  21. use Symfony\Component\Mailer\Transport;
  22. use Symfony\Component\Mime\Address;
  23. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  24. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  25. use Symfony\Component\Form\Extension\Core\Type\TextType;
  26. use Doctrine\ORM\EntityManagerInterface;
  27. use Knp\Component\Pager\PaginatorInterface;
  28. /**
  29.  * Gestion des pages
  30.  */
  31. class PagesController extends AbstractController
  32. {
  33.     private $em;
  34.     private $paginator;
  35.     public function __construct(EntityManagerInterface $em,
  36.                                 PaginatorInterface $paginator
  37.     ) {
  38.         $this->em = $em;
  39.         $this->paginator = $paginator;
  40.     }
  41.     /**
  42.      * 1er niveau
  43.      * @param Request $request
  44.      * @param $folderslug
  45.      * @return mixed
  46.      */
  47.     public function fiche(Request $request, $folderslug)
  48.     {
  49.         $session = $request->getSession();
  50.         $user = $this->getUser();
  51.         if ($request->query->has('aecid')) {
  52.             $aecid = $request->query->get('aecid');
  53.             $session->set("ae", $aecid);
  54.         }
  55.         if($request->getLocale() != null) {
  56.             $lang = $request->getLocale();
  57.             $session->set("lang",$lang);
  58.             if($user != null) {
  59.                 $user->setLanguage($lang);
  60.                 $this->em->persist($user);
  61.                 $this->em->flush();
  62.             }
  63.         }
  64.         if(empty($lang)) {
  65.             $session->set("lang","en");
  66.             $lang = "en";
  67.         }
  68.         $articlePage = $this->em->getRepository(Articles::class)->getPage($lang,$folderslug);
  69.         if($articlePage !== null) {
  70.             $user = $this->getUser();
  71.             if($user == null) {
  72.                 if($articlePage->getPublishedAt() === null) {
  73.                     return $this->redirectToRoute('homepage');
  74.                 }
  75.             } else {
  76.                 $grant = $this->em->getRepository(Users::class)->userHasRole($user->getId(),"ROLE_SUPER_ADMIN");
  77.                 if($grant == "0") {
  78.                     if($articlePage->getPublishedAt() === null) {
  79.                         return $this->redirectToRoute('homepage');
  80.                     }
  81.                 }
  82.             }
  83.             return $this->render('vitrine/articles/page_article.html.twig',[
  84.                 'article' => $articlePage,
  85.                 'lang' => $lang
  86.             ]);
  87.         }
  88.         $page = $this->em->getRepository(Pages::class)->getPage($lang,$folderslug);
  89.         if(!$page) {
  90.             Throw new \Exception("No page registered with the slug ".$folderslug);
  91.         }
  92.         $user = $this->getUser();
  93.         if($user == null) {
  94.             if($page->getType() == "brouillon") {
  95.                 return $this->redirectToRoute('homepage');
  96.             }
  97.             if(!empty($page->getRedirect())) {
  98.                 return $this->redirect($page->getRedirect());
  99.             }
  100.         } else {
  101.             $grant = $this->em->getRepository(Users::class)->userHasRole($user->getId(),"ROLE_SUPER_ADMIN");
  102.             if($grant == "0") {
  103.                 if($page->getType() == "brouillon") {
  104.                     return $this->redirectToRoute('homepage');
  105.                 }
  106.                 if(!empty($page->getRedirect())) {
  107.                     return $this->redirect($page->getRedirect());
  108.                 }
  109.             }
  110.         }
  111.         $blocks = $this->em->getRepository(PagesHasBlocks::class)->findBy(['page' => $page, 'type' => 'prod', 'startPage' => false],['sequence' => 'ASC']);
  112.         $page->setViews((int)$page->getViews() + 1);
  113.         $this->em->persist($page);
  114.         $this->em->flush();
  115.         return $this->render('vitrine/page.html.twig',[
  116.             'page' => $page,
  117.             'blocks' => $blocks,
  118.             'lang' => $lang
  119.         ]);
  120.     }
  121.     /**
  122.      * 2ème niveau
  123.      * @param Request $request
  124.      * @param $folderslug
  125.      * @param $folderslug2
  126.      * @return mixed
  127.      */
  128.     public function fiche2(Request $request, $folderslug, $folderslug2)
  129.     {
  130.         $session = $request->getSession();
  131.         $user = $this->getUser();
  132.         if ($request->query->has('aecid')) {
  133.             $aecid = $request->query->get('aecid');
  134.             $session->set("ae", $aecid);
  135.         }
  136.         if($request->getLocale() != null) {
  137.             $lang = $request->getLocale();
  138.             $session->set("lang",$lang);
  139.             if($user != null) {
  140.                 $user->setLanguage($lang);
  141.                 $this->em->persist($user);
  142.                 $this->em->flush();
  143.             }
  144.         }
  145.         if(empty($lang)) {
  146.             $session->set("lang","en");
  147.             $lang = "en";
  148.         }
  149.         $articlePage = $this->em->getRepository(Articles::class)->getPage($lang,$folderslug,$folderslug2);
  150.         if($articlePage !== null) {
  151.             $user = $this->getUser();
  152.             if($user == null) {
  153.                 if($articlePage->getPublishedAt() === null) {
  154.                     return $this->redirectToRoute('homepage');
  155.                 }
  156.             } else {
  157.                 $grant = $this->em->getRepository(Users::class)->userHasRole($user->getId(),"ROLE_SUPER_ADMIN");
  158.                 if($grant == "0") {
  159.                     if($articlePage->getPublishedAt() === null) {
  160.                         return $this->redirectToRoute('homepage');
  161.                     }
  162.                 }
  163.             }
  164.             return $this->render('vitrine/articles/page_article.html.twig',[
  165.                 'article' => $articlePage,
  166.                 'lang' => $lang
  167.             ]);
  168.         }
  169.         
  170.         $page = $this->em->getRepository(Pages::class)->getPage($lang,$folderslug,$folderslug2);
  171.         if(!$page) {
  172.             Throw new \Exception("No page registered with the slug ".$folderslug."/".$folderslug2);
  173.         }
  174.         $user = $this->getUser();
  175.         if($user == null) {
  176.             if($page->getType() == "brouillon") {
  177.                 return $this->redirectToRoute('homepage');
  178.             }
  179.             if(!empty($page->getRedirect())) {
  180.                 return $this->redirect($page->getRedirect());
  181.             }
  182.         } else {
  183.             $grant = $this->em->getRepository(Users::class)->userHasRole($user->getId(),"ROLE_SUPER_ADMIN");
  184.             if($grant == "0") {
  185.                 if($page->getType() == "brouillon") {
  186.                     return $this->redirectToRoute('homepage');
  187.                 }
  188.                 if(!empty($page->getRedirect())) {
  189.                     return $this->redirect($page->getRedirect());
  190.                 }
  191.             }
  192.         }
  193.         $blocks = $this->em->getRepository(PagesHasBlocks::class)->findBy(['page' => $page, 'type' => 'prod', 'startPage' => false],['sequence' => 'ASC']);
  194.         $page->setViews((int)$page->getViews() + 1);
  195.         $this->em->persist($page);
  196.         $this->em->flush();
  197.         return $this->render('vitrine/page.html.twig',[
  198.             'page' => $page,
  199.             'blocks' => $blocks,
  200.             'lang' => $lang
  201.         ]);
  202.     }
  203.     /**
  204.      * 3ème niveau
  205.      * @param Request $request
  206.      * @param $folderslug
  207.      * @param $folderslug2
  208.      * @param $folderslug3
  209.      * @return mixed
  210.      */
  211.     public function fiche3(Request $request, $folderslug, $folderslug2, $folderslug3)
  212.     {
  213.         $session = $request->getSession();
  214.         $user = $this->getUser();
  215.         if ($request->query->has('aecid')) {
  216.             $aecid = $request->query->get('aecid');
  217.             $session->set("ae", $aecid);
  218.         }
  219.         if($request->getLocale() != null) {
  220.             $lang = $request->getLocale();
  221.             $session->set("lang",$lang);
  222.             if($user != null) {
  223.                 $user->setLanguage($lang);
  224.                 $this->em->persist($user);
  225.                 $this->em->flush();
  226.             }
  227.         }
  228.         if(empty($lang)) {
  229.             $session->set("lang","en");
  230.             $lang = "en";
  231.         }
  232.         $articlePage = $this->em->getRepository(Articles::class)->getPage($lang,$folderslug,$folderslug2,$folderslug3);
  233.         if($articlePage !== null) {
  234.             $user = $this->getUser();
  235.             if($user == null) {
  236.                 if($articlePage->getPublishedAt() === null) {
  237.                     return $this->redirectToRoute('homepage');
  238.                 }
  239.             } else {
  240.                 $grant = $this->em->getRepository(Users::class)->userHasRole($user->getId(),"ROLE_SUPER_ADMIN");
  241.                 if($grant == "0") {
  242.                     if($articlePage->getPublishedAt() === null) {
  243.                         return $this->redirectToRoute('homepage');
  244.                     }
  245.                 }
  246.             }
  247.             return $this->render('vitrine/articles/page_article.html.twig',[
  248.                 'article' => $articlePage,
  249.                 'lang' => $lang
  250.             ]);
  251.         }
  252.         
  253.         $page = $this->em->getRepository(Pages::class)->getPage($lang,$folderslug,$folderslug2,$folderslug3);
  254.         if(!$page) {
  255.             Throw new \Exception("No page registered with the slug ".$folderslug."/".$folderslug2."/".$folderslug3);
  256.         }
  257.         $user = $this->getUser();
  258.         if($user == null) {
  259.             if($page->getType() == "brouillon") {
  260.                 return $this->redirectToRoute('homepage');
  261.             }
  262.             if(!empty($page->getRedirect())) {
  263.                 return $this->redirect($page->getRedirect());
  264.             }
  265.         } else {
  266.             $grant = $this->em->getRepository(Users::class)->userHasRole($user->getId(),"ROLE_SUPER_ADMIN");
  267.             if($grant == "0") {
  268.                 if($page->getType() == "brouillon") {
  269.                     return $this->redirectToRoute('homepage');
  270.                 }
  271.                 if(!empty($page->getRedirect())) {
  272.                     return $this->redirect($page->getRedirect());
  273.                 }
  274.             }
  275.         }
  276.         $blocks = $this->em->getRepository(PagesHasBlocks::class)->findBy(['page' => $page, 'type' => 'prod', 'startPage' => false],['sequence' => 'ASC']);
  277.         $page->setViews((int)$page->getViews() + 1);
  278.         $this->em->persist($page);
  279.         $this->em->flush();
  280.         return $this->render('vitrine/page.html.twig',[
  281.             'page' => $page,
  282.             'blocks' => $blocks,
  283.             'lang' => $lang
  284.         ]);
  285.     }
  286. }