summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2018-02-14 13:54:45 +0100
committerSimon Rettberg2018-02-14 13:54:45 +0100
commite39bc13cee5db3d4905498e0fe3ac89fd3ccbfe7 (patch)
tree48d4c4bae3d26f467847acace3ab0c83be1a234b
parent[permissionmanager] Speed up queries for saving roles and assignments (diff)
downloadslx-admin-e39bc13cee5db3d4905498e0fe3ac89fd3ccbfe7.tar.gz
slx-admin-e39bc13cee5db3d4905498e0fe3ac89fd3ccbfe7.tar.xz
slx-admin-e39bc13cee5db3d4905498e0fe3ac89fd3ccbfe7.zip
[permissionmanager] Apply formatting
-rw-r--r--modules-available/permissionmanager/api.inc.php7
-rw-r--r--modules-available/permissionmanager/inc/permissiondbupdate.inc.php37
-rw-r--r--modules-available/permissionmanager/inc/permissionutil.inc.php17
-rw-r--r--modules-available/permissionmanager/page.inc.php51
4 files changed, 60 insertions, 52 deletions
diff --git a/modules-available/permissionmanager/api.inc.php b/modules-available/permissionmanager/api.inc.php
deleted file mode 100644
index 0d84ebce..00000000
--- a/modules-available/permissionmanager/api.inc.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-echo json_encode(array(
- 'key' => 'value',
- 'number' => 123,
- 'list' => array(1,2,3,4,5,6,'foo')
-));
diff --git a/modules-available/permissionmanager/inc/permissiondbupdate.inc.php b/modules-available/permissionmanager/inc/permissiondbupdate.inc.php
index 0f37a053..f2e7a366 100644
--- a/modules-available/permissionmanager/inc/permissiondbupdate.inc.php
+++ b/modules-available/permissionmanager/inc/permissiondbupdate.inc.php
@@ -1,6 +1,7 @@
<?php
-class PermissionDbUpdate {
+class PermissionDbUpdate
+{
/**
* Insert all user/role combinations into the user_x_role table.
@@ -8,9 +9,10 @@ class PermissionDbUpdate {
* @param array $users userids
* @param array $roles roleids
*/
- public static function addRoleToUser($users, $roles) {
+ public static function addRoleToUser($users, $roles)
+ {
$arg = array();
- foreach($users AS $userid) {
+ foreach ($users AS $userid) {
foreach ($roles AS $roleid) {
$arg[] = compact('userid', 'roleid');
}
@@ -25,7 +27,8 @@ class PermissionDbUpdate {
* @param array $users userids
* @param array $roles roleids
*/
- public static function removeRoleFromUser($users, $roles) {
+ public static function removeRoleFromUser($users, $roles)
+ {
$query = "DELETE FROM user_x_role WHERE userid IN (:users) AND roleid IN (:roles)";
Database::exec($query, array("users" => $users, "roles" => $roles));
}
@@ -35,7 +38,8 @@ class PermissionDbUpdate {
*
* @param string $roleid roleid
*/
- public static function deleteRole($roleid) {
+ public static function deleteRole($roleid)
+ {
Database::exec("DELETE FROM role WHERE roleid = :roleid", array("roleid" => $roleid));
}
@@ -47,28 +51,31 @@ class PermissionDbUpdate {
* @param array $permissions array of permissions
* @param string|null $roleid roleid or null if the role does not exist yet
*/
- public static function saveRole($rolename, $locations, $permissions, $roleid = NULL) {
+ public static function saveRole($rolename, $locations, $permissions, $roleid = null)
+ {
if ($roleid) {
Database::exec("UPDATE role SET rolename = :rolename WHERE roleid = :roleid",
- array("rolename" => $rolename, "roleid" => $roleid));
+ array("rolename" => $rolename, "roleid" => $roleid));
Database::exec("DELETE FROM role_x_location
- WHERE roleid = :roleid AND locationid NOT IN (:locations)", array("roleid" => $roleid, 'locations' => $locations));
+ WHERE roleid = :roleid AND locationid NOT IN (:locations)",
+ array("roleid" => $roleid, 'locations' => $locations));
Database::exec("DELETE FROM role_x_permission
- WHERE roleid = :roleid AND permissionid NOT IN (:permissions)", array("roleid" => $roleid, 'permissions' => $permissions));
+ WHERE roleid = :roleid AND permissionid NOT IN (:permissions)",
+ array("roleid" => $roleid, 'permissions' => $permissions));
} else {
Database::exec("INSERT INTO role (rolename) VALUES (:rolename)", array("rolename" => $rolename));
$roleid = Database::lastInsertId();
}
- $arg = array_map(function($loc) use ($roleid) {
+
+ $arg = array_map(function ($loc) use ($roleid) {
return compact('roleid', 'loc');
}, $locations);
- Database::exec("INSERT IGNORE INTO role_x_location (roleid, locationid) VALUES :arg",
- ['arg' => $arg]);
- $arg = array_map(function($perm) use ($roleid) {
+ Database::exec("INSERT IGNORE INTO role_x_location (roleid, locationid) VALUES :arg", ['arg' => $arg]);
+
+ $arg = array_map(function ($perm) use ($roleid) {
return compact('roleid', 'perm');
}, $permissions);
- Database::exec("INSERT IGNORE INTO role_x_permission (roleid, permissionid) VALUES :arg",
- ['arg' => $arg]);
+ Database::exec("INSERT IGNORE INTO role_x_permission (roleid, permissionid) VALUES :arg", ['arg' => $arg]);
}
}
diff --git a/modules-available/permissionmanager/inc/permissionutil.inc.php b/modules-available/permissionmanager/inc/permissionutil.inc.php
index 6d83ef92..d3948ebd 100644
--- a/modules-available/permissionmanager/inc/permissionutil.inc.php
+++ b/modules-available/permissionmanager/inc/permissionutil.inc.php
@@ -25,15 +25,15 @@ class PermissionUtil
$compare[] = $permission[0];
}
for ($i = 1; $i < $partCount; ++$i) {
- $compare[$i-1] .= '.*';
+ $compare[$i - 1] .= '.*';
for ($j = $i; $j < $partCount; ++$j) {
$compare[$j] .= '.' . $permission[$i];
}
}
$compare[] = '*';
- if ($permission[$partCount-1] === '*') {
- $wildcard = substr($compare[$partCount-1], 0, -1);
+ if ($permission[$partCount - 1] === '*') {
+ $wildcard = substr($compare[$partCount - 1], 0, -1);
$wclen = strlen($wildcard);
} else {
$wclen = $wildcard = false;
@@ -48,7 +48,8 @@ class PermissionUtil
* @param int|null $locationid locationid to check or null if the location should be disregarded
* @return bool true if user has permission, false if not
*/
- public static function userHasPermission($userid, $permissionid, $locationid) {
+ public static function userHasPermission($userid, $permissionid, $locationid)
+ {
self::validatePermission($permissionid);
$parts = explode('.', $permissionid);
// Limit query to first part of permissionid, which is always the module id
@@ -91,7 +92,8 @@ class PermissionUtil
* @param string $permissionid permissionid to check
* @return array array of locationids where the user has the given permission
*/
- public static function getAllowedLocations($userid, $permissionid) {
+ public static function getAllowedLocations($userid, $permissionid)
+ {
self::validatePermission($permissionid);
$parts = explode('.', $permissionid);
// Limit query to first part of permissionid, which is always the module id
@@ -130,7 +132,8 @@ class PermissionUtil
* @param array $allowedLocations the array of locationids to extend
* @return array extended array of locationids
*/
- public static function getSublocations($tree, $allowedLocations) {
+ public static function getSublocations($tree, $allowedLocations)
+ {
$result = $allowedLocations;
foreach ($tree as $location) {
if (array_key_exists("children", $location)) {
@@ -189,7 +192,7 @@ class PermissionUtil
$moduleId = $out[1];
if (Module::get($moduleId) === false)
continue;
- foreach($data as $perm => $permissionFlags) {
+ foreach ($data as $perm => $permissionFlags) {
$description = Dictionary::translateFileModule($moduleId, "permissions", $perm);
self::putInPermissionTree($moduleId . "." . $perm, $permissionFlags['location-aware'], $description, $permissions);
}
diff --git a/modules-available/permissionmanager/page.inc.php b/modules-available/permissionmanager/page.inc.php
index 89c72842..1c2d56bf 100644
--- a/modules-available/permissionmanager/page.inc.php
+++ b/modules-available/permissionmanager/page.inc.php
@@ -95,8 +95,8 @@ class Page_PermissionManager extends Page
*
* @param array $permissions the permission tree
* @param array $selectedPermissions permissions that should be preselected
- * @param array $selectAll true if all pemrissions should be preselected, false if only those in $selectedPermissions
- * @param array $permString the prefix permission string with which all permissions in the permission tree should start
+ * @param bool $selectAll true if all permissions should be preselected, false if only those in $selectedPermissions
+ * @param string $permString the prefix permission string with which all permissions in the permission tree should start
* @return string generated html code
*/
private static function generatePermissionHTML($permissions, $selectedPermissions = array(), $selectAll = false, $permString = "")
@@ -142,10 +142,10 @@ class Page_PermissionManager extends Page
if ($toplevel) {
$res = Render::parse("treepanel",
array("id" => "*",
- "name" => Dictionary::translateFile("template-tags", "lang_permissions"),
- "checkboxname" => "permissions",
- "selected" => $selectAll,
- "HTML" => $res));
+ "name" => Dictionary::translateFile("template-tags", "lang_permissions"),
+ "checkboxname" => "permissions",
+ "selected" => $selectAll,
+ "HTML" => $res));
}
return $res;
}
@@ -162,25 +162,27 @@ class Page_PermissionManager extends Page
private static function generateLocationHTML($locations, $selectedLocations = array(), $selectAll = false, $toplevel = true)
{
$res = "";
- if ($toplevel && in_array(0, $selectedLocations)) $selectAll = true;
+ if ($toplevel && in_array(0, $selectedLocations)) {
+ $selectAll = true;
+ }
foreach ($locations as $location) {
$selected = $selectAll || in_array($location["locationid"], $selectedLocations);
$res .= Render::parse("treenode",
- array("id" => $location["locationid"],
- "name" => $location["locationname"],
- "toplevel" => $toplevel,
- "checkboxname" => "locations",
- "selected" => $selected,
- "HTML" => array_key_exists("children", $location) ?
- self::generateLocationHTML($location["children"], $selectedLocations, $selected, false) : ""));
+ array("id" => $location["locationid"],
+ "name" => $location["locationname"],
+ "toplevel" => $toplevel,
+ "checkboxname" => "locations",
+ "selected" => $selected,
+ "HTML" => array_key_exists("children", $location) ?
+ self::generateLocationHTML($location["children"], $selectedLocations, $selected, false) : ""));
}
if ($toplevel) {
$res = Render::parse("treepanel",
array("id" => 0,
- "name" => Dictionary::translateFile("template-tags", "lang_locations"),
- "checkboxname" => "locations",
- "selected" => $selectAll,
- "HTML" => $res));
+ "name" => Dictionary::translateFile("template-tags", "lang_locations"),
+ "checkboxname" => "locations",
+ "selected" => $selectAll,
+ "HTML" => $res));
}
return $res;
}
@@ -193,12 +195,14 @@ class Page_PermissionManager extends Page
*/
private static function processLocations($locations)
{
- if (in_array(0, $locations)) return array(NULL);
+ if (in_array(0, $locations))
+ return array(null);
$result = array();
foreach ($locations as $location) {
$rootchain = array_reverse(Location::getLocationRootChain($location));
foreach ($rootchain as $l) {
- if (in_array($l, $result)) break;
+ if (in_array($l, $result))
+ break;
if (in_array($l, $locations)) {
$result[] = $l;
break;
@@ -216,7 +220,8 @@ class Page_PermissionManager extends Page
*/
private static function processPermissions($permissions)
{
- if (in_array("*", $permissions)) return array("*");
+ if (in_array("*", $permissions))
+ return array("*");
$result = array();
foreach ($permissions as $permission) {
$x =& $result;
@@ -239,10 +244,10 @@ class Page_PermissionManager extends Page
foreach ($permissions as $permission => $a) {
if (is_array($a)) {
if (array_key_exists("*", $a)) {
- $result[] = $permission.".*";
+ $result[] = $permission . ".*";
} else {
foreach (self::extractPermissions($a) as $subPermission) {
- $result[] = $permission.".".$subPermission;
+ $result[] = $permission . "." . $subPermission;
}
}
} else {