array( * catid => xx, * defaultvalue => xx, * permissions => xx, * validator => xx, * ) * * @return array all known config variables */ public static function getVariables() { $settings = array(); foreach (glob('modules/*/baseconfig/settings.json', GLOB_NOSORT) as $file) { $data = json_decode(file_get_contents($file), true); if (!is_array($data)) continue; preg_match('#^modules/([^/]+)/#', $file, $out); foreach ($data as &$entry) { $entry['module'] = $out[1]; } $settings += $data; } return $settings; } public static function getCategories() { $categories = array(); foreach (glob('modules/*/baseconfig/categories.json', GLOB_NOSORT) as $file) { $data = json_decode(file_get_contents($file), true); if (!is_array($data)) continue; preg_match('#^modules/([^/]+)/#', $file, $out); foreach ($data as &$entry) { $entry = array('module' => $out[1], 'sortpos' => $entry); } $categories += $data; } return $categories; } /** * Mark variables that would be shadowed according to the given values. * * @param $vars list of vars as obtained from BaseConfigUtil::getVariables() * @param $values key-value-pairs of variable assignments to work with */ public static function markShadowedVars(&$vars, $values) { foreach ($vars as $key => &$var) { if (!isset($var['shadows'])) continue; foreach ($var['shadows'] as $triggerVal => $destSettings) { if (isset($values[$key]) && $values[$key] !== $triggerVal) continue; foreach ($destSettings as $destSetting) { if (isset($vars[$destSetting])) { $vars[$destSetting]['shadowed'] = true; } } } } } }