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/mail / DependencyInjection / DigitalAsceticMailExtension.php
Size: Mime:
<?php

namespace DigitalAscetic\MailBundle\DependencyInjection;

use DigitalAscetic\MailBundle\Service\MainMailService;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\Definition;
use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface;
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
use Symfony\Component\DependencyInjection\Reference;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\ContainerBuilder;

class DigitalAsceticMailExtension extends Extension implements PrependExtensionInterface
{
    public function load(array $configs, ContainerBuilder $container)
    {
        $configuration = new Configuration();

        $config = $this->processConfiguration($configuration, $configs);

        if ($config && $config['enabled']) {
            $loader = new XmlFileLoader(
                $container,
                new FileLocator(__DIR__ . '/../../config')
            );

            $loader->load('services.xml');

            $mailProviders = array();

            if ($config && $config['providers']) {
                foreach ($config['providers'] as $key => $provider) {
                    $mailProviders[$key] = new Reference($provider);
                }
            }

            $mailService = new Definition(MainMailService::class);
            $mailService->addArgument($mailProviders);
            $container->setDefinition(MainMailService::SERVICE_NAME, $mailService);
            $container->setAlias(MainMailService::class, MainMailService::SERVICE_NAME);
        }
    }

    /**
     * Allow an extension to prepend the extension configurations.
     *
     * @param ContainerBuilder $container
     */
    public function prepend(ContainerBuilder $container)
    {

    }
}