vendor/novaway/mailer-bundle/src/DependencyInjection/NovawayMailerExtension.php line 28

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Novaway\MailerBundle\DependencyInjection;
  4. use Novaway\MailerBundle\MailSender;
  5. use Novaway\MailerBundle\Transport\Mailjet\MailjetTransport;
  6. use Novaway\MailerBundle\Transport\Sendinblue\SendinblueTransport;
  7. use Novaway\MailerBundle\Transport\SwiftMailer\SwiftMailerTransport;
  8. use Novaway\MailerBundle\Transport\SymfonyMailer\SymfonyMailerTransport;
  9. use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException;
  10. use Symfony\Component\Config\FileLocator;
  11. use Symfony\Component\DependencyInjection\ContainerBuilder;
  12. use Symfony\Component\DependencyInjection\Extension\Extension;
  13. use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
  14. class NovawayMailerExtension extends Extension
  15. {
  16.     protected $requiredParameters = [
  17.         'default_email_from'
  18.     ];
  19.     public function load(array $configsContainerBuilder $container)
  20.     {
  21.         $xmlLoader = new XmlFileLoader($container, new FileLocator(__DIR__ '/../Resources/config'));
  22.         $xmlLoader->load('services.xml');
  23.         $configuration = new NovawayMailerConfiguration($container->getParameter('kernel.debug'));
  24.         $config $this->processConfiguration($configuration$configs);
  25.         foreach ($config as $key => $value) {
  26.             // Services will be processed later in a Novaway\MailerBundle\DependencyInjection\CompilerPass\RegisterServicesPass
  27.             // As at that point they may not have been defined yet
  28.             $parameterName = \sprintf('%s.%s'$this->getAlias(), $key);
  29.             if ($container->hasParameter($parameterName)) {
  30.                 \trigger_deprecation('novaway/mailer-bundle''1.7''Passing configuration by single value parameter is deprecated since 1.7, and may be removed in 2.0. Please use an array parameter');
  31.             }
  32.             // Condition will be removed in v2.0
  33.             if (!$container->hasParameter($parameterName)) {
  34.                 $container->setParameter(\sprintf('%s.%s'$this->getAlias(), $key), $value);
  35.             }
  36.         }
  37.         foreach ($this->requiredParameters as $key) {
  38.             $parameterName = \sprintf('%s.%s'$this->getAlias(), $key);
  39.             if (!$container->hasParameter($parameterName)) {
  40.                 throw new InvalidConfigurationException(\sprintf('The parameter "%s" is required by configuration'$parameterName));
  41.             }
  42.         }
  43.         $transports $container->getParameter( \sprintf('%s.%s'$this->getAlias(), 'transports'));
  44.         if (empty($transports)) {
  45.             $transports = [$container->getParameter( \sprintf('%s.%s'$this->getAlias(), 'transport'))];
  46.         }
  47.         $transports = \array_filter($transports);
  48.         $senderConfiguration $container->findDefinition(MailSender::class);
  49.         foreach ($transports as $transport) {
  50.             switch ($transport) {
  51.                 case 'swiftmailer':
  52.                     $xmlLoader->load('swiftmailer.xml');
  53.                     $senderConfiguration->addMethodCall('addTransport', [$container->findDefinition(SwiftMailerTransport::class)]);
  54.                     break;
  55.                 case 'mailjet':
  56.                     $xmlLoader->load('mailjet.xml');
  57.                     $senderConfiguration->addMethodCall('addTransport', [$container->findDefinition(MailjetTransport::class)]);
  58.                     break;
  59.                 case 'sendinblue':
  60.                     $xmlLoader->load('sendinblue.xml');
  61.                     $senderConfiguration->addMethodCall('addTransport', [$container->findDefinition(SendinblueTransport::class)]);
  62.                     break;
  63.                 case 'symfony':
  64.                     $xmlLoader->load('symfony.xml');
  65.                     $senderConfiguration->addMethodCall('addTransport', [$container->findDefinition(SymfonyMailerTransport::class)]);
  66.                     break;
  67.             }
  68.         }
  69.     }
  70. }