Deprecated: Constant E_STRICT is deprecated in /home/pastorz/old-espace-client/vendor/symfony/error-handler/ErrorHandler.php on line 58

Deprecated: Constant E_STRICT is deprecated in /home/pastorz/old-espace-client/vendor/symfony/error-handler/ErrorHandler.php on line 76
Symfony Profiler

vendor/liip/imagine-bundle/DependencyInjection/Configuration.php line 284

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the `liip/LiipImagineBundle` project.
  4.  *
  5.  * (c) https://github.com/liip/LiipImagineBundle/graphs/contributors
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE.md
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace Liip\ImagineBundle\DependencyInjection;
  11. use Liip\ImagineBundle\Config\Controller\ControllerConfig;
  12. use Liip\ImagineBundle\Controller\ImagineController;
  13. use Liip\ImagineBundle\DependencyInjection\Factory\FactoryInterface;
  14. use Liip\ImagineBundle\DependencyInjection\Factory\Loader\LoaderFactoryInterface;
  15. use Liip\ImagineBundle\DependencyInjection\Factory\Resolver\ResolverFactoryInterface;
  16. use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
  17. use Symfony\Component\Config\Definition\Builder\TreeBuilder;
  18. use Symfony\Component\Config\Definition\ConfigurationInterface;
  19. use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException;
  20. class Configuration implements ConfigurationInterface
  21. {
  22.     /**
  23.      * @var ResolverFactoryInterface[]
  24.      */
  25.     protected $resolversFactories;
  26.     /**
  27.      * @var LoaderFactoryInterface[]
  28.      */
  29.     protected $loadersFactories;
  30.     /**
  31.      * @param ResolverFactoryInterface[] $resolversFactories
  32.      * @param LoaderFactoryInterface[]   $loadersFactories
  33.      */
  34.     public function __construct(array $resolversFactories, array $loadersFactories)
  35.     {
  36.         $this->resolversFactories $resolversFactories;
  37.         $this->loadersFactories $loadersFactories;
  38.     }
  39.     public function getConfigTreeBuilder(): TreeBuilder
  40.     {
  41.         $treeBuilder = new TreeBuilder('liip_imagine');
  42.         $rootNode method_exists(TreeBuilder::class, 'getRootNode')
  43.             ? $treeBuilder->getRootNode()
  44.             : $treeBuilder->root('liip_imagine');
  45.         $resolversPrototypeNode $rootNode
  46.             ->children()
  47.                 ->arrayNode('resolvers')
  48.                     ->useAttributeAsKey('name')
  49.                     ->prototype('array')
  50.                         ->performNoDeepMerging();
  51.         $this->addResolversSections($resolversPrototypeNode);
  52.         $loadersPrototypeNode $rootNode
  53.             ->children()
  54.                 ->arrayNode('loaders')
  55.                     ->useAttributeAsKey('name')
  56.                     ->prototype('array');
  57.         $this->addLoadersSections($loadersPrototypeNode);
  58.         $rootNode
  59.             ->beforeNormalization()
  60.                 ->ifTrue(function ($v) {
  61.                     return
  62.                         empty($v['loaders'])
  63.                         || empty($v['loaders']['default'])
  64.                         || empty($v['resolvers'])
  65.                         || empty($v['resolvers']['default']);
  66.                 })
  67.                 ->then(function ($v) {
  68.                     if (empty($v['loaders'])) {
  69.                         $v['loaders'] = [];
  70.                     }
  71.                     if (false === \is_array($v['loaders'])) {
  72.                         throw new \LogicException('Loaders has to be array');
  73.                     }
  74.                     if (false === \array_key_exists('default'$v['loaders'])) {
  75.                         $v['loaders']['default'] = ['filesystem' => null];
  76.                     }
  77.                     if (empty($v['resolvers'])) {
  78.                         $v['resolvers'] = [];
  79.                     }
  80.                     if (false === \is_array($v['resolvers'])) {
  81.                         throw new \LogicException('Resolvers has to be array');
  82.                     }
  83.                     if (false === \array_key_exists('default'$v['resolvers'])) {
  84.                         $v['resolvers']['default'] = ['web_path' => null];
  85.                     }
  86.                     return $v;
  87.                 })
  88.             ->end();
  89.         $rootNode
  90.             ->fixXmlConfig('filter_set''filter_sets')
  91.             ->children()
  92.                 ->scalarNode('driver')->defaultValue('gd')
  93.                     ->validate()
  94.                         ->ifTrue(function ($v) {
  95.                             return !\in_array($v, ['gd''imagick''gmagick''vips'], true);
  96.                         })
  97.                         ->thenInvalid('Invalid imagine driver specified: %s')
  98.                     ->end()
  99.                 ->end()
  100.                 ->scalarNode('cache')->defaultValue('default')->end()
  101.                 ->scalarNode('cache_base_path')->defaultValue('')->end()
  102.                 ->scalarNode('data_loader')->defaultValue('default')->end()
  103.                 ->scalarNode('default_image')->defaultNull()->end()
  104.                 ->arrayNode('default_filter_set_settings')
  105.                     ->addDefaultsIfNotSet()
  106.                     ->children()
  107.                         ->scalarNode('quality')->defaultValue(100)->end()
  108.                         ->scalarNode('jpeg_quality')->defaultNull()->end()
  109.                         ->scalarNode('png_compression_level')->defaultNull()->end()
  110.                         ->scalarNode('png_compression_filter')->defaultNull()->end()
  111.                         ->scalarNode('format')->defaultNull()->end()
  112.                         ->booleanNode('animated')->defaultFalse()->end()
  113.                         ->scalarNode('cache')->defaultNull()->end()
  114.                         ->scalarNode('data_loader')->defaultNull()->end()
  115.                         ->scalarNode('default_image')->defaultNull()->end()
  116.                         ->arrayNode('filters')
  117.                             ->useAttributeAsKey('name')
  118.                             ->prototype('array')
  119.                                 ->useAttributeAsKey('name')
  120.                                 ->ignoreExtraKeys(false)
  121.                                 ->prototype('variable')->end()
  122.                             ->end()
  123.                         ->end()
  124.                         ->arrayNode('post_processors')
  125.                             ->defaultValue([])
  126.                             ->useAttributeAsKey('name')
  127.                             ->prototype('array')
  128.                                 ->useAttributeAsKey('name')
  129.                                 ->ignoreExtraKeys(false)
  130.                                 ->prototype('variable')->end()
  131.                             ->end()
  132.                         ->end()
  133.                     ->end()
  134.                 ->end()
  135.                 ->arrayNode('controller')
  136.                     ->addDefaultsIfNotSet()
  137.                     ->children()
  138.                         ->scalarNode('filter_action')->defaultValue(sprintf('%s::filterAction'ImagineController::class))->end()
  139.                         ->scalarNode('filter_runtime_action')->defaultValue(sprintf('%s::filterRuntimeAction'ImagineController::class))->end()
  140.                         ->integerNode('redirect_response_code')->defaultValue(302)
  141.                             ->validate()
  142.                                 ->ifTrue(function ($redirectResponseCode) {
  143.                                     return !\in_array($redirectResponseCodeControllerConfig::REDIRECT_RESPONSE_CODEStrue);
  144.                                 })
  145.                                 ->thenInvalid('Invalid redirect response code "%s" (must be 201, 301, 302, 303, 307, or 308).')
  146.                             ->end()
  147.                         ->end()
  148.                     ->end()
  149.                 ->end()
  150.                 ->arrayNode('filter_sets')
  151.                     ->useAttributeAsKey('name')
  152.                     ->prototype('array')
  153.                         ->fixXmlConfig('filter''filters')
  154.                         ->children()
  155.                             ->scalarNode('quality')->end()
  156.                             ->scalarNode('jpeg_quality')->end()
  157.                             ->scalarNode('png_compression_level')->end()
  158.                             ->scalarNode('png_compression_filter')->end()
  159.                             ->scalarNode('format')->end()
  160.                             ->booleanNode('animated')->end()
  161.                             ->scalarNode('cache')->end()
  162.                             ->scalarNode('data_loader')->end()
  163.                             ->scalarNode('default_image')->end()
  164.                             ->arrayNode('filters')
  165.                                 ->useAttributeAsKey('name')
  166.                                 ->prototype('array')
  167.                                     ->useAttributeAsKey('name')
  168.                                     ->ignoreExtraKeys(false)
  169.                                     ->prototype('variable')->end()
  170.                                 ->end()
  171.                             ->end()
  172.                             ->arrayNode('post_processors')
  173.                                 ->defaultValue([])
  174.                                 ->useAttributeAsKey('name')
  175.                                 ->prototype('array')
  176.                                     ->useAttributeAsKey('name')
  177.                                     ->ignoreExtraKeys(false)
  178.                                     ->prototype('variable')->end()
  179.                                 ->end()
  180.                         ->end()
  181.                     ->end()
  182.                 ->end()
  183.             ->end()
  184.             ->arrayNode('twig')
  185.                 ->addDefaultsIfNotSet()
  186.                 ->children()
  187.                     ->enumNode('mode')
  188.                         ->defaultValue('legacy')
  189.                         ->info('Twig mode: none/lazy/legacy (default)')
  190.                         ->values(['none''lazy''legacy'])
  191.                         ->validate()
  192.                             ->ifTrue(function ($v) {
  193.                                 return 'legacy' === $v;
  194.                             })
  195.                             ->then(function ($v) {
  196.                                 @trigger_error('Twig "legacy" mode has been deprecated and will be removed in 3.0. Use "none" or "lazy".'E_USER_DEPRECATED);
  197.                                 return $v;
  198.                             })
  199.                         ->end()
  200.                     ->end()
  201.                     ->scalarNode('assets_version')->defaultNull()->end()
  202.                 ->end()
  203.             ->end()
  204.             ->booleanNode('enqueue')
  205.                 ->defaultFalse()
  206.                 ->info('Enables integration with enqueue if set true. Allows resolve image caches in background by sending messages to MQ.')
  207.             ->end()
  208.             ->arrayNode('messenger')
  209.                 ->canBeEnabled()
  210.                 ->info('Enables integration with symfony/messenger if set true. Warmup image caches in background by sending messages to MQ.')
  211.             ->end()
  212.             ->booleanNode('templating')
  213.                 ->defaultTrue()
  214.                 ->info('Enables integration with symfony/templating component')
  215.                 ->validate()
  216.                     ->ifTrue()
  217.                     ->then(function ($v) {
  218.                         @trigger_error('Symfony templating integration has been deprecated since LiipImagineBundle 2.2 and will be removed in 3.0. Use Twig and use "false" as "liip_imagine.templating" value instead.'E_USER_DEPRECATED);
  219.                         return $v;
  220.                     })
  221.                 ->end()
  222.             ->end()
  223.         ->end();
  224.         $rootNode
  225.             ->children()
  226.                 ->arrayNode('webp')
  227.                     ->addDefaultsIfNotSet()
  228.                     ->children()
  229.                         ->booleanNode('generate')->defaultFalse()->end()
  230.                         ->integerNode('quality')->defaultValue(100)->end()
  231.                         ->scalarNode('cache')->defaultNull()->end()
  232.                         ->scalarNode('data_loader')->defaultNull()->end()
  233.                         ->arrayNode('post_processors')
  234.                             ->defaultValue([])
  235.                             ->useAttributeAsKey('name')
  236.                             ->prototype('array')
  237.                                 ->useAttributeAsKey('name')
  238.                                 ->ignoreExtraKeys(false)
  239.                                 ->prototype('variable')->end()
  240.                             ->end()
  241.                     ->end()
  242.                 ->end()
  243.             ->end();
  244.         return $treeBuilder;
  245.     }
  246.     private function addResolversSections(ArrayNodeDefinition $resolversPrototypeNode)
  247.     {
  248.         $this->addConfigurationSections($this->resolversFactories$resolversPrototypeNode'resolver');
  249.     }
  250.     private function addLoadersSections(ArrayNodeDefinition $resolversPrototypeNode)
  251.     {
  252.         $this->addConfigurationSections($this->loadersFactories$resolversPrototypeNode'loader');
  253.     }
  254.     /**
  255.      * @param FactoryInterface[] $factories
  256.      */
  257.     private function addConfigurationSections(array $factoriesArrayNodeDefinition $definition$type)
  258.     {
  259.         foreach ($factories as $f) {
  260.             $f->addConfiguration($definition->children()->arrayNode($f->getName()));
  261.         }
  262.         $definition->end()
  263.             ->validate()
  264.             ->ifTrue(function ($array) use ($type) {
  265.                 foreach ($array as $name => $element) {
  266.                     if (!$element) {
  267.                         throw new InvalidConfigurationException(ucfirst($type).' "'.$name.'" must have a factory configured');
  268.                     }
  269.                 }
  270.                 return false;
  271.             })
  272.             ->thenInvalid('Each '.$type.' must have a factory configured')
  273.             ->end();
  274.     }
  275. }