X-Git-Url: http://git.harvie.cz/?a=blobdiff_plain;f=wwwroot%2Fbackend%2Fmysql%2Fpermissions.inc;h=fded0a937a5b24e6ffef3c7ad8fcc792ac0af127;hb=8f03b4aca1ae066a7fb03e4f5204682932091e08;hp=78e85565fae14a2f4af93e5c12524f106dc81e33;hpb=bde5bc7a912775cd1c3da7f095980944afe70522;p=mirrors%2FKyberia-bloodline.git diff --git a/wwwroot/backend/mysql/permissions.inc b/wwwroot/backend/mysql/permissions.inc index 78e8556..fded0a9 100644 --- a/wwwroot/backend/mysql/permissions.inc +++ b/wwwroot/backend/mysql/permissions.inc @@ -3,11 +3,26 @@ class permissions { //trillion lights to Hierarchy! +//$node input parameter can be a numeric node_id of a node-to-be-checked or a hash containing node_id,node_vector function checkPerms($node) { // new permissions checking global $db; - $node_id=$node['node_id']; - $node_vector=$node['node_vector']; + + if (is_array($node)) { + $node_id=$node['node_id']; + $node_vector=$node['node_vector']; + } + + elseif (is_numeric($node)) { + $node_id=$node; + } + + if (!$node_vector) { + $set=$db->query("select node_vector from nodes where node_id='$node_id'"); + $set->next(); + $node_vector=$set->getString('node_vector'); + } + $user_id = $_SESSION['user_id']; $perms['r'] = 0; @@ -22,6 +37,7 @@ function checkPerms($node) { $nv_arr = str_split($node_vector, VECTOR_CHARS); $nv_arr = array_map('intval', $nv_arr); $node_list = implode(', ', $nv_arr); + $node_list.=",$node_id"; $q_np = sprintf('select n.node_id, n.node_creator, length(n.node_vector) as nv_length , n.node_system_access, n.node_external_access, na.node_permission @@ -30,6 +46,7 @@ function checkPerms($node) { and na.user_id = %d where n.node_id in(%s) order by nv_length desc', $user_id, $node_list); + $qr_np = $db->query($q_np); while ($qr_np->next()) {