Fixed few warnings appeared after turning E_STRICT on
[mirrors/Kyberia-bloodline.git] / wwwroot / backend / mysql / permissions.inc
index 78e85565fae14a2f4af93e5c12524f106dc81e33..f2db74a355cb3b096e6d2fc25879768b22fd3b95 100644 (file)
@@ -3,11 +3,26 @@
 class permissions {
 
 //trillion lights to Hierarchy!
-function checkPerms($node) {
+//$node input parameter can be a numeric node_id of a node-to-be-checked or a hash containing node_id,node_vector
+public static 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()) {
@@ -122,4 +139,4 @@ function checkPerms($node) {
 
 }
 
-?>
\ No newline at end of file
+?>
This page took 0.141678 seconds and 4 git commands to generate.