From a4c4e4c52a39926c29323ba28e64d6287a60a1f1 Mon Sep 17 00:00:00 2001 From: fusionate Date: Fri, 3 Feb 2023 18:50:56 +0000 Subject: [PATCH] Functions: Modify permission_exists() function to support an array of permissions. --- resources/functions.php | 38 +++++++++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/resources/functions.php b/resources/functions.php index 6bb3f0ad4b..b2424721ff 100644 --- a/resources/functions.php +++ b/resources/functions.php @@ -261,12 +261,40 @@ } if (!function_exists('permission_exists')) { - function permission_exists($permission) { - //set default false + function permission_exists($permission, $operator = 'or') { + //set default $result = false; - //find the permission - if (is_array($_SESSION["permissions"]) && $_SESSION["permissions"][$permission] == true) { - $result = true; + //permissions exist + if (is_array($_SESSION["permissions"]) && @sizeof($_SESSION['permissions']) != 0) { + //array + if (is_array($permission) && @sizeof($permission) != 0) { + if ($operator == 'and') { + $exists_all = true; + foreach ($permission as $perm) { + if ($_SESSION["permissions"][$permission] != true) { + $exists_all = false; + break; + } + } + $result = $exists_all; + } + else { + $exists_one = false; + foreach ($permission as $perm) { + if ($_SESSION["permissions"][$permission] != true) { + $exists_one = true; + break; + } + } + $result = $exists_one; + } + } + //single + else { + if ($_SESSION["permissions"][$permission] == true) { + $result = true; + } + } } //return the result return $result;