/** * get_source_permissions * * returns ALL PERMISSIONS array FOR given type (ACL/ADMIN/..) and for currently selected * users/groups/roles (in selectboxes) * Executes SQL QUERY function. * * usage (use always pointer to array, because return result is huuge): * $source_permissions = &get_source_permissions(array("perm_type" => 'ACL')); */ function get_source_permissions() { global $site; global $selected_parents; $args = func_get_arg(0); $perm_type = $args['perm_type']; if ($perm_type) { # if sane parameters ########### 1. get ALL PERMISSIONS (Bug #2640) $level = 1; $source_permissions = array(); ########### 1.1 for given ROLE if ($site->fdat['role_id']) { ###### get all permissions for given role $permissions = get_all_permissions(array("type" => $perm_type, "role_id" => $site->fdat['role_id'], "with_inheriting" => 0)); ###### RE-STRUCTURE data to "source_permissions[$source_id]['user'][$user_id]" foreach ($permissions as $perm) { if ($perm['user_id']) { $source_permissions[$perm['source_id']]['user'][$perm['user_id']] = $perm; } elseif ($perm['group_id']) { $source_permissions[$perm['source_id']]['group'][$perm['group_id']] = $perm; } elseif ($perm['role_id']) { $source_permissions[$perm['source_id']]['role'][$perm['role_id']] = $perm; } } } # if role is set ########### 1.2 for given GROUPS foreach ($selected_parents as $group) { ###### get all permissions for given group $permissions = get_all_permissions(array("type" => $perm_type, "group_id" => $group, "with_inheriting" => 0)); #printr($permissions); # echo "<hr>"; ###### RE-STRUCTURE data to "source_permissions[$source_id]['user'][$user_id]" foreach ($permissions as $perm) { if ($perm['user_id']) { $source_permissions[$perm['source_id']]['user'][$perm['user_id']] = $perm; } elseif ($perm['group_id']) { $source_permissions[$perm['source_id']]['group'][$perm['group_id']] = $perm; } elseif ($perm['role_id']) { $source_permissions[$perm['source_id']]['role'][$perm['role_id']] = $perm; } } # print("<br>".$perm_type."(".$perm['source_id'].") r:".$site->fdat['role_id']." g:".(!$site->fdat['role_id']?$group:'')." u:".(!$site->fdat['role_id'] && $group==$site->fdat['group_id']?$site->fdat['user_id']:'')." (count=".sizeof($permissions).")<br>"); $level++; } ########### 1.3 for given USER if ($site->fdat['user_id']) { ###### get all permissions for given user $permissions = get_all_permissions(array("type" => $perm_type, "user_id" => $site->fdat['user_id'], "with_inheriting" => 0)); ###### RE-STRUCTURE data to "source_permissions[$source_id]['user'][$user_id]" foreach ($permissions as $perm) { if ($perm['user_id']) { $source_permissions[$perm['source_id']]['user'][$perm['user_id']] = $perm; } elseif ($perm['group_id']) { $source_permissions[$perm['source_id']]['group'][$perm['group_id']] = $perm; } elseif ($perm['role_id']) { $source_permissions[$perm['source_id']]['role'][$perm['role_id']] = $perm; } } } # if user is set } # if perm_type provided return $source_permissions; }
/** * load_aclpermissions * * returns all acl (group) permissions for user; * returns 0 if failed; * function is not called by default in site class but * in edit-group-window and edit-user-window, * also in all templates where any group or user info is used/printed/etc * * * @package CMS * * @param - */ function load_aclpermissions() { $args = $this->args; $perm = array(); $user_id = $this->user_id; $timer = new Timer(); # alustame m??????tmine if ($user_id) { # 1. if SUPERUSER dont waste time for loading permissions, ALL is allowed by default # if superuser then return almighty 11111 array if ($this->is_superuser) { $cemented_perm = array(id => '', type => 'ACL', source_id => 'ALL', group_id => '', user_id => $site->user->user_id, C => 1, R => 1, U => 1, P => 1, D => 1); } else { $cemented_perm = get_all_permissions(array(type => 'ACL', user => $this, site => $this->site, with_inheriting => 1)); } # printr($cemented_perm); ####### debug if ($this->is_superuser) { $this->debug->msg("Hey, we have superuser here: ALL ACL is allowed. Load time: " . $timer->get_aeg()); } else { $this->debug->msg("ACL permissions loaded: " . sizeof(array_keys($cemented_perm)) . " permissions found. Load time: " . $timer->get_aeg()); } ########### RETURN PERMISSIONS return $cemented_perm; } else { $this->debug->msg("Error: ACL permissions not loaded: no USER ID"); } # if !user id }