<?phpnamespace App\Controller\Blog;use App\Entity\Articles\Articles;use App\Entity\Core\Users;use App\Entity\Pages\Pages;use App\Entity\Pages\PagesHasBlocks;use App\Entity\Pages\PagesHasLanguages;use Symfony\Component\HttpFoundation\Request;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\HttpFoundation\Session\Session;use Symfony\Component\Filesystem\Filesystem;use Symfony\Component\HttpFoundation\BinaryFileResponse;use Symfony\Component\HttpFoundation\ResponseHeaderBag;use Symfony\Component\HttpFoundation\StreamedResponse;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\HttpFoundation\JsonResponse;use Symfony\Component\Routing\Generator\UrlGeneratorInterface;use Symfony\Component\Form\Extension\Core\Type\TextareaType;use Symfony\Component\Form\Extension\Core\Type\TextType;use Doctrine\ORM\EntityManagerInterface;use Knp\Component\Pager\PaginatorInterface;/** * Gestion des pages */class PagesController extends AbstractController{ private $em; private $paginator; public function __construct(EntityManagerInterface $em, PaginatorInterface $paginator ) { $this->em = $em; $this->paginator = $paginator; } /** * 1er niveau * @param Request $request * @param $folderslug * @return mixed */ public function fiche(Request $request, $folderslug) { $session = $request->getSession(); $user = $this->getUser(); if ($request->query->has('aecid')) { $aecid = $request->query->get('aecid'); $session->set("ae", $aecid); } if($request->getLocale() != null) { $lang = $request->getLocale(); $session->set("lang",$lang); if($user != null) { $user->setLanguage($lang); $this->em->persist($user); $this->em->flush(); } } if(empty($lang)) { $session->set("lang","en"); $lang = "en"; } $articlePage = $this->em->getRepository(Articles::class)->getPage($lang,$folderslug); if($articlePage !== null) { $user = $this->getUser(); if($user == null) { if($articlePage->getPublishedAt() === null) { return $this->redirectToRoute('homepage'); } } else { $grant = $this->em->getRepository(Users::class)->userHasRole($user->getId(),"ROLE_SUPER_ADMIN"); if($grant == "0") { if($articlePage->getPublishedAt() === null) { return $this->redirectToRoute('homepage'); } } } return $this->render('vitrine/articles/page_article.html.twig',[ 'article' => $articlePage, 'lang' => $lang ]); } $page = $this->em->getRepository(Pages::class)->getPage($lang,$folderslug); if(!$page) { Throw new \Exception("No page registered with the slug ".$folderslug); } $user = $this->getUser(); if($user == null) { if($page->getType() == "brouillon") { return $this->redirectToRoute('homepage'); } if(!empty($page->getRedirect())) { return $this->redirect($page->getRedirect()); } } else { $grant = $this->em->getRepository(Users::class)->userHasRole($user->getId(),"ROLE_SUPER_ADMIN"); if($grant == "0") { if($page->getType() == "brouillon") { return $this->redirectToRoute('homepage'); } if(!empty($page->getRedirect())) { return $this->redirect($page->getRedirect()); } } } $blocks = $this->em->getRepository(PagesHasBlocks::class)->findBy(['page' => $page, 'type' => 'prod', 'startPage' => false],['sequence' => 'ASC']); $page->setViews((int)$page->getViews() + 1); $this->em->persist($page); $this->em->flush(); return $this->render('vitrine/page.html.twig',[ 'page' => $page, 'blocks' => $blocks, 'lang' => $lang ]); } /** * 2ème niveau * @param Request $request * @param $folderslug * @param $folderslug2 * @return mixed */ public function fiche2(Request $request, $folderslug, $folderslug2) { $session = $request->getSession(); $user = $this->getUser(); if ($request->query->has('aecid')) { $aecid = $request->query->get('aecid'); $session->set("ae", $aecid); } if($request->getLocale() != null) { $lang = $request->getLocale(); $session->set("lang",$lang); if($user != null) { $user->setLanguage($lang); $this->em->persist($user); $this->em->flush(); } } if(empty($lang)) { $session->set("lang","en"); $lang = "en"; } $articlePage = $this->em->getRepository(Articles::class)->getPage($lang,$folderslug,$folderslug2); if($articlePage !== null) { $user = $this->getUser(); if($user == null) { if($articlePage->getPublishedAt() === null) { return $this->redirectToRoute('homepage'); } } else { $grant = $this->em->getRepository(Users::class)->userHasRole($user->getId(),"ROLE_SUPER_ADMIN"); if($grant == "0") { if($articlePage->getPublishedAt() === null) { return $this->redirectToRoute('homepage'); } } } return $this->render('vitrine/articles/page_article.html.twig',[ 'article' => $articlePage, 'lang' => $lang ]); } $page = $this->em->getRepository(Pages::class)->getPage($lang,$folderslug,$folderslug2); if(!$page) { Throw new \Exception("No page registered with the slug ".$folderslug."/".$folderslug2); } $user = $this->getUser(); if($user == null) { if($page->getType() == "brouillon") { return $this->redirectToRoute('homepage'); } if(!empty($page->getRedirect())) { return $this->redirect($page->getRedirect()); } } else { $grant = $this->em->getRepository(Users::class)->userHasRole($user->getId(),"ROLE_SUPER_ADMIN"); if($grant == "0") { if($page->getType() == "brouillon") { return $this->redirectToRoute('homepage'); } if(!empty($page->getRedirect())) { return $this->redirect($page->getRedirect()); } } } $blocks = $this->em->getRepository(PagesHasBlocks::class)->findBy(['page' => $page, 'type' => 'prod', 'startPage' => false],['sequence' => 'ASC']); $page->setViews((int)$page->getViews() + 1); $this->em->persist($page); $this->em->flush(); return $this->render('vitrine/page.html.twig',[ 'page' => $page, 'blocks' => $blocks, 'lang' => $lang ]); } /** * 3ème niveau * @param Request $request * @param $folderslug * @param $folderslug2 * @param $folderslug3 * @return mixed */ public function fiche3(Request $request, $folderslug, $folderslug2, $folderslug3) { $session = $request->getSession(); $user = $this->getUser(); if ($request->query->has('aecid')) { $aecid = $request->query->get('aecid'); $session->set("ae", $aecid); } if($request->getLocale() != null) { $lang = $request->getLocale(); $session->set("lang",$lang); if($user != null) { $user->setLanguage($lang); $this->em->persist($user); $this->em->flush(); } } if(empty($lang)) { $session->set("lang","en"); $lang = "en"; } $articlePage = $this->em->getRepository(Articles::class)->getPage($lang,$folderslug,$folderslug2,$folderslug3); if($articlePage !== null) { $user = $this->getUser(); if($user == null) { if($articlePage->getPublishedAt() === null) { return $this->redirectToRoute('homepage'); } } else { $grant = $this->em->getRepository(Users::class)->userHasRole($user->getId(),"ROLE_SUPER_ADMIN"); if($grant == "0") { if($articlePage->getPublishedAt() === null) { return $this->redirectToRoute('homepage'); } } } return $this->render('vitrine/articles/page_article.html.twig',[ 'article' => $articlePage, 'lang' => $lang ]); } $page = $this->em->getRepository(Pages::class)->getPage($lang,$folderslug,$folderslug2,$folderslug3); if(!$page) { Throw new \Exception("No page registered with the slug ".$folderslug."/".$folderslug2."/".$folderslug3); } $user = $this->getUser(); if($user == null) { if($page->getType() == "brouillon") { return $this->redirectToRoute('homepage'); } if(!empty($page->getRedirect())) { return $this->redirect($page->getRedirect()); } } else { $grant = $this->em->getRepository(Users::class)->userHasRole($user->getId(),"ROLE_SUPER_ADMIN"); if($grant == "0") { if($page->getType() == "brouillon") { return $this->redirectToRoute('homepage'); } if(!empty($page->getRedirect())) { return $this->redirect($page->getRedirect()); } } } $blocks = $this->em->getRepository(PagesHasBlocks::class)->findBy(['page' => $page, 'type' => 'prod', 'startPage' => false],['sequence' => 'ASC']); $page->setViews((int)$page->getViews() + 1); $this->em->persist($page); $this->em->flush(); return $this->render('vitrine/page.html.twig',[ 'page' => $page, 'blocks' => $blocks, 'lang' => $lang ]); }}