1 | <?php |
||
29 | class TranslationExtension extends Extension |
||
30 | { |
||
31 | /** |
||
32 | * {@inheritdoc} |
||
33 | */ |
||
34 | 1 | public function load(array $configs, ContainerBuilder $container) |
|
78 | |||
79 | /** |
||
80 | * Handle the config node to prepare the config manager. |
||
81 | * |
||
82 | * @param ContainerBuilder $container |
||
83 | * @param array $config |
||
84 | */ |
||
85 | 1 | private function handleConfigNode(ContainerBuilder $container, array $config) |
|
86 | { |
||
87 | 1 | $configurationManager = $container->getDefinition('php_translation.configuration_manager'); |
|
88 | // $first will be the "default" configuration. |
||
89 | 1 | $first = null; |
|
90 | 1 | foreach ($config['configs'] as $name => &$c) { |
|
91 | 1 | if ($first === null || $name === 'default') { |
|
92 | 1 | $first = $name; |
|
93 | 1 | } |
|
94 | 1 | if (empty($c['project_root'])) { |
|
95 | // Add a project root of none is set. |
||
96 | 1 | $c['project_root'] = dirname($container->getParameter('kernel.root_dir')); |
|
97 | 1 | } |
|
98 | 1 | $c['name'] = $name; |
|
99 | 1 | $c['locales'] = $config['locales']; |
|
100 | 1 | $configurationServiceId = 'php_translation.configuration.'.$name; |
|
101 | $configDef = $container->register($configurationServiceId, ConfigurationModel::class); |
||
102 | $configDef->setPublic(false)->addArgument($c); |
||
103 | $configurationManager->addMethodCall('addConfiguration', [$name, new Reference($configurationServiceId)]); |
||
104 | |||
105 | /* |
||
106 | * Configure storage service |
||
107 | */ |
||
108 | $storageDefinition = new DefinitionDecorator('php_translation.storage.abstract'); |
||
109 | $storageDefinition->replaceArgument(2, new Reference($configurationServiceId)); |
||
110 | $container->setDefinition('php_translation.storage.'.$name, $storageDefinition); |
||
111 | |||
112 | // Add storages |
||
113 | foreach ($c['remote_storage'] as $serviceId) { |
||
114 | $storageDefinition->addMethodCall('addRemoteStorage', [new Reference($serviceId)]); |
||
115 | } |
||
116 | |||
117 | 1 | foreach ($c['local_storage'] as $serviceId) { |
|
118 | 1 | if ($serviceId !== 'php_translation.local_file_storage.abstract') { |
|
119 | $storageDefinition->addMethodCall('addLocalStorage', [new Reference($serviceId)]); |
||
120 | continue; |
||
121 | } |
||
122 | |||
123 | 1 | $def = new DefinitionDecorator($serviceId); |
|
124 | 1 | $def->replaceArgument(2, [$c['output_dir']]) |
|
125 | 1 | ->replaceArgument(3, [$c['local_file_storage_options']]) |
|
126 | 1 | ->addTag('php_translation.storage', ['type' => 'local', 'name' => $name]); |
|
127 | 1 | $container->setDefinition('php_translation.single_storage.file.'.$name, $def); |
|
128 | 1 | } |
|
129 | 1 | } |
|
130 | |||
131 | 1 | if ($first !== null) { |
|
132 | // Create some aliases for the default storage |
||
133 | 1 | $container->setAlias('php_translation.storage', 'php_translation.storage.'.$first); |
|
134 | 1 | if ($first !== 'default') { |
|
135 | $container->setAlias('php_translation.storage.default', 'php_translation.storage.'.$first); |
||
136 | } |
||
137 | 1 | } |
|
138 | 1 | } |
|
139 | |||
140 | /** |
||
141 | * Handle config for WebUI. |
||
142 | * |
||
143 | * @param ContainerBuilder $container |
||
144 | * @param array $config |
||
145 | */ |
||
146 | private function enableWebUi(ContainerBuilder $container, array $config) |
||
152 | |||
153 | /** |
||
154 | * Handle config for EditInPlace. |
||
155 | * |
||
156 | * @param ContainerBuilder $container |
||
157 | * @param array $config |
||
158 | */ |
||
159 | private function enableEditInPlace(ContainerBuilder $container, array $config) |
||
176 | |||
177 | /** |
||
178 | * Handle config for Symfony Profiler. |
||
179 | * |
||
180 | * @param ContainerBuilder $container |
||
181 | * @param array $config |
||
182 | */ |
||
183 | private function enableSymfonyProfiler(ContainerBuilder $container, array $config) |
||
187 | |||
188 | /** |
||
189 | * Handle config for fallback auto translate. |
||
190 | * |
||
191 | * @param ContainerBuilder $container |
||
192 | * @param array $config |
||
193 | */ |
||
194 | private function enableFallbackAutoTranslator(ContainerBuilder $container, array $config) |
||
204 | |||
205 | /** |
||
206 | * {@inheritdoc} |
||
207 | */ |
||
208 | public function getAlias() |
||
212 | } |
||
213 |