Repository URL to install this package:
|
Version:
6.3.0 ▾
|
<?php
namespace DigitalAscetic\FileBundle\DependencyInjection;
use DigitalAscetic\FileBundle\EventListener\FileEntitySubscriber;
use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException;
use Symfony\Component\DependencyInjection\Definition;
use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface;
use Symfony\Component\DependencyInjection\Reference;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\ContainerBuilder;
class DigitalAsceticFileExtension extends Extension implements PrependExtensionInterface
{
public function load(array $configs, ContainerBuilder $container)
{
}
/**
* Allow an extension to prepend the extension configurations.
*
* @param ContainerBuilder $container
*/
public function prepend(ContainerBuilder $container)
{
$bundles = $container->getParameter('kernel.bundles');
if (!isset($bundles['FrameworkBundle'])) {
throw new InvalidConfigurationException(
"You must register FrameworkBundle in AppKernel in order to work with CommonsBundle"
);
}
if (!isset($bundles['DoctrineBundle'])) {
throw new InvalidConfigurationException(
"You must register DoctrineBundle in AppKernel in order to work with CommonsBundle"
);
}
$configs = $container->getExtensionConfig($this->getAlias());
$config = $this->processConfiguration(new Configuration(), $configs);
$container->getParameterBag()->add(array('da_file.config' => $config));
if (isset($config['manage_file_entities']) &&
isset($config['manage_file_entities']['enabled']) &&
$config['manage_file_entities']['enabled']
) {
if (!isset($bundles['KnpGaufretteBundle'])) {
throw new InvalidConfigurationException(
"You must register KnpGaufretteBundle in AppKernel in order to work with manage_file_entities"
);
}
if (!isset($bundles['LiipImagineBundle'])) {
throw new InvalidConfigurationException(
"You must register LiipImagineBundle in AppKernel in order to work with manage_file_entities"
);
}
$fileSystems = $config['manage_file_entities']['filesystems'];
$fileEntitySub = new Definition(FileEntitySubscriber::class);
$fileEntitySub->addArgument(new Reference($fileSystems['public']));
$fileEntitySub->addArgument(new Reference($fileSystems['private']));
$fileEntitySub->addArgument($config['manage_file_entities']['file_entities']);
$fileEntitySub->addArgument(new Reference('logger'));
$fileEntitySub->addArgument(new Reference('liip_imagine.cache.manager'));
$fileEntitySub->addTag('doctrine.event_subscriber');
$container->setDefinition('digital_ascetic_file.event_listener.file_entity_listener', $fileEntitySub);
$container->setParameter('digital_ascetic_file.service.public_file_system', $fileSystems['public']);
$container->setParameter('digital_ascetic_file.service.private_file_system', $fileSystems['private']);
}
}
}