From 1ea14f191d4ddd51e2df8ea30e4e3ca24734d172 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Mon, 29 Aug 2016 16:57:38 +0200 Subject: [baseconfig*] Fix translation hook to only consider the current module --- inc/module.inc.php | 3 ++- .../baseconfig/inc/baseconfigutil.inc.php | 19 +++++++++++++++---- .../baseconfig_bwlp/hooks/translation.inc.php | 10 ++++++---- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/inc/module.inc.php b/inc/module.inc.php index 960a0a87..597cfb57 100644 --- a/inc/module.inc.php +++ b/inc/module.inc.php @@ -175,7 +175,7 @@ class Module public function activate($depth = 1) { if ($this->activated !== false || $this->depsMissing) - return; + return $this->activated !== false; $this->activated = $depth; spl_autoload_register(function($class) { $file = 'modules/' . $this->name . '/inc/' . preg_replace('/[^a-z0-9]/', '', strtolower($class)) . '.inc.php'; @@ -189,6 +189,7 @@ class Module $get->activate($depth + 1); } } + return true; } public function getDependencies() diff --git a/modules-available/baseconfig/inc/baseconfigutil.inc.php b/modules-available/baseconfig/inc/baseconfigutil.inc.php index 75173ee6..3039ea12 100644 --- a/modules-available/baseconfig/inc/baseconfigutil.inc.php +++ b/modules-available/baseconfig/inc/baseconfigutil.inc.php @@ -13,12 +13,18 @@ class BaseConfigUtil * validator => xx, * ) * + * @param \Module $module optional, only consider given module, not all enabled modules * @return array all known config variables */ - public static function getVariables() + public static function getVariables($module = false) { $settings = array(); - foreach (glob('modules/*/baseconfig/settings.json', GLOB_NOSORT) as $file) { + if ($module === false) { + $module = '*'; + } else { + $module = $module->getIdentifier(); + } + foreach (glob("modules/{$module}/baseconfig/settings.json", GLOB_NOSORT) as $file) { $data = json_decode(file_get_contents($file), true); if (!is_array($data)) continue; @@ -31,10 +37,15 @@ class BaseConfigUtil return $settings; } - public static function getCategories() + public static function getCategories($module = false) { $categories = array(); - foreach (glob('modules/*/baseconfig/categories.json', GLOB_NOSORT) as $file) { + if ($module === false) { + $module = '*'; + } else { + $module = $module->getIdentifier(); + } + foreach (glob("modules/{$module}/baseconfig/categories.json", GLOB_NOSORT) as $file) { $data = json_decode(file_get_contents($file), true); if (!is_array($data)) continue; diff --git a/modules-available/baseconfig_bwlp/hooks/translation.inc.php b/modules-available/baseconfig_bwlp/hooks/translation.inc.php index 7588fe38..00898075 100644 --- a/modules-available/baseconfig_bwlp/hooks/translation.inc.php +++ b/modules-available/baseconfig_bwlp/hooks/translation.inc.php @@ -18,8 +18,9 @@ $HANDLER['subsections'] = array( * Configuration categories */ $HANDLER['grep_config-variable-categories'] = function($module) { - $module->activate(); - $want = BaseConfigUtil::getCategories(); + if (!$module->activate()) + return array(); + $want = BaseConfigUtil::getCategories($module); foreach ($want as &$entry) { $entry = true; } @@ -30,8 +31,9 @@ $HANDLER['grep_config-variable-categories'] = function($module) { * Configuration variables */ $HANDLER['grep_config-variables'] = function($module) { - $module->activate(); - $want = BaseConfigUtil::getVariables(); + if (!$module->activate()) + return array(); + $want = BaseConfigUtil::getVariables($module); foreach ($want as &$entry) { $entry = true; } -- cgit v1.2.3-55-g7522