summaryrefslogtreecommitdiff
path: root/inc/mod
diff options
context:
space:
mode:
authorMichael Foster <savetheinternet@tinyboard.org>2013-08-04 17:53:09 -0400
committerMichael Foster <savetheinternet@tinyboard.org>2013-08-04 17:53:09 -0400
commitc3da5ab4e1186d230c1c836a08f0cb68c55ce231 (patch)
treef232f6448fa2597631bf49df97691d153b73f770 /inc/mod
parent6e0e5b1e8a4e5bc5ec5dd13ed2361f37abd6d965 (diff)
?/config: Advanced permissions
Diffstat (limited to 'inc/mod')
-rw-r--r--inc/mod/config-editor.php42
1 files changed, 40 insertions, 2 deletions
diff --git a/inc/mod/config-editor.php b/inc/mod/config-editor.php
index caca5a0e..27740378 100644
--- a/inc/mod/config-editor.php
+++ b/inc/mod/config-editor.php
@@ -1,5 +1,43 @@
<?php
+function permission_to_edit_config_var($varname) {
+ global $config, $mod;
+
+ if (is_array($config['mod']['config'][DISABLED])) {
+ foreach ($config['mod']['config'][DISABLED] as $disabled_var_name) {
+ $disabled_var_name = explode('>', $disabled_var_name);
+ if (count($disabled_var_name) == 1)
+ $disabled_var_name = $disabled_var_name[0];
+ if ($varname == $disabled_var_name)
+ return false;
+ }
+ }
+
+ $allow_only = false;
+ // for ($perm = (int)$mod['type']; $perm >= JANITOR; $perm --) {
+ for ($perm = JANITOR; $perm <= (int)$mod['type']; $perm ++) {
+ $allow_only = false;
+ if (is_array($config['mod']['config'][$perm])) {
+ foreach ($config['mod']['config'][$perm] as $perm_var_name) {
+ if ($perm_var_name == '!') {
+ $allow_only = true;
+ continue;
+ }
+ $perm_var_name = explode('>', $perm_var_name);
+ if ((count($perm_var_name) == 1 && $varname == $perm_var_name[0]) ||
+ (is_array($varname) && array_slice($varname, 0, count($perm_var_name)) == $perm_var_name)) {
+ if ($allow_only)
+ return true;
+ else
+ return false;
+ }
+ }
+ }
+ }
+
+ return !$allow_only;
+}
+
function config_vars() {
global $config;
@@ -77,8 +115,8 @@ function config_vars() {
$already_exists = true;
}
- if (!$already_exists)
- $conf[] = $var;
+ if (!$already_exists && permission_to_edit_config_var($var['name']))
+ $conf[] = $var;
}
}