Skip to content

Commit

Permalink
Some minor changes for the mail helpers
Browse files Browse the repository at this point in the history
  • Loading branch information
alexander-schranz committed Jun 25, 2021
1 parent b53e7f3 commit e80418a
Show file tree
Hide file tree
Showing 11 changed files with 74 additions and 32 deletions.
3 changes: 2 additions & 1 deletion DependencyInjection/Configuration.php
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,8 @@ public function getConfigTreeBuilder()
->addDefaultsIfNotSet()
->children()
->scalarNode('helper')
->defaultValue(self::SWIFT_MAILER_HELPER)
->defaultValue(null)
->info('Shipped helper are "swift_mailer" and "mailer", defaults to "swift_mailer" if both exists.')
->end()
->scalarNode('from')->defaultValue(null)->end()
->scalarNode('to')->defaultValue(null)->end()
Expand Down
19 changes: 17 additions & 2 deletions DependencyInjection/SuluFormExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface;
use Symfony\Component\DependencyInjection\Loader;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\Mailer\MailerInterface;

/**
* This is the class that loads and manages your bundle configuration.
Expand Down Expand Up @@ -216,16 +217,30 @@ public function load(array $configs, ContainerBuilder $container)
$loader->load('protected_media.xml');
}

$this->configureHelper($config, $container);
$this->configureHelper($loader, $config, $container);
}

private function configureHelper(array $config, ContainerBuilder $container)
private function configureHelper(Loader\XmlFileLoader $loader, array $config, ContainerBuilder $container)
{
$helper = $config['mail']['helper'];
if (\method_exists($container, 'resolveEnvPlaceholders')) {
$helper = $container->resolveEnvPlaceholders($helper, true);
}

if (\class_exists(\Swift_Mailer::class)) {
$helper = $helper ?: 'swift_mailer';
$loader->load('swift_mailer.xml');
}

if (\class_exists(MailerInterface::class)) {
$helper = $helper ?: 'mailer';
$loader->load('mailer.xml');
}

if (!$helper) {
throw new \LogicException('The SuluFormBundle requires "swiftmailer/swiftmailer" or "symfony/mailer" to be installed.');
}

$container->setAlias('sulu.mail.helper', 'sulu.mail.' . $helper);
}
}
8 changes: 8 additions & 0 deletions Mail/NullHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@
use Psr\Log\LoggerInterface;
use Psr\Log\NullLogger;

/**
* @deprecated
*/
class NullHelper implements HelperInterface
{
/**
Expand All @@ -23,6 +26,11 @@ class NullHelper implements HelperInterface

public function __construct(LoggerInterface $logger = null)
{
@trigger_error(
\sprintf('The "%s" is deprecated use the null transport of mailer instead.', __CLASS__),
E_USER_DEPRECATED
);

$this->logger = $logger ?: new NullLogger();
}

Expand Down
14 changes: 14 additions & 0 deletions Resources/config/mailer.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
<services>
<service id="sulu.mail.mailer" class="Sulu\Bundle\FormBundle\Mail\MailerHelper">
<argument type="service" id="mailer.mailer" />
<argument>%sulu_form.mail.from%</argument>
<argument>%sulu_form.mail.to%</argument>
<argument>%sulu_form.mail.sender%</argument>
<argument type="service" id="logger" />
</service>
</services>
</container>
16 changes: 0 additions & 16 deletions Resources/config/services.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,22 +19,6 @@
<service id="Sulu\Bundle\FormBundle\Form\HandlerInterface" alias="sulu_form.handler"/>

<!-- Mail-->
<service id="sulu.mail.swift_mailer" class="Sulu\Bundle\FormBundle\Mail\Helper">
<argument type="service" id="mailer" />
<argument>%sulu_form.mail.from%</argument>
<argument>%sulu_form.mail.to%</argument>
<argument>%sulu_form.mail.sender%</argument>
<argument type="service" id="logger" />
</service>

<service id="sulu.mail.mailer" class="Sulu\Bundle\FormBundle\Mail\MailerHelper">
<argument type="service" id="mailer.mailer" />
<argument>%sulu_form.mail.from%</argument>
<argument>%sulu_form.mail.to%</argument>
<argument>%sulu_form.mail.sender%</argument>
<argument type="service" id="logger" />
</service>

<service id="sulu_mail.null_helper" class="Sulu\Bundle\FormBundle\Mail\NullHelper">
<argument type="service" id="logger" />
<deprecated />
Expand Down
14 changes: 14 additions & 0 deletions Resources/config/swift_mailer.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
<services>
<service id="sulu.mail.swift_mailer" class="Sulu\Bundle\FormBundle\Mail\Helper">
<argument type="service" id="mailer" />
<argument>%sulu_form.mail.from%</argument>
<argument>%sulu_form.mail.to%</argument>
<argument>%sulu_form.mail.sender%</argument>
<argument type="service" id="logger" />
</service>
</services>
</container>
4 changes: 1 addition & 3 deletions Resources/doc/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,7 @@ sulu_form:
sender: "%env(SULU_ADMIN_EMAIL)%"
```
Configure the email handler to SwiftMailer (default),
NullHelper (for no mails) or MailerHelper (for the new
Symfony mailer):
Optional configure the email handler to SwiftMailer (`swift_mailer`) or the Symfony Mailer (`mailer`):

```yml
sulu_form:
Expand Down
2 changes: 1 addition & 1 deletion Tests/Application/.env
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
APP_ENV=test
DATABASE_URL=mysql://root:root@127.0.0.1:3306/su_form_test
DATABASE_URL=mysql://[email protected]:3306/su_form_test?serverVersion=5.7
DATABASE_CHARSET=utf8mb4
DATABASE_COLLATE=utf8mb4_unicode_ci
11 changes: 10 additions & 1 deletion Tests/Application/MailerKernel.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,16 @@ public function getCacheDir()
return $this->getProjectDir() . \DIRECTORY_SEPARATOR
. 'var' . \DIRECTORY_SEPARATOR
. 'cache' . \DIRECTORY_SEPARATOR
. $this->getContext() . \DIRECTORY_SEPARATOR
. $this->getContext() . '_mailer' . \DIRECTORY_SEPARATOR
. $this->environment;
}

public function getCommonCacheDir()
{
return $this->getProjectDir() . \DIRECTORY_SEPARATOR
. 'var' . \DIRECTORY_SEPARATOR
. 'cache' . \DIRECTORY_SEPARATOR
. 'common_mailer' . \DIRECTORY_SEPARATOR
. $this->environment;
}
}
2 changes: 2 additions & 0 deletions Tests/Application/config/routing_website.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
sulu_form:
resource: "@SuluFormBundle/Resources/config/routing.yml"
13 changes: 5 additions & 8 deletions Tests/Functional/Mail/HelperTestCase.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@
use Doctrine\ORM\EntityManagerInterface;
use Sulu\Bundle\FormBundle\Entity\Form;
use Sulu\Bundle\FormBundle\Tests\Functional\Mail\Fixtures\LoadFormFixture;
use Sulu\Bundle\PageBundle\Document\HomeDocument;
use Sulu\Bundle\TestBundle\Testing\SuluTestCase;
use Sulu\Component\DocumentManager\DocumentManagerInterface;
use Symfony\Bundle\FrameworkBundle\KernelBrowser;

class HelperTestCase extends SuluTestCase
Expand Down Expand Up @@ -45,26 +47,21 @@ protected function setUp(): void
$this->entityManager->clear();
}

/**
* @param Form $form
*
* @throws \Sulu\Component\DocumentManager\Exception\DocumentManagerException
*/
protected function updateHomePage(Form $form = null): void
{
/* @var $suluDocumentManager \Sulu\Component\DocumentManager\DocumentManagerInterface */
/* @var $suluDocumentManager DocumentManagerInterface */
$suluDocumentManager = static::getContainer()->get('sulu_document_manager.document_manager');

/* @var $homePage \Sulu\Bundle\PageBundle\Document\HomeDocument */
/* @var $homePage HomeDocument */
$homePage = $suluDocumentManager->find('/cmf/sulu-io/contents');
$homePage->setResourceSegment('/');
$homePage->getStructure()->bind([
'form' => $form ? $form->getId() : null,
'url' => '/',
]);

$suluDocumentManager->publish($homePage, 'de');
$suluDocumentManager->persist($homePage, 'de');
$suluDocumentManager->publish($homePage, 'de');
$suluDocumentManager->flush();
}

Expand Down

0 comments on commit e80418a

Please sign in to comment.