vendor/nambu-private/pimcore-favicon/src/FaviconBundle/Event/ControllerInitEvent.php line 44

Open in your IDE?
  1. <?php
  2. namespace FaviconBundle\Event;
  3. use FaviconBundle\DependencyInjection\FaviconExtension;
  4. use FaviconBundle\Service\ImageGenerator;
  5. use Pimcore\Config\Config;
  6. use Pimcore\Controller\FrontendController;
  7. use Pimcore\Model\Asset\Image;
  8. use Pimcore\Model\WebsiteSetting;
  9. use Pimcore\Model\Site;
  10. use Pimcore\Twig\Extension\Templating\HeadLink;
  11. use Pimcore\Twig\Extension\Templating\HeadMeta;
  12. use Symfony\Component\HttpKernel\Event\KernelEvent;
  13. class ControllerInitEvent {
  14.     private HeadMeta $headMeta;
  15.     private HeadLink $headLink;
  16.     private array $config;
  17.     private array $sitesConfig;
  18.     public function __construct(HeadLink $headLinkHeadMeta $headMeta) {
  19.         $this->headLink $headLink;
  20.         $this->headMeta $headMeta;
  21.     }
  22.     /**
  23.      * DependencyInjection
  24.      *
  25.      * @param $config
  26.      */
  27.     public function setConfig($config) {
  28.         $this->config $config;
  29.     }
  30.     /**
  31.      * DependencyInjection
  32.      *
  33.      * @param $sitesConfig
  34.      */
  35.     public function setSitesConfig($sitesConfig) {
  36.         $this->sitesConfig $sitesConfig;
  37.     }
  38.     public function onControllerInit(KernelEvent $e) {
  39.         if ($e->isMasterRequest() && \Pimcore\Tool::isFrontend()) {
  40.             $siteId Site::isSiteRequest() ? Site::getCurrentSite()->getId() : null;
  41.             $config FaviconExtension::mergeConfigs(
  42.                 $siteId,
  43.                 $this->config,
  44.                 $this->sitesConfig
  45.             );
  46.             //
  47.             foreach ($config["items"] as $icon) {
  48.                 if (!array_key_exists("href"$icon)) {
  49.                     $faviconSetting WebsiteSetting::getByName('favicon'$siteId);
  50.                     $imagepath '/public/build/img/favicon.png';
  51.                     if (!empty($config["base_image"])) {
  52.                         $imagepath $config["base_image"];
  53.                     } elseif ($faviconSetting instanceof WebsiteSetting && $faviconSetting->getData() instanceof Image) {
  54.                         $imagepath '/public/var/assets'.$faviconSetting->getData()->getFullPath();
  55.                     }
  56.                     $icon["href"] = ImageGenerator::generateIcon(
  57.                         $imagepath,
  58.                         $icon["rel"],
  59.                         $icon["sizes"] ?? "100x100",
  60.                         $icon["type"] ?? "image/png"
  61.                     );
  62.                 }
  63.                 $this->headLink->append($this->headLink->createData($icon));
  64.             }
  65.             $this->headMeta->append($this->headMeta->createData(
  66.                 "name",
  67.                 "msapplication-TileColor",
  68.                 $config["manifest"]["background_color"] ?? "#FFFFFF",
  69.                 []
  70.             ));
  71.             $this->headMeta->append($this->headMeta->createData(
  72.                 "name",
  73.                 "theme-color",
  74.                 $config["manifest"]["theme_color"] ?? "#FFFFFF",
  75.                 []
  76.             ));
  77.             $this->headMeta->append($this->headMeta->createData(
  78.                 "name",
  79.                 "msapplication-config",
  80.                 "/static/manifest/browserconfig.xml",
  81.                 []
  82.             ));
  83.         }
  84.     }
  85. }