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'); |
|
|
|
|
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
|
|
|
|
In general, usage of exit should be done with care and only when running in a scripting context like a CLI script.