src/Twig/AppExtension.php line 12

Open in your IDE?
  1. <?php
  2. namespace App\Twig;
  3. use Twig\Extension\AbstractExtension;
  4. use Twig\TwigFilter;
  5. use Twig\TwigFunction;
  6. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  7. use Doctrine\Persistence\ManagerRegistry;
  8. class AppExtension extends AbstractExtension implements \Twig_Extension_GlobalsInterface
  9. {
  10.       private $em;
  11.       private $formFactory;
  12.       private $session;
  13.       public function __construct(ManagerRegistry $registrySessionInterface $session)
  14.       {
  15.           $this->em $registry;
  16.           $this->session $session;
  17.       }
  18.     public function getFilters(): array
  19.     {
  20.         return [
  21.             // If your filter generates SAFE HTML, you should add a third
  22.             // parameter: ['is_safe' => ['html']]
  23.             // Reference: https://twig.symfony.com/doc/2.x/advanced.html#automatic-escaping
  24.             new TwigFilter('filter_name', [$this'doSomething']),
  25.         ];
  26.     }
  27.     public function getFunctions(): array
  28.     {
  29.         return [
  30.             new TwigFunction('function_name', [$this'doSomething']),
  31.         ];
  32.     }
  33.     public function doSomething($value)
  34.     {
  35.         // ...
  36.     }
  37.     public function getGlobals()
  38.     {
  39.         $session['email'] = $this->session->get('email'null);
  40.         $session['token'] = $this->session->get('token'null);
  41.         $demoVersion $this->em->getRepository('App:AccessDemo')->findOneBy(array('email' => $session['email'], 'token' => $session['token']));
  42.         $template $this->em->getRepository('App:Template')->findActif()[0];
  43.         if ($demoVersion != null){
  44.           $globals $this->em->getRepository('App:Infos')->find($demoVersion->getInfos());
  45.           $template->setColorPrime($demoVersion->getColorPrime());
  46.           $template->setColorSecond($demoVersion->getColorSecond());
  47.           $template->setColorThird($demoVersion->getColorThird());
  48.           $template->setTextColorPrime($demoVersion->getTextColorPrime());
  49.           $template->setTextColorSecond($demoVersion->getTextColorSecond());
  50.         }else{
  51.           $globals $this->em->getRepository('App:Infos')->find(1);
  52.           $template $this->em->getRepository('App:Template')->findActif()[0];
  53.         }
  54.         $actus $this->em->getRepository('App:ActusConfig')->find(1);
  55.         $offres $this->em->getRepository('App:OffresConfig')->find(1);
  56.         $offresPhotos $this->em->getRepository('App:OffresPhotos')->findAll();
  57.         $natures $this->em->getRepository('App:OffresNature')->findAll();
  58.         $types $this->em->getRepository('App:OffresType')->findAll();
  59.         $localisations $this->em->getRepository('App:Localisations')->findBy(array(), array('libelle' => 'ASC'));
  60.         $quiSommesNous $this->em->getRepository('App:Pages')->find(1);
  61.         $mentionsLegales $this->em->getRepository('App:Pages')->find(2);
  62.         return [
  63.             'global' => $globals,
  64.             'actuListeUrl' => $actus->getUrlListe(),
  65.             'actuConfig' => $actus,
  66.             'offreListeUrl' => $offres->getUrlListe(),
  67.             'offresConfig' => $offres,
  68.             'quiSommesNousUrl' => $quiSommesNous->getSeoUrl(),
  69.             'quiSommesNousTitre' => $quiSommesNous->getTitre(),
  70.             'mentionsLegalesUrl' => $mentionsLegales->getSeoUrl(),
  71.             'offresPhotos' => $offresPhotos,
  72.             'globalNatures' => $natures,
  73.             'globalTypes' => $types,
  74.             'globalLocalisations' => $localisations,
  75.             'template' => $template
  76.         ];
  77.     }
  78. }