diff options
Diffstat (limited to 'modules-available/permissionmanager/inc/getpermissiondata.inc.php')
-rw-r--r-- | modules-available/permissionmanager/inc/getpermissiondata.inc.php | 39 |
1 files changed, 23 insertions, 16 deletions
diff --git a/modules-available/permissionmanager/inc/getpermissiondata.inc.php b/modules-available/permissionmanager/inc/getpermissiondata.inc.php index 660c94ae..a51619e0 100644 --- a/modules-available/permissionmanager/inc/getpermissiondata.inc.php +++ b/modules-available/permissionmanager/inc/getpermissiondata.inc.php @@ -11,7 +11,7 @@ class GetPermissionData * * @return array array of users (each with userid, username and roles (each with roleid and rolename)) */ - public static function getUserData() + public static function getUserData(): array { $res = Database::simpleQuery("SELECT user.userid AS userid, user.login AS login, role.rolename AS rolename, role.roleid AS roleid FROM user @@ -19,7 +19,7 @@ class GetPermissionData LEFT JOIN role ON role_x_user.roleid = role.roleid "); $userdata = array(); - while ($row = $res->fetch(PDO::FETCH_ASSOC)) { + foreach ($res as $row) { $userdata[$row['userid'] . ' ' . $row['login']][] = array( 'roleid' => $row['roleid'], 'rolename' => $row['rolename'] @@ -42,12 +42,12 @@ class GetPermissionData * * @return array array of locations (each including the roles that have permissions for them) */ - public static function getLocationData() + public static function getLocationData(): array { $res = Database::simpleQuery("SELECT role.roleid AS roleid, rolename, GROUP_CONCAT(COALESCE(locationid, 0)) AS locationids FROM role INNER JOIN role_x_location ON role.roleid = role_x_location.roleid GROUP BY roleid ORDER BY rolename ASC"); $locations = Location::getLocations(0, 0, false, true); - while ($row = $res->fetch(PDO::FETCH_ASSOC)) { + foreach ($res as $row) { $locationids = explode(",", $row['locationids']); if (in_array("0", $locationids)) { $locationids = array_map("intval", Location::extractIds(Location::getTree())); @@ -70,7 +70,7 @@ class GetPermissionData * @param int $flags Bitmask specifying additional data to fetch (WITH_* constants of this class) * @return array array roles (each with roleid and rolename) */ - public static function getRoles($flags = 0) + public static function getRoles(int $flags = 0): array { $cols = $joins = ''; if ($flags & self::WITH_USER_COUNT) { @@ -84,7 +84,7 @@ class GetPermissionData if (!empty($joins)) { $joins .= ' GROUP BY r.roleid'; } - return Database::queryAll("SELECT r.roleid, r.rolename, r.roledescription $cols FROM role r + return Database::queryAll("SELECT r.roleid, r.rolename, r.builtin, r.roledescription $cols FROM role r $joins ORDER BY rolename ASC"); } @@ -93,25 +93,32 @@ class GetPermissionData * Get permissions and locations for a given role. * * @param string $roleid id of the role - * @return array array containing an array of permissions and an array of locations + * @return ?array array containing an array of permissions and an array of locations, null if not found */ - public static function getRoleData($roleid) + public static function getRoleData(string $roleid): ?array { - $query = "SELECT roleid, rolename, roledescription FROM role WHERE roleid = :roleid"; - $data = Database::queryFirst($query, array("roleid" => $roleid)); - $query = "SELECT roleid, locationid FROM role_x_location WHERE roleid = :roleid"; - $res = Database::simpleQuery($query, array("roleid" => $roleid)); + $data = self::getRole($roleid); + $res = Database::simpleQuery("SELECT roleid, locationid FROM role_x_location WHERE roleid = :roleid", + array("roleid" => $roleid)); + if ($res === false) + return null; $data["locations"] = array(); - while ($row = $res->fetch(PDO::FETCH_ASSOC)) { + foreach ($res as $row) { $data["locations"][] = $row['locationid']; } - $query = "SELECT roleid, permissionid FROM role_x_permission WHERE roleid = :roleid"; - $res = Database::simpleQuery($query, array("roleid" => $roleid)); + $res = Database::simpleQuery("SELECT roleid, permissionid FROM role_x_permission WHERE roleid = :roleid", + array("roleid" => $roleid)); $data["permissions"] = array(); - while ($row = $res->fetch(PDO::FETCH_ASSOC)) { + foreach ($res as $row) { $data["permissions"][] = $row['permissionid']; } return $data; } + public static function getRole($roleId) + { + return Database::queryFirst("SELECT roleid, rolename, builtin, roledescription FROM role + WHERE roleid = :roleid", ['roleid' => $roleId]); + } + }
\ No newline at end of file |