vendor/sulu/sulu/src/Sulu/Bundle/WebsiteBundle/Twig/Sitemap/SitemapTwigExtension.php line 93

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of Sulu.
  4.  *
  5.  * (c) Sulu GmbH
  6.  *
  7.  * This source file is subject to the MIT license that is bundled
  8.  * with this source code in the file LICENSE.
  9.  */
  10. namespace Sulu\Bundle\WebsiteBundle\Twig\Sitemap;
  11. use Sulu\Bundle\WebsiteBundle\Sitemap\SitemapGeneratorInterface;
  12. use Sulu\Component\Webspace\Analyzer\RequestAnalyzerInterface;
  13. use Sulu\Component\Webspace\Manager\WebspaceManagerInterface;
  14. use Twig\Extension\AbstractExtension;
  15. use Twig\TwigFunction;
  16. /**
  17.  * Provides twig functions for sitemap.
  18.  */
  19. class SitemapTwigExtension extends AbstractExtension implements SitemapTwigExtensionInterface
  20. {
  21.     /**
  22.      * @var WebspaceManagerInterface
  23.      */
  24.     private $webspaceManager;
  25.     /**
  26.      * @var SitemapGeneratorInterface
  27.      */
  28.     private $sitemapGenerator;
  29.     /**
  30.      * @var RequestAnalyzerInterface
  31.      */
  32.     private $requestAnalyzer;
  33.     /**
  34.      * @var string
  35.      */
  36.     private $environment;
  37.     public function __construct(
  38.         SitemapGeneratorInterface $sitemapGenerator,
  39.         WebspaceManagerInterface $webspaceManager,
  40.         $environment,
  41.         RequestAnalyzerInterface $requestAnalyzer null
  42.     ) {
  43.         $this->environment $environment;
  44.         $this->sitemapGenerator $sitemapGenerator;
  45.         $this->webspaceManager $webspaceManager;
  46.         $this->requestAnalyzer $requestAnalyzer;
  47.     }
  48.     public function getFunctions()
  49.     {
  50.         return [
  51.             new TwigFunction('sulu_sitemap_url', [$this'sitemapUrlFunction']),
  52.             new TwigFunction('sulu_sitemap', [$this'sitemapFunction']),
  53.         ];
  54.     }
  55.     public function sitemapUrlFunction($url$locale null$webspaceKey null)
  56.     {
  57.         if (null === $webspaceKey) {
  58.             $webspaceKey $this->requestAnalyzer->getWebspace()->getKey();
  59.         }
  60.         if (null === $locale) {
  61.             $locale $this->requestAnalyzer->getCurrentLocalization()->getLocale();
  62.         }
  63.         return $this->webspaceManager->findUrlByResourceLocator(
  64.             $url,
  65.             $this->environment,
  66.             $locale,
  67.             $webspaceKey
  68.         );
  69.     }
  70.     public function sitemapFunction($locale null$webspaceKey null)
  71.     {
  72.         if (null === $webspaceKey) {
  73.             $webspaceKey $this->requestAnalyzer->getWebspace()->getKey();
  74.         }
  75.         if (null === $locale) {
  76.             $locale $this->requestAnalyzer->getCurrentLocalization()->getLocale();
  77.         }
  78.         return $this->sitemapGenerator->generate($webspaceKey$locale)->getSitemap();
  79.     }
  80. }