diff options
author | Simon Rettberg | 2018-02-08 15:05:58 +0100 |
---|---|---|
committer | Simon Rettberg | 2018-02-08 15:05:58 +0100 |
commit | ce10ff7a848985f44e6c3c371f6075f67a8b7aeb (patch) | |
tree | a99a41c91f5b036aa28c0f9da52c640a8c6c4e2d /modules-available | |
parent | Update translations (diff) | |
download | slx-admin-ce10ff7a848985f44e6c3c371f6075f67a8b7aeb.tar.gz slx-admin-ce10ff7a848985f44e6c3c371f6075f67a8b7aeb.tar.xz slx-admin-ce10ff7a848985f44e6c3c371f6075f67a8b7aeb.zip |
[exams/roomplanner] Hybrid PVS managers become dedicated in exam mode
Hopefully fixes #3066
Diffstat (limited to 'modules-available')
4 files changed, 42 insertions, 2 deletions
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) { diff --git a/modules-available/exams/baseconfig/getconfig.inc.php b/modules-available/exams/baseconfig/getconfig.inc.php index 37a2caf4..e5dd01c9 100644 --- a/modules-available/exams/baseconfig/getconfig.inc.php +++ b/modules-available/exams/baseconfig/getconfig.inc.php @@ -15,5 +15,4 @@ if (Exams::isInExamMode($locationIds, $lectureId, $autoLogin)) { ConfigHolder::add('SLX_AUTOLOGIN', $autoLogin, 10000); } ConfigHolder::add('SLX_SYSTEMD_TARGET', 'exam-mode', 10000); - ConfigHolder::add("SLX_PVS_HYBRID", false, 10000); } diff --git a/modules-available/roomplanner/baseconfig/getconfig.inc.php b/modules-available/roomplanner/baseconfig/getconfig.inc.php index f4708547..79af974b 100644 --- a/modules-available/roomplanner/baseconfig/getconfig.inc.php +++ b/modules-available/roomplanner/baseconfig/getconfig.inc.php @@ -1,3 +1,24 @@ <?php ConfigHolder::add("SLX_PVS_CONFIG_URL", 'http://' . $_SERVER['SERVER_ADDR'] . $_SERVER['SCRIPT_NAME'] . '?do=roomplanner'); + +/** + * Make sure we switch to dedicated mode if this is a hybrid mode + * manager and we're in exam mode. + * Also disable exam mode for any kind of manager. + */ +ConfigHolder::addPostHook(function() { + $exam = (bool)ConfigHolder::get('SLX_EXAM'); + $hybrid = ConfigHolder::get('SLX_PVS_HYBRID') === 'yes'; + $dedi = (bool)ConfigHolder::get('SLX_PVS_DEDICATED'); + if ($exam) { + if ($dedi || $hybrid) { + ConfigHolder::add('SLX_EXAM', false, 100000); + ConfigHolder::add('SLX_SYSTEMD_TARGET', false, 100000); + } + if ($hybrid) { + ConfigHolder::add('SLX_PVS_HYBRID', false, 100000); + ConfigHolder::add('SLX_PVS_DEDICATED', 'yes', 100000); + } + } +});
\ No newline at end of file diff --git a/modules-available/roomplanner/inc/pvsgenerator.inc.php b/modules-available/roomplanner/inc/pvsgenerator.inc.php index cda32fce..5a7de9f0 100644 --- a/modules-available/roomplanner/inc/pvsgenerator.inc.php +++ b/modules-available/roomplanner/inc/pvsgenerator.inc.php @@ -222,7 +222,6 @@ class PvsGenerator if (isset($data['dedicatedmgr']) && $data['dedicatedmgr']) { ConfigHolder::add("SLX_ADDONS", false, 100000); ConfigHolder::add("SLX_PVS_DEDICATED", 'yes'); - ConfigHolder::add("SLX_EXAM", false, 100000); ConfigHolder::add("SLX_AUTOLOGIN", 'ON', 100000); } else { ConfigHolder::add("SLX_PVS_HYBRID", 'yes'); |