Completed
Pull Request — master (#30)
by Christian
03:39
created

AsmTranslationLoaderExtension   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 84
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 8

Test Coverage

Coverage 91.89%

Importance

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

3 Methods

Rating   Name   Duplication   Size   Complexity  
C load() 0 62 8
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
            $definition = $container->getDefinition('asm_translation_loader.translation.entity_manager');
79
80 7
            if (method_exists('Symfony\Component\DependencyInjection\Definition', 'setFactory')) {
81 7
                $definition->setFactory(array(new Reference('doctrine'), 'getManager'));
82
            } else {
83
                $definition->setFactoryService('doctrine');
0 ignored issues
show
Bug introduced by
The method setFactoryService() does not exist on Symfony\Component\DependencyInjection\Definition. Did you maybe mean setFactory()?

This check marks calls to methods that do not seem to exist on an object.

This is most likely the result of a method being renamed without all references to it being renamed likewise.

Loading history...
84
                $definition->setFactoryMethod('getManager');
0 ignored issues
show
Bug introduced by
The method setFactoryMethod() does not exist on Symfony\Component\DependencyInjection\Definition. Did you maybe mean setFactory()?

This check marks calls to methods that do not seem to exist on an object.

This is most likely the result of a method being renamed without all references to it being renamed likewise.

Loading history...
85
            }
86 11
        }
87
88 11
        // load the loader resolver service
89
        $loader->load('file_loader_resolver.xml');
90
    }
91
92
    /**
93
     * {@inheritDoc}
94 2
     */
95
    public function getNamespace()
96 2
    {
97
        return 'https://github.com/maschmann/TranslationLoaderBundle/schema/dic';
98
    }
99
100
    /**
101
     * {@inheritDoc}
102
     */
103
    public function getXsdValidationBasePath()
104
    {
105
        return __DIR__.'/../Resources/config/schema';
106
    }
107
}
108