7 function isHierarch($node) {
10 if (IsSet($_SESSION['user_id'])) {
11 $user_id=$_SESSION['user_id'];
15 if (!$user_id) return false;
17 $node_vector=chunk_split($node['node_vector'],VECTOR_CHARS,';');
18 $hierarchy=explode(';',$node_vector);
19 foreach ($hierarchy as $hierarch) {
20 $hierarch=ltrim($hierarch,0);
21 $q="select nodes.node_creator,node_access.node_permission from nodes left join node_access on nodes.node_id=node_access.node_id and node_access.user_id='".$user_id."' where nodes.node_id='$hierarch'";
22 $result=$db->query($q);
24 if ($result->getString('node_creator')==$user_id)
26 if ($result->getString('node_permission')=='master')
28 if ($result->getString('node_creator')=='operator')
35 //trillion lights to Hierarchy!
36 //$node input parameter can be a numeric node_id of a node-to-be-checked or a hash containing node_id,node_vector
37 public static function checkPerms($node) {
38 // new permissions checking
41 if (is_array($node)) {
42 $node_id=$node['node_id'];
43 $node_vector=$node['node_vector'];
46 elseif (is_numeric($node)) {
51 if (empty($node_vector)) {
52 $set=$db->query("select node_vector from nodes where node_id='$node_id'");
54 $node_vector=$set->getString('node_vector');
57 $user_id=(empty($_SESSION['user_id'])) ? "" : $_SESSION['user_id'];
61 $perms['node_permission'] = '';
62 $perms['node_system_access'] = '';
63 $perms['node_external_access'] = '';
65 if (!is_numeric($node_id))
68 $nv_arr = str_split($node_vector, VECTOR_CHARS);
69 $nv_arr = array_map('intval', $nv_arr);
70 $node_list = implode(', ', $nv_arr);
71 $node_list.=",$node_id";
73 $q_np = sprintf('select n.node_id, n.node_creator, length(n.node_vector) as nv_length
74 , n.node_system_access, n.node_external_access, na.node_permission
76 left join node_access na on na.node_id = n.node_id
78 where n.node_id in(%s)
79 order by nv_length desc', $user_id, $node_list);
81 $qr_np = $db->query($q_np);
83 while ($qr_np->next()) {
84 // nastavim si prava hlavnej zvolenej nody
85 if ($perms['node_permission'] == '' && $perms['node_system_access'] == '') {
87 $perms['node_permission'] = $qr_np->getString('node_permission');
88 $perms['node_system_access'] = $qr_np->getString('node_system_access');
89 $perms['node_external_access'] = $qr_np->getString('node_external_access');
91 // external access must go first
93 if ($perms['node_system_access'] != 'private'
94 && $perms['node_external_access'] == 'yes') {
105 // r/w prava podla system accessu
106 if ($perms['node_system_access'] == 'public') {
110 elseif ($perms['node_system_access'] == 'moderated') {
114 elseif ($perms['node_system_access'] == 'private') {
119 if ($qr_np->getInt('node_creator') == $user_id) {
120 $perms['node_permission'] = 'owner';
126 } // if ($perms['node_permission'] == '' && $perms['node_system_access'] == '')
128 // ked som v public alebo moderated fore a dalsie nadradene su uz privatne
129 if ($node_system_access != 'private' && $qr_np->getString('node_system_access') == 'private')
131 // ked som v privatnom fore a dalsie nadradene su public alebo moderated
132 if ($node_system_access == 'private' && $qr_np->getString('node_system_access') != 'private')
136 $node_permission = $qr_np->getString('node_permission');
137 $node_system_access = $qr_np->getString('node_system_access');
139 // nastavim r/w podla permissions a skoncim to
140 if ($node_permission == 'ban') {
145 elseif ($node_permission == 'silence') {
150 elseif ($node_permission == 'op') {
155 elseif ($node_permission == 'master') {
160 elseif ($node_permission == 'access') {
166 if ($qr_np->getString('node_creator') == $user_id) {
167 $perms['node_permission'] = 'owner';