src/Controller/Blog/ArticlesController.php line 50

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Blog;
  3. use App\Entity\Articles\Articles;
  4. use App\Entity\Articles\ArticlesHasCategories;
  5. use App\Entity\Pages\Pages;
  6. use App\Entity\Seo\Redirection;
  7. use App\Services\Seo\Redir;
  8. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Cache;
  9. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  10. use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\Routing\Annotation\Route;
  16. use Doctrine\ORM\EntityManagerInterface;
  17. use Knp\Component\Pager\PaginatorInterface;
  18. /**
  19. * Système d'articles
  20. */
  21. class ArticlesController extends AbstractController
  22. {
  23. private $em;
  24. private $paginator;
  25. public function __construct(EntityManagerInterface $em,
  26. PaginatorInterface $paginator, Redir $redir
  27. ) {
  28. $this->em = $em;
  29. $this->paginator = $paginator;
  30. $this->redir = $redir;
  31. }
  32. public function articles(Request $request)
  33. {
  34. $session = $request->getSession();
  35. $user = $this->getUser();
  36. if ($request->query->has('aecid')) {
  37. $aecid = $request->query->get('aecid');
  38. $session->set("ae", $aecid);
  39. }
  40. if($request->getLocale() != null) {
  41. $lang = $request->getLocale();
  42. $session->set("lang",$lang);
  43. if($user != null) {
  44. $user->setLanguage($lang);
  45. $this->em->persist($user);
  46. $this->em->flush();
  47. }
  48. }
  49. if(empty($lang)) {
  50. $session->set("lang","en");
  51. $lang = "en";
  52. }
  53. $page = $this->em->getRepository(Pages::class)->findOneBy(['name' => 'articles', 'locale' => $lang]);
  54. $articles = $this->em->getRepository(Articles::class)->getLocaleWebsite($lang);
  55. $page->setViews((int)$page->getViews() + 1);
  56. $this->em->persist($page);
  57. $this->em->flush();
  58. return $this->render('vitrine/articles/list.html.twig', [
  59. 'articles' => $articles,
  60. 'page' => $page,
  61. 'lang' => $lang
  62. ]);
  63. }
  64. public function parentCategory(Request $request, $slug)
  65. {
  66. $session = $request->getSession();
  67. $user = $this->getUser();
  68. if ($request->query->has('aecid')) {
  69. $aecid = $request->query->get('aecid');
  70. $session->set("ae", $aecid);
  71. }
  72. if($request->getLocale() != null) {
  73. $lang = $request->getLocale();
  74. $session->set("lang",$lang);
  75. if($user != null) {
  76. $user->setLanguage($lang);
  77. $this->em->persist($user);
  78. $this->em->flush();
  79. }
  80. }
  81. if(empty($lang)) {
  82. $session->set("lang","en");
  83. $lang = "en";
  84. }
  85. $parentCategory = $this->em->getRepository(ArticlesHasCategories::class)->findOneBy(['parent' => true, 'slug' => $slug, 'locale' => $lang]);
  86. $page = $this->em->getRepository(Pages::class)->findOneBy(['name' => 'articles', 'locale' => $lang]);
  87. $articles = $this->em->getRepository(Articles::class)->getLocaleParentWebsite($lang,$parentCategory);
  88. return $this->render('vitrine/articles/parent_category.html.twig', [
  89. 'articles' => $articles,
  90. 'parentCategory' => $parentCategory,
  91. 'page' => $page,
  92. 'lang' => $lang
  93. ]);
  94. }
  95. public function category(Request $request, $slug, $slug2)
  96. {
  97. $session = $request->getSession();
  98. $user = $this->getUser();
  99. if ($request->query->has('aecid')) {
  100. $aecid = $request->query->get('aecid');
  101. $session->set("ae", $aecid);
  102. }
  103. if($request->getLocale() != null) {
  104. $lang = $request->getLocale();
  105. $session->set("lang",$lang);
  106. if($user != null) {
  107. $user->setLanguage($lang);
  108. $this->em->persist($user);
  109. $this->em->flush();
  110. }
  111. }
  112. if(empty($lang)) {
  113. $session->set("lang","en");
  114. $lang = "en";
  115. }
  116. $parentCategory = $this->em->getRepository(ArticlesHasCategories::class)->findOneBy(['parent' => true, 'slug' => $slug, 'locale' => $lang]);
  117. $category = $this->em->getRepository(ArticlesHasCategories::class)->findOneBy(['slug' => $slug2, 'locale' => $lang]);
  118. $page = $this->em->getRepository(Pages::class)->findOneBy(['name' => 'articles', 'locale' => $lang]);
  119. $articles = $this->em->getRepository(Articles::class)->getLocaleCategoryWebsite($lang,$category);
  120. return $this->render('vitrine/articles/category.html.twig', [
  121. 'articles' => $articles,
  122. 'parentCategory' => $parentCategory,
  123. 'category' => $category,
  124. 'page' => $page,
  125. 'lang' => $lang
  126. ]);
  127. }
  128. public function article(Request $request, $slug)
  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. $article = $this->em->getRepository(Articles::class)->getArticleWebsite($slug,$lang);
  146. if($article == null) {
  147. $article = $this->em->getRepository(Articles::class)->getArticleWebsite($slug,"en");
  148. }
  149. if ($this->isGranted('ROLE_SUPER_ADMIN')) {
  150. $article = $this->em->getRepository(Articles::class)->findOneBy(["slug" => $slug, "locale" => $lang]);
  151. }
  152. if(empty($lang)) {
  153. $session->set("lang","en");
  154. $lang = "en";
  155. }
  156. if (!$this->isGranted('ROLE_SUPER_ADMIN')) {
  157. if ($article->getVisibility() === false) {
  158. return $this->redirectToRoute('homepage');
  159. }
  160. }
  161. if($article->isOnlyPage() === true) {
  162. if(!empty($article->getPageSlug3())) {
  163. if($lang == "en") {
  164. return $this->redirect('/'.$article->getPageSlug().'/'.$article->getPageSlug2().'/'.$article->getPageSlug3());
  165. }
  166. return $this->redirect('/'.$lang.'/'.$article->getPageSlug().'/'.$article->getPageSlug2().'/'.$article->getPageSlug3());
  167. }
  168. if(!empty($article->getPageSlug2())) {
  169. if($lang == "en") {
  170. return $this->redirect('/'.$article->getPageSlug().'/'.$article->getPageSlug2());
  171. }
  172. return $this->redirect('/'.$lang.'/'.$article->getPageSlug().'/'.$article->getPageSlug2());
  173. }
  174. if(!empty($article->getPageSlug())) {
  175. if($lang == "en") {
  176. return $this->redirect('/'.$article->getPageSlug());
  177. }
  178. return $this->redirect('/'.$lang.'/'.$article->getPageSlug());
  179. }
  180. return $this->redirectToRoute('homepage');
  181. }
  182. return $this->render('vitrine/articles/article.html.twig',[
  183. 'article' => $article,
  184. 'lang' => $lang
  185. ]);
  186. }
  187. }