prependDoctrineTargetEntities()   A
last analyzed

Complexity

Conditions 2
Paths 1

Size

Total Lines 14
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 7
nc 1
nop 1
dl 0
loc 14
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace GGGGino\SkuskuCartBundle\DependencyInjection;
4
5
use Doctrine\Bundle\DoctrineBundle\DependencyInjection\DoctrineExtension;
6
use Symfony\Component\DependencyInjection\ContainerBuilder;
7
use Symfony\Component\Config\FileLocator;
8
use Symfony\Component\DependencyInjection\Definition;
9
use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface;
10
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
11
use Symfony\Component\DependencyInjection\Loader;
12
13
/**
14
 * Class GGGGinoSkuskuCartExtension
15
 * @package Allyou\ManagementBundle\DependencyInjection
16
 */
17
class GGGGinoSkuskuCartExtension extends Extension implements PrependExtensionInterface
18
{
19
    /**
20
     * {@inheritdoc}
21
     */
22
    public function load(array $configs, ContainerBuilder $container)
23
    {
24
25
        $configuration = new Configuration();
26
        $config = $this->processConfiguration($configuration, $configs);
27
28
        $container->setParameter('ggggino_skuskucart.allow_anonymous_shop', $config['allow_anonymous_shop']);
29
30
        $container->setParameter('ggggino_skuskucart.additional_fields', $config['additional_fields']);
31
32
        $container->setParameter('ggggino_skuskucart.extra_fields', $config['extra_fields']);                
33
34
        $container->setParameter('ggggino_skuskucart.stepform', $config['stepform']);
35
36
        $container->setParameter('ggggino_skuskucart.stepform_class', $config['stepform_class']);
37
38
        $container->setParameter('ggggino_skuskucart.cart_mode', $config['cart_mode']);        
39
40
        foreach ($config['templates'] as $key => $template) {
41
            $container->setParameter('ggggino_skuskucart.templates.' . $key, $template);
42
        }
43
44
        $container->setParameter('ggggino_skuskucart.redirect_after_done_route', $config['redirect_after_done_route']);        
45
46
        $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
47
        $loader->load('services.yml');
48
49
        /*$config = $container->findDefinition('doctrine.orm.listeners.resolve_target_entity');*/
50
51
        /** @var Definition $def */
52
        /*$def = $container->get('doctrine.orm.listeners.resolve_target_entity');
53
        die(get_class($def));
54
        $entities = $def->addMethodCall('addResolveTargetEntity', [
55
            $name,
56
            $implementation,
57
            [],
58
        ]);
59
        foreach ($config['resolve_target_entities'] as $name => $implementation) {
60
            $def->addMethodCall('addResolveTargetEntity', [
61
                $name,
62
                $implementation,
63
                [],
64
            ]);
65
        }
66
        $doctrineConfig = $container->getParameter('doctrine');
67
        var_dump($doctrineConfig);exit;*/
68
    }
69
70
    /**
71
     * Allow an extension to prepend the extension configurations.
72
     *
73
     * @param ContainerBuilder $container
74
     */
75
    public function prepend(ContainerBuilder $container)
76
    {
77
        $this->prependDoctrineTargetEntities($container);
78
79
        $this->prependPayumGateway($container);
80
    }
81
82
    /**
83
     * @param ContainerBuilder $container
84
     */
85
    private function prependDoctrineTargetEntities(ContainerBuilder $container)
86
    {
87
        $doctrineConfig = $container->getExtensionConfig('doctrine') ?: array(
88
            array(
89
                'orm' => array(
90
                    'resolve_target_entities' => array()
91
                )
92
            )
93
        );
94
95
        $arrayEntities = array_merge(...$doctrineConfig);
96
        $arrayEntities = $arrayEntities['orm']['resolve_target_entities'];
97
98
        $container->setParameter('skusku_abstract_entities', $arrayEntities);
99
    }
100
101
    /**
102
     * @param ContainerBuilder $container
103
     */
104
    private function prependPayumGateway(ContainerBuilder $container)
105
    {
106
        if (!$container->hasExtension('payum')) {
107
            die('non ce payum');
0 ignored issues
show
Best Practice introduced by
Using exit here is not recommended.

In general, usage of exit should be done with care and only when running in a scripting context like a CLI script.

Loading history...
108
        }
109
110
        $configs = $container->getExtensionConfig('payum') ?: array(
111
            array(
112
                'gateways' => array(
113
                )
114
            )
115
        );
116
117
        $arrayEntities = array_merge(...$configs);
118
        $arrayEntities = $arrayEntities['gateways'];
119
        $finalEntities = array();
120
121
        foreach ($arrayEntities as $key => $value) {
122
            $labelName = isset($value['name']) ? $value['name'] : $key;
123
            $finalEntities[$labelName] = $key;
124
        }
125
126
        $container->setParameter('skusku_gateways', $finalEntities);
127
    }
128
129
    /**
130
     * @inheritdoc
131
     */
132
    public function getAlias()
133
    {
134
        return 'ggggino_skuskucart';
135
    }
136
}
137