vendor/se7enxweb/admin-ui/src/bundle/Templating/Twig/UiConfigExtension.php line 59

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 $twig, Aggregator $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 (&$wrappedObject, LazyLoadingInterface $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');