src/Controller/Blog/PagesController.php line 59

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