Completed
Push — remove-content-bundle ( c91180...63aea7 )
by Kamil
20:12
created

Configuration::addResourcesSection()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 44
Code Lines 41

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 44
rs 8.8571
c 0
b 0
f 0
nc 1
cc 1
eloc 41
nop 1
1
<?php
2
3
/*
4
 * This file is part of the Sylius package.
5
 *
6
 * (c) Paweł Jędrzejewski
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Sylius\Bundle\MailerBundle\DependencyInjection;
13
14
use Sylius\Bundle\MailerBundle\Form\Type\EmailType;
15
use Sylius\Bundle\ResourceBundle\Controller\ResourceController;
16
use Sylius\Bundle\ResourceBundle\Form\Type\ResourceChoiceType;
17
use Sylius\Bundle\ResourceBundle\SyliusResourceBundle;
18
use Sylius\Component\Mailer\Model\Email;
19
use Sylius\Component\Mailer\Model\EmailInterface;
20
use Sylius\Component\Resource\Factory\Factory;
21
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
22
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
23
use Symfony\Component\Config\Definition\ConfigurationInterface;
24
25
/**
26
 * @author Paweł Jędrzejewski <[email protected]>
27
 * @author Jérémy Leherpeur <[email protected]>
28
 */
29
final class Configuration implements ConfigurationInterface
30
{
31
    /**
32
     * {@inheritdoc}
33
     */
34
    public function getConfigTreeBuilder()
35
    {
36
        $treeBuilder = new TreeBuilder();
37
        $rootNode = $treeBuilder->root('sylius_mailer');
38
39
        $rootNode
40
            ->children()
41
                ->scalarNode('sender_adapter')->defaultValue('sylius.email_sender.adapter.swiftmailer')->end()
42
                ->scalarNode('renderer_adapter')->defaultValue('sylius.email_renderer.adapter.twig')->end()
43
            ->end()
44
        ;
45
46
        $this->addEmailsSection($rootNode);
47
48
        return $treeBuilder;
49
    }
50
51
    /**
52
     * @param ArrayNodeDefinition $node
53
     *
54
     * @return ArrayNodeDefinition
0 ignored issues
show
Documentation introduced by
Should the return type not be ArrayNodeDefinition|null?

This check compares the return type specified in the @return annotation of a function or method doc comment with the types returned by the function and raises an issue if they mismatch.

Loading history...
55
     */
56
    protected function addEmailsSection(ArrayNodeDefinition $node)
57
    {
58
        $node
59
            ->children()
60
                ->arrayNode('sender')
61
                    ->addDefaultsIfNotSet()
62
                    ->children()
63
                        ->scalarNode('name')->defaultValue('Example.com Store')->end()
64
                        ->scalarNode('address')->defaultValue('[email protected]')->end()
65
                    ->end()
66
                ->end()
67
                ->arrayNode('emails')
68
                    ->useAttributeAsKey('code')
69
                    ->prototype('array')
70
                        ->children()
71
                            ->scalarNode('subject')->cannotBeEmpty()->end()
72
                            ->scalarNode('template')->cannotBeEmpty()->end()
73
                            ->booleanNode('enabled')->defaultTrue()->end()
74
                            ->arrayNode('sender')
75
                                ->children()
76
                                    ->scalarNode('name')->end()
77
                                    ->scalarNode('address')->end()
78
                                ->end()
79
                            ->end()
80
                        ->end()
81
                    ->end()
82
                ->end()
83
                ->arrayNode('templates')
84
                    ->useAttributeAsKey('name')
85
                    ->prototype('scalar')->end()
86
                ->end()
87
            ->end()
88
        ;
89
    }
90
}
91