Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
digitalascetic/file / DependencyInjection / DigitalAsceticFileExtension.php
Size: Mime:
<?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']);
        }
    }

}