diff --git a/src/Core/GNUsocial.php b/src/Core/GNUsocial.php index 9e4e98cbf5..16fd144a75 100644 --- a/src/Core/GNUsocial.php +++ b/src/Core/GNUsocial.php @@ -236,16 +236,17 @@ class GNUsocial implements EventSubscriberInterface // Load .local $loader->load($local_file); $locals = $container->getParameter('locals'); + $container->getParameterBag()->remove('locals'); // Load normal config $loader->load(INSTALLDIR . '/social' . Kernel::CONFIG_EXTS, 'glob'); - $container->setParameter('gnusocial_defaults', $container->getParameter('gnusocial')); + $defaults = $container->getParameter('gnusocial'); // Load module config - $parameters = ModuleManager::configureContainer($container, $loader); + $module_configs = ModuleManager::configureContainer($container, $loader); // Merge parameter $from with values already set in $to - $merge_config = function ($from, $to = null) use ($container, $locals) { + $merge_local_config = function ($from, $to = null) use ($container, $locals) { $to ??= $from; $wrapper = $container->hasParameter($to) ? $container->getParameter($to) : []; $content = [$from => $container->getParameter($from)]; @@ -257,11 +258,15 @@ class GNUsocial implements EventSubscriberInterface // Override and merge any of the previous settings from the locals if (\is_array($locals)) { - $merge_config('gnusocial'); - foreach ($parameters as $mod => $type) { - $merge_config($mod, $type); + $merge_local_config('gnusocial'); + foreach ($module_configs as $mod => $type) { + $loader->load(INSTALLDIR . \PATH_SEPARATOR . $type . \PATH_SEPARATOR . ucfirst($mod) . 'config' . Kernel::CONFIG_EXTS, 'glob'); + $defaults[$mod] = $container->getParameter($mod); + $merge_local_config($mod, $type); // TODO likely broken } } + $container->setParameter('gnusocial_defaults', $defaults); + $container->setParameter('gnusocial', $defaults); } /** diff --git a/src/Core/ModuleManager.php b/src/Core/ModuleManager.php index cf24fec4d8..875f69692d 100644 --- a/src/Core/ModuleManager.php +++ b/src/Core/ModuleManager.php @@ -196,18 +196,18 @@ class ModuleManager } $container->loadFromExtension('twig', ['paths' => $templates]); - $modules = array_merge(glob(INSTALLDIR . '/components/*'), glob(INSTALLDIR . '/plugins/*')); - $parameters = []; + $modules = array_merge(glob(INSTALLDIR . '/components/*'), glob(INSTALLDIR . '/plugins/*')); + $module_configs = []; foreach ($modules as $mod) { $path = "{$mod}/config" . Kernel::CONFIG_EXTS; $loader->load($path, 'glob'); // Is supposed to, but doesn't return anything that would let us identify if loading worked foreach (explode(',', mb_substr(Kernel::CONFIG_EXTS, 2, -1)) as $ext) { if (file_exists("{$mod}/config.{$ext}")) { - $parameters[basename(mb_strtolower($mod))] = basename(\dirname(mb_strtolower($mod))); + $module_configs[basename(mb_strtolower($mod))] = basename(\dirname(mb_strtolower($mod))); break; } } } - return $parameters; + return $module_configs; } }