1 | <?php |
||
16 | class FiniteFiniteExtension extends Extension |
||
17 | { |
||
18 | /** |
||
19 | * {@inheritdoc} |
||
20 | */ |
||
21 | 5 | public function load(array $configs, ContainerBuilder $container) |
|
22 | { |
||
23 | 5 | $configuration = new Configuration(); |
|
24 | 5 | $config = $this->processConfiguration($configuration, $configs); |
|
25 | |||
26 | 5 | $loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); |
|
27 | 5 | $loader->load('services.xml'); |
|
28 | 5 | $factoryDefinition = $container->getDefinition('finite.factory'); |
|
29 | |||
30 | 5 | $smDefinition = $container->getDefinition('finite.state_machine'); |
|
31 | 5 | if (method_exists($smDefinition, 'setShared')) { |
|
32 | 5 | $smDefinition->setShared(false); |
|
33 | 4 | } else { |
|
34 | $smDefinition->setScope('prototype'); |
||
35 | } |
||
36 | |||
37 | 5 | foreach ($config as $key => $stateMachineConfig) { |
|
38 | 5 | $stateMachineConfig = $this->removeDisabledCallbacks($stateMachineConfig); |
|
39 | |||
40 | 5 | $definition = clone $container->getDefinition('finite.array_loader'); |
|
41 | 5 | $definition->replaceArgument(0, $stateMachineConfig); |
|
42 | 5 | $definition->addTag('finite.loader'); |
|
43 | |||
44 | // setLazy method wasn't available before 2.3, FiniteBundle requirement is ~2.1 |
||
45 | 5 | if (method_exists($definition, 'setLazy')) { |
|
46 | 5 | $definition->setLazy(true); |
|
47 | 4 | } |
|
48 | |||
49 | 5 | $serviceId = 'finite.loader.'.$key; |
|
50 | 5 | $container->setDefinition($serviceId, $definition); |
|
51 | |||
52 | 5 | $factoryDefinition->addMethodCall('addLoader', array(new Reference($serviceId))); |
|
53 | 4 | } |
|
54 | |||
55 | 5 | $container->removeDefinition('finite.array_loader'); |
|
56 | 5 | } |
|
57 | |||
58 | /** |
||
59 | * Remove callback entries where index 'disabled' is set to true. |
||
60 | * |
||
61 | * @param array $config |
||
62 | * |
||
63 | * @return array |
||
64 | */ |
||
65 | 5 | protected function removeDisabledCallbacks(array $config) |
|
82 | } |
||
83 |