<?php
namespace 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 App\Form\Articles\ContactForm;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
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\Mailer\Mailer;
use Symfony\Component\Mailer\Transport;
use Symfony\Component\Mime\Address;
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
]);
}
}