Completed
Pull Request — master (#35)
by Christian
03:34
created

AsmTranslationLoaderExtension   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 75
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 8

Test Coverage

Coverage 91.89%

Importance

Changes 13
Bugs 4 Features 1
Metric Value
wmc 9
c 13
b 4
f 1
lcom 0
cbo 8
dl 0
loc 75
ccs 34
cts 37
cp 0.9189
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
B load() 0 53 7
A getNamespace() 0 4 1
A getXsdValidationBasePath() 0 4 1
1
<?php
2
/**
3
 * @namespace Asm\TranslationLoaderBundle\DependencyInjection
4
 */
5
namespace Asm\TranslationLoaderBundle\DependencyInjection;
6
7
use Symfony\Component\DependencyInjection\ContainerBuilder;
8
use Symfony\Component\Config\FileLocator;
9
use Symfony\Component\DependencyInjection\Reference;
10
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
11
use Symfony\Component\DependencyInjection\Loader;
12
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
13
14
/**
15
 * This is the class that loads and manages your bundle configuration
16
 *
17
 * @package Asm\TranslationLoaderBundle\DependencyInjection
18
 * @author marc aschmann <[email protected]>
19
 * @uses Symfony\Component\DependencyInjection\ContainerBuilder
20
 * @uses Symfony\Component\Config\FileLocator
21
 * @uses Symfony\Component\HttpKernel\DependencyInjection\Extension
22
 * @uses Symfony\Component\DependencyInjection\Loader
23
 */
24
class AsmTranslationLoaderExtension extends Extension
25
{
26
    /**
27
     * {@inheritDoc}
28
     */
29 7
    public function load(array $configs, ContainerBuilder $container)
30
    {
31 7
        $configuration = new Configuration();
32 7
        $config = $this->processConfiguration($configuration, $configs);
33
34 7
        $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
35 7
        $loader->load('services.yml');
36
37
        // set entity manager for translations
38 7
        $em = 'default';
39 7
        if (isset($config['database']['entity_manager'])
40 7
            && $config['database']['entity_manager'] != 'default'
41 7
        ) {
42
            $em = $config['database']['entity_manager'];
43
        }
44
45
        // association between file extensions and translation loader service ids
46 7
        $container->setParameter('asm_translation_loader.translation_loaders', $config['loaders']);
47 7
        $container->setParameter('asm_translation_loader.database.entity_manager', $em);
48
49 7
        $loader = new XmlFileLoader(
50 7
            $container,
51 7
            new FileLocator(__DIR__.'/../Resources/config')
52 7
        );
53
54
        // load the event dispatcher
55 7
        $loader->load('event_dispatcher.xml');
56
57
        // load the translation manager resource
58 7
        $container->setParameter('asm_translation_loader.resources', $config['resources']);
59 7
        $loader->load('translation_manager_resource.xml');
60
61
        // check if history feature is enabled
62 7
        if (isset($config['history']['enabled']) && true === $config['history']['enabled']) {
63 1
            $loader->load('translation_history_subscriber.xml');
64
65 1
            $definition = $container->getDefinition('asm_translation_loader.history.subscriber');
66
67 1
            if (interface_exists('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface')) {
68 1
                $definition->replaceArgument(1, new Reference('security.token_storage'));
69 1
            } else {
70
                $definition->replaceArgument(1, new Reference('security.context'));
71
            }
72 1
        }
73
74
75 7
        if ('orm' == $config['driver']) {
76 7
            $loader->load('orm.xml');
77 7
        }
78
79
        // load the loader resolver service
80 7
        $loader->load('file_loader_resolver.xml');
81 7
    }
82
83
    /**
84
     * {@inheritDoc}
85
     */
86 11
    public function getNamespace()
87
    {
88 11
        return 'https://github.com/maschmann/TranslationLoaderBundle/schema/dic';
89
    }
90
91
    /**
92
     * {@inheritDoc}
93
     */
94 2
    public function getXsdValidationBasePath()
95
    {
96 2
        return __DIR__.'/../Resources/config/schema';
97
    }
98
}
99