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

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 $configs, ContainerBuilder $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. }