diff options
Diffstat (limited to 'inc/permission.inc.php')
-rw-r--r-- | inc/permission.inc.php | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/inc/permission.inc.php b/inc/permission.inc.php index d04e3c3b..aaef6ba6 100644 --- a/inc/permission.inc.php +++ b/inc/permission.inc.php @@ -15,5 +15,41 @@ class Permission return self::$permissions[$permission]; } + + // TODO: Doc/Refactor + public static function addGlobalTags(&$array, $locationid, $disabled, $noneAvailDisabled = null) + { + if (Module::get('permissionmanager') === false) + return; + $one = false; + foreach ($disabled as $perm) { + if (User::hasPermission($perm, $locationid)) { + $one = true; + continue; + } + if (strpos($perm, '.') === false) { + $array[$perm] = ['disabled' => 'disabled', 'readonly' => 'readonly']; + continue; + } + $temp =& $array; + foreach (explode('.', $perm) as $sub) { + if (empty($sub) || $sub === '*') + continue; + $temp =& $temp[$sub]; + } + $temp = ['disabled' => 'disabled', 'readonly' => 'readonly']; + } + if (!$one && !is_null($noneAvailDisabled)) { + $array[$noneAvailDisabled]['disabled'] = true; + } + } + + public static function moduleHasPermissions($moduleId) + { + if (Module::get('permissionmanager') === false) + return true; + return file_exists('modules/' . $moduleId . '/permissions/permissions.json'); + } + } |