diff --git a/DependencyInjection/Compiler/DriverCompilerPass.php b/DependencyInjection/Compiler/DriverCompilerPass.php new file mode 100644 index 000000000..e5fade9ba --- /dev/null +++ b/DependencyInjection/Compiler/DriverCompilerPass.php @@ -0,0 +1,37 @@ +getParameter('liip_imagine.driver_service'); + + if (!$container->hasDefinition($liipImagineDriver)) { + throw new InvalidConfigurationException(sprintf( + "Specified driver '%s' is not defined.", $liipImagineDriver + )); + } + } +} diff --git a/DependencyInjection/Configuration.php b/DependencyInjection/Configuration.php index 0bfa4fc4f..082c9990f 100644 --- a/DependencyInjection/Configuration.php +++ b/DependencyInjection/Configuration.php @@ -104,14 +104,7 @@ public function getConfigTreeBuilder() $rootNode ->fixXmlConfig('filter_set', 'filter_sets') ->children() - ->scalarNode('driver')->defaultValue('gd') - ->validate() - ->ifTrue(function ($v) { - return !in_array($v, ['gd', 'imagick', 'gmagick'], true); - }) - ->thenInvalid('Invalid imagine driver specified: %s') - ->end() - ->end() + ->scalarNode('driver')->defaultValue('gd')->end() ->scalarNode('cache')->defaultValue('default')->end() ->scalarNode('cache_base_path')->defaultValue('')->end() ->scalarNode('data_loader')->defaultValue('default')->end() diff --git a/DependencyInjection/LiipImagineExtension.php b/DependencyInjection/LiipImagineExtension.php index 365907cd0..c5ada9f2d 100644 --- a/DependencyInjection/LiipImagineExtension.php +++ b/DependencyInjection/LiipImagineExtension.php @@ -18,7 +18,6 @@ use Symfony\Component\DependencyInjection\Alias; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Loader\XmlFileLoader; -use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\HttpKernel\DependencyInjection\Extension; class LiipImagineExtension extends Extension @@ -81,9 +80,7 @@ public function load(array $configs, ContainerBuilder $container) $loader->load('enqueue.xml'); } - $container->getDefinition('liip_imagine.'.$config['driver'])->addMethodCall('setMetadataReader', [ - new Reference('liip_imagine.meta_data.reader'), - ]); + $container->setParameter('liip_imagine.driver_service', 'liip_imagine.'.$config['driver']); $container->setAlias('liip_imagine', new Alias('liip_imagine.'.$config['driver'])); $container->setAlias(CacheManager::class, new Alias('liip_imagine.cache.manager', false)); diff --git a/LiipImagineBundle.php b/LiipImagineBundle.php index 90f56e4ec..44072bdb4 100644 --- a/LiipImagineBundle.php +++ b/LiipImagineBundle.php @@ -13,6 +13,7 @@ use Enqueue\Bundle\DependencyInjection\Compiler\AddTopicMetaPass; use Liip\ImagineBundle\Async\Topics; +use Liip\ImagineBundle\DependencyInjection\Compiler\DriverCompilerPass; use Liip\ImagineBundle\DependencyInjection\Compiler\FiltersCompilerPass; use Liip\ImagineBundle\DependencyInjection\Compiler\LoadersCompilerPass; use Liip\ImagineBundle\DependencyInjection\Compiler\MetadataReaderCompilerPass; @@ -38,6 +39,7 @@ public function build(ContainerBuilder $container) { parent::build($container); + $container->addCompilerPass(new DriverCompilerPass()); $container->addCompilerPass(new LoadersCompilerPass()); $container->addCompilerPass(new FiltersCompilerPass()); $container->addCompilerPass(new PostProcessorsCompilerPass()); diff --git a/Resources/config/imagine.xml b/Resources/config/imagine.xml index ef2b9a488..223932166 100644 --- a/Resources/config/imagine.xml +++ b/Resources/config/imagine.xml @@ -83,11 +83,23 @@ - + + + + + - + + + + + - + + + + + diff --git a/Tests/LiipImagineBundleTest.php b/Tests/LiipImagineBundleTest.php index 169a197f8..e4a8a82a2 100644 --- a/Tests/LiipImagineBundleTest.php +++ b/Tests/LiipImagineBundleTest.php @@ -46,7 +46,7 @@ public function testAddLoadersCompilerPassOnBuild() ->with('liip_imagine') ->will($this->returnValue($this->createLiipImagineExtensionMock())); $containerMock - ->expects($this->at(0)) + ->expects($this->at(1)) ->method('addCompilerPass') ->with($this->isInstanceOf(LoadersCompilerPass::class)); @@ -63,7 +63,7 @@ public function testAddFiltersCompilerPassOnBuild() ->with('liip_imagine') ->will($this->returnValue($this->createLiipImagineExtensionMock())); $containerMock - ->expects($this->at(1)) + ->expects($this->at(2)) ->method('addCompilerPass') ->with($this->isInstanceOf(FiltersCompilerPass::class)); @@ -80,7 +80,7 @@ public function testAddPostProcessorsCompilerPassOnBuild() ->with('liip_imagine') ->will($this->returnValue($this->createLiipImagineExtensionMock())); $containerMock - ->expects($this->at(2)) + ->expects($this->at(3)) ->method('addCompilerPass') ->with($this->isInstanceOf(PostProcessorsCompilerPass::class)); @@ -97,7 +97,7 @@ public function testAddResolversCompilerPassOnBuild() ->with('liip_imagine') ->will($this->returnValue($this->createLiipImagineExtensionMock())); $containerMock - ->expects($this->at(3)) + ->expects($this->at(4)) ->method('addCompilerPass') ->with($this->isInstanceOf(ResolversCompilerPass::class));