src/Controller/WidgetController.php line 95

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\BienEtre\BienEtre;
  4. use App\Entity\Contenu\ConseilJambeLegere;
  5. use App\Entity\Contenu\Page;
  6. use App\Entity\Contenu\Plante;
  7. use App\Entity\Menu\Menu;
  8. use App\Entity\Produit\Produit;
  9. use App\Manager\Api\InstagramManager;
  10. use App\Repository\Contenu\PageCategorieRepository;
  11. use App\Repository\Contenu\PageRepository;
  12. use App\Repository\Menu\MenuRepository;
  13. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  14. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  15. use Symfony\Component\HttpFoundation\Request;
  16. use Symfony\Component\HttpFoundation\Response;
  17. use Symfony\Contracts\Cache\CacheInterface;
  18. use Symfony\Contracts\Cache\ItemInterface;
  19. /**
  20.  * Class WidgetController
  21.  * @package App\Controller
  22.  */
  23. class WidgetController extends AbstractController
  24. {
  25.     /**
  26.      * @return Response
  27.      */
  28.     public function metas(): Response
  29.     {
  30.         return $this->render('widget/metas/index.html.twig');
  31.     }
  32.     /**
  33.      * @return Response
  34.      */
  35.     public function header(Request $requestPageRepository $pageRepositoryUrlGeneratorInterface $router): Response
  36.     {
  37.         $initialRequest     $request->get('initialRequest');
  38.         $initialRoute       $initialRequest->get('_route');
  39.         $initialPathInfo    $initialRequest->getPathInfo();
  40.         $lienAdmin  null;
  41.         $activePage '';
  42.         //        $pages = $pageRepository->findPages(false, null, ['P.position' => 'ASC']);
  43.         //        $categories = $pageCategorieRepository->findMainNavigation();
  44.         // Si la route correspond a une page on recupere la page correspondante
  45.         /*if (false !== strpos($initialRoute, 'page.')) {
  46.             foreach ($pages as $page) {
  47. //                if (false !== strpos($initialPathInfo, '/'.$request->getLocale().'/'.$page->getSlug())) {
  48.                 if (false !== strpos($initialPathInfo, '/'.$page->getSlug())) {
  49.                     $activePage = $page->getId();
  50.                     break;
  51.                 }
  52.             }
  53.         }*/
  54.         foreach ($initialRequest->attributes->all() as $key => $value) {
  55.             if ($value instanceof Page || $value instanceof Plante || $value instanceof ConseilJambeLegere) {
  56.                 $routeName 'admin_app_contenu_' strtolower($key) . '_edit';
  57.                 $routeExists $router->getRouteCollection()->get($routeName);
  58.                 if (false !== $routeExists) {
  59.                     $lienAdmin $this->generateUrl($routeName, ['id' => $value->getId()]);
  60.                 }
  61.                 break;
  62.             } else if ($value instanceof BienEtre) {
  63.                 $routeName 'admin_app_bienetre_bienetre_edit';
  64.                 $routeExists $router->getRouteCollection()->get($routeName);
  65.                 if (false !== $routeExists) {
  66.                     $lienAdmin $this->generateUrl($routeName, ['id' => $value->getId()]);
  67.                 }
  68.                 break;
  69.             } else if ($value instanceof Produit) {
  70.                 $routeName 'admin_app_produit_' $key '_edit';
  71.                 $routeExists $router->getRouteCollection()->get($routeName);
  72.                 if (false !== $routeExists) {
  73.                     $lienAdmin $this->generateUrl($routeName, ['id' => $value->getId()]);
  74.                 }
  75.                 break;
  76.             }
  77.         }
  78.         return $this->render('widget/header/index.html.twig', [
  79.             // 'categories'        => $categories,
  80.             'activePage'        => $activePage,
  81.             'initialRoute'      => $initialRoute,
  82.             'initialPathInfo'   => $initialPathInfo,
  83.             'initialRequest'    => $initialRequest,
  84.             'lienAdmin'         => $lienAdmin,
  85.         ]);
  86.     }
  87.     /**
  88.      * @return Response
  89.      */
  90.     public function footer(Request $requestMenuRepository $menuRepositoryInstagramManager $instagramManagerCacheInterface $cache): Response
  91.     {
  92.         /** @var Request $initialRequest */
  93.         $initialRequest     $request->get('initialRequest');
  94.         /** @var string $initialRoute */
  95.         $initialRoute       $initialRequest->get('_route');
  96.         $initialPathInfo    $initialRequest->getPathInfo();
  97.         $widgetFooter $menuRepository->findOneById(Menu::MENU_WIDGET_FOOTER_UN);
  98.         $widgetDeuxFooter $menuRepository->findOneById(Menu::MENU_WIDGET_FOOTER_DEUX);
  99.         $widgetTroisFooter $menuRepository->findOneById(Menu::MENU_WIDGET_FOOTER_TROIS);
  100.         
  101.         // Récupération des médias instagram pour le prefooter
  102.         $instagramMedias $cache->get('instagram_medias', function (ItemInterface $item) use ($instagramManager) {
  103.             $item->expiresAfter(28800); // On maj le cache tous les 8 heures
  104.          
  105.             return $instagramManager->getMedias();
  106.         });
  107.         $listeInstagramDisable = [
  108.             'l-histoire-de-la-marque'
  109.             'une-communication-historique',
  110.             'notre-patrimoine',
  111.             'les-plantes-selectionnees'
  112.         ];
  113.         /** @var string $slug */
  114.         $slug $initialRequest->attributes->get('slug');
  115.         if (false !== strpos($initialRoute'produit'
  116.             || in_array($slug$listeInstagramDisable)) {
  117.             $instagramMedias false;
  118.         }
  119.         return $this->render('widget/footer/index.html.twig', [
  120.             'initialRoute'          => $initialRoute,
  121.             'initialPathInfo'       => $initialPathInfo,
  122.             'initialRequest'        => $initialRequest,
  123.             'widgetFooter'          => $widgetFooter,
  124.             'widgetDeuxFooter'      => $widgetDeuxFooter,
  125.             'widgetTroisFooter'     => $widgetTroisFooter,
  126.             'instagramMedias'       => $instagramMedias
  127.         ]);
  128.     }
  129. }