summaryrefslogtreecommitdiffstats
path: root/modules-available/baseconfig/api.inc.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules-available/baseconfig/api.inc.php')
-rw-r--r--modules-available/baseconfig/api.inc.php23
1 files changed, 22 insertions, 1 deletions
diff --git a/modules-available/baseconfig/api.inc.php b/modules-available/baseconfig/api.inc.php
index a4024c5e..bc834930 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) {
@@ -119,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)) {