vendor/ibexa/admin-ui/src/bundle/Templating/Twig/UiConfigExtension.php line 45

Open in your IDE?
  1. <?php
  2. /**
  3.  * @copyright Copyright (C) Ibexa AS. All rights reserved.
  4.  * @license For full copyright and license information view LICENSE file distributed with this source code.
  5.  */
  6. declare(strict_types=1);
  7. namespace Ibexa\Bundle\AdminUi\Templating\Twig;
  8. use Ibexa\AdminUi\UI\Config\Aggregator;
  9. use Ibexa\AdminUi\UI\Config\ConfigWrapper;
  10. use ProxyManager\Factory\LazyLoadingValueHolderFactory;
  11. use ProxyManager\Proxy\LazyLoadingInterface;
  12. use Twig\Environment;
  13. use Twig\Extension\AbstractExtension;
  14. use Twig\Extension\GlobalsInterface;
  15. /**
  16.  * Exports `ibexa_admin_ui_config` providing UI Config as a global Twig variable.
  17.  */
  18. class UiConfigExtension extends AbstractExtension implements GlobalsInterface
  19. {
  20.     /** @var \Twig\Environment */
  21.     protected $twig;
  22.     /** @var \Ibexa\AdminUi\UI\Config\Aggregator */
  23.     protected $aggregator;
  24.     /**
  25.      * @param \Twig\Environment $twig
  26.      * @param \Ibexa\AdminUi\UI\Config\Aggregator $aggregator
  27.      */
  28.     public function __construct(Environment $twigAggregator $aggregator)
  29.     {
  30.         $this->twig $twig;
  31.         $this->aggregator $aggregator;
  32.     }
  33.     /**
  34.      * @return array
  35.      */
  36.     public function getGlobals(): array
  37.     {
  38.         $configWrapper $this->createConfigWrapper();
  39.         return [
  40.             /** @deprecated ez_admin_ui_config is deprecated since 4.0, use ibexa_admin_ui_config instead */
  41.             'ez_admin_ui_config' => $configWrapper,
  42.             'ibexa_admin_ui_config' => $configWrapper,
  43.         ];
  44.     }
  45.     /**
  46.      * Create lazy loaded configuration.
  47.      *
  48.      * @return \Ibexa\AdminUi\UI\Config\ConfigWrapper
  49.      */
  50.     private function createConfigWrapper(): ConfigWrapper
  51.     {
  52.         $factory = new LazyLoadingValueHolderFactory();
  53.         $initializer = function (&$wrappedObjectLazyLoadingInterface $proxy$method, array $parameters, &$initializer) {
  54.             $initializer null;
  55.             $wrappedObject = new ConfigWrapper($this->aggregator->getConfig());
  56.             return true;
  57.         };
  58.         return $factory->createProxy(ConfigWrapper::class, $initializer);
  59.     }
  60. }
  61. class_alias(UiConfigExtension::class, 'EzSystems\EzPlatformAdminUiBundle\Templating\Twig\UiConfigExtension');