From ce10ff7a848985f44e6c3c371f6075f67a8b7aeb Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Thu, 8 Feb 2018 15:05:58 +0100 Subject: [exams/roomplanner] Hybrid PVS managers become dedicated in exam mode Hopefully fixes #3066 --- modules-available/baseconfig/api.inc.php | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'modules-available/baseconfig/api.inc.php') diff --git a/modules-available/baseconfig/api.inc.php b/modules-available/baseconfig/api.inc.php index a4024c5e..853c6f51 100644 --- a/modules-available/baseconfig/api.inc.php +++ b/modules-available/baseconfig/api.inc.php @@ -16,6 +16,8 @@ class ConfigHolder private static $context = ''; + private static $postHooks = []; + public static function setContext($name) { self::$context = $name; @@ -54,8 +56,26 @@ class ConfigHolder return self::$config[$key][0]['value']; } + /** + * @param callable $func + */ + public static function addPostHook($func) + { + self::$postHooks[] = array('context' => self::$context, 'function' => $func); + } + + public static function applyPostHooks() + { + foreach (self::$postHooks as $hook) { + self::$context = $hook['context'] . ':post'; + $hook['function'](); + } + self::$postHooks = []; + } + public static function getConfig() { + self::applyPostHooks(); $ret = []; foreach (self::$config as $key => $list) { if ($list[0]['value'] === false) @@ -67,6 +87,7 @@ class ConfigHolder public static function outputConfig() { + self::applyPostHooks(); foreach (self::$config as $key => $list) { echo '##', $key, "\n"; foreach ($list as $pos => $item) { -- cgit v1.2.3-55-g7522 From 940ff7f6b505faf1dd2a121f9588da5f97e9e282 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Fri, 20 Apr 2018 12:55:24 +0200 Subject: Fix more calls --- modules-available/baseconfig/api.inc.php | 2 +- modules-available/baseconfig_bwidm/hooks/translation.inc.php | 4 ++-- modules-available/baseconfig_bwlp/hooks/translation.inc.php | 4 ++-- modules-available/runmode/page.inc.php | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) (limited to 'modules-available/baseconfig/api.inc.php') diff --git a/modules-available/baseconfig/api.inc.php b/modules-available/baseconfig/api.inc.php index 853c6f51..bc834930 100644 --- a/modules-available/baseconfig/api.inc.php +++ b/modules-available/baseconfig/api.inc.php @@ -140,7 +140,7 @@ foreach (glob('modules/*/baseconfig/getconfig.inc.php') as $file) { $mod = Module::get($out[1]); if ($mod === false) continue; - $mod->activate(); + $mod->activate(1, false); foreach ($mod->getDependencies() as $dep) { $depFile = 'modules/' . $dep . '/baseconfig/getconfig.inc.php'; if (file_exists($depFile) && Module::isAvailable($dep)) { diff --git a/modules-available/baseconfig_bwidm/hooks/translation.inc.php b/modules-available/baseconfig_bwidm/hooks/translation.inc.php index 5ccafbc4..a53500fc 100644 --- a/modules-available/baseconfig_bwidm/hooks/translation.inc.php +++ b/modules-available/baseconfig_bwidm/hooks/translation.inc.php @@ -20,7 +20,7 @@ $HANDLER['subsections'] = array( * @return array */ $HANDLER['grep_config-variable-categories'] = function($module) { - if (!$module->activate()) + if (!$module->activate(1, false)) return array(); $want = BaseConfigUtil::getCategories($module); foreach ($want as &$entry) { @@ -35,7 +35,7 @@ $HANDLER['grep_config-variable-categories'] = function($module) { * @return array */ $HANDLER['grep_config-variables'] = function($module) { - if (!$module->activate()) + if (!$module->activate(1, false)) return array(); $want = BaseConfigUtil::getVariables($module); foreach ($want as &$entry) { diff --git a/modules-available/baseconfig_bwlp/hooks/translation.inc.php b/modules-available/baseconfig_bwlp/hooks/translation.inc.php index 5ccafbc4..a53500fc 100644 --- a/modules-available/baseconfig_bwlp/hooks/translation.inc.php +++ b/modules-available/baseconfig_bwlp/hooks/translation.inc.php @@ -20,7 +20,7 @@ $HANDLER['subsections'] = array( * @return array */ $HANDLER['grep_config-variable-categories'] = function($module) { - if (!$module->activate()) + if (!$module->activate(1, false)) return array(); $want = BaseConfigUtil::getCategories($module); foreach ($want as &$entry) { @@ -35,7 +35,7 @@ $HANDLER['grep_config-variable-categories'] = function($module) { * @return array */ $HANDLER['grep_config-variables'] = function($module) { - if (!$module->activate()) + if (!$module->activate(1, false)) return array(); $want = BaseConfigUtil::getVariables($module); foreach ($want as &$entry) { diff --git a/modules-available/runmode/page.inc.php b/modules-available/runmode/page.inc.php index 9f2c2f44..f8b48152 100644 --- a/modules-available/runmode/page.inc.php +++ b/modules-available/runmode/page.inc.php @@ -170,7 +170,7 @@ class Page_RunMode extends Page Message::addError('main.no-such-module', $moduleId); Util::redirect('?do=runmode'); } - $module->activate(); + $module->activate(1, false); $config = RunMode::getModuleConfig($moduleId); if ($config === false) { Message::addError('module-hasnt-runmode', $moduleId); -- cgit v1.2.3-55-g7522