X-Git-Url: https://git.rapsys.eu/packbundle/blobdiff_plain/85954eeea034b2904c5bc8bcfa710349702f02bf..7a2bed7826daa04288eed02b303f6194f8908566:/DependencyInjection/RapsysPackExtension.php diff --git a/DependencyInjection/RapsysPackExtension.php b/DependencyInjection/RapsysPackExtension.php index 97bb11f..c844233 100644 --- a/DependencyInjection/RapsysPackExtension.php +++ b/DependencyInjection/RapsysPackExtension.php @@ -18,19 +18,69 @@ class RapsysPackExtension extends Extension { */ public function load(array $configs, ContainerBuilder $container) { //Load configuration - $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); - $loader->load('services.yml'); + #$loader = new Loader\YamlFileLoader($container, new FileLocator(\dirname(__DIR__).'/Resources/config')); + $loader = new Loader\YamlFileLoader($container, new FileLocator('config/packages')); + $loader->load($this->getAlias().'.yaml'); //Load configuration $configuration = $this->getConfiguration($configs, $container); $config = $this->processConfiguration($configuration, $configs); + + //Set default config in parameter + if (!$container->hasParameter($alias = $this->getAlias())) { + $container->setParameter($alias, $config[$alias]); + //Fill missing entries + } else { + //Change in config flag + $change = false; + + //Iterate on each user configuration keys + foreach($container->getParameter($alias) as $k => $v) { + //Check if value is an array + if (is_array($v)) { + //Iterate on each array keys + foreach($v as $sk => $sv) { + //Check if sub value is an array + if (is_array($sv)) { + //TODO: implement sub sub key merging ? (or recursive ?) + @trigger_error('Nested level > 2 not yet implemented here', E_USER_ERROR); + //Save sub value + } else { + //Trigger changed flag + $change = true; + //Replace default value with user provided one + $config[$alias][$k][$sk] = $sv; + } + } + //Save value + } else { + //Trigger changed flag + $change = true; + //Replace default value with user provided one + $config[$alias][$k] = $v; + } + } + + //Check if change occured + if ($change) { + //Save parameters + $container->setParameter($alias, $config[$alias]); + } + } } /** * {@inheritdoc} */ public function getConfiguration(array $configs, ContainerBuilder $container) { - //Get configuration instance with resolved web path - return new Configuration($container->getParameter('kernel.project_dir').'/web/'); + //Get configuration instance with resolved public path + return new Configuration($container->getParameter('kernel.project_dir').'/public/'); + } + + /** + * {@inheritdoc} + */ + public function getAlias() { + return 'rapsys_pack'; } }