src/Controller/NewsController.php line 44

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Normalizer\PostNormalizer;
  4. use App\Service\Internal\CmsService;
  5. use App\Service\Internal\HomePageService;
  6. use App\Utils\DeviceInfo;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\Response;
  9. class NewsController extends AbstractController
  10. {
  11. public function index(
  12. HomePageService $newsPageService,
  13. CmsService $cmsService,
  14. PostNormalizer $postNormalizer
  15. ): Response {
  16. $parameters = $newsPageService->getRenderParameters();
  17. $parameters['isXmlHttpMode'] = true;
  18. $cmsPages = $cmsService->getPages();
  19. $menuPages = [];
  20. $footerPages = [];
  21. foreach ($cmsPages as $page) {
  22. if ($page->hook == 'MENU') {
  23. $menuPages[$page->id] = $page;
  24. }
  25. if ($page->hook == 'FOOTER') {
  26. $footerPages[$page->id] = $page;
  27. }
  28. }
  29. $posts = $cmsService->getPosts();
  30. $posts = $postNormalizer->normalize($posts);
  31. $parameters['menuPages'] = $menuPages;
  32. $parameters['footerPages'] = $footerPages;
  33. $parameters['firstPost'] = current(array_slice($posts, 0, 1));
  34. $parameters['posts'] = array_slice($posts, 1);
  35. $parameters = DeviceInfo::addDeviceParameters($parameters);
  36. return $this->render('pages/sim/news.html.twig', $parameters);
  37. }
  38. public function getPost(
  39. $id,
  40. HomePageService $newsPageService,
  41. CmsService $cmsService
  42. ): Response {
  43. $parameters = $newsPageService->getRenderParameters();
  44. $parameters['isXmlHttpMode'] = true;
  45. $cmsPages = $cmsService->getPages();
  46. $menuPages = [];
  47. $footerPages = [];
  48. foreach ($cmsPages as $page) {
  49. if ($page->hook == 'MENU') {
  50. $menuPages[$page->id] = $page;
  51. }
  52. if ($page->hook == 'FOOTER') {
  53. $footerPages[$page->id] = $page;
  54. }
  55. }
  56. $parameters['menuPages'] = $menuPages;
  57. $parameters['footerPages'] = $footerPages;
  58. $posts = $cmsService->getPosts();
  59. $requestedPost = null;
  60. foreach ($posts as $post) {
  61. if ($post->id === $id) {
  62. $requestedPost = $post;
  63. }
  64. }
  65. if ($requestedPost === null) {
  66. return $this->redirectToRoute('news');
  67. }
  68. $parameters['post'] = $requestedPost;
  69. return $this->render('pages/sim/article.html.twig', $parameters);
  70. }
  71. }