// make the set of objects // usage: list($group, $roles, $access) = get_authdata('index'); function get_authdata($module_key) { global $db; if ( !$module_key ) { return false; } $user_id = ( isset($_SESSION['user_id']) ) ? $_SESSION['user_id'] : -1; $return = array( 0 => array(), 1 => array(), 2 => array() ); $db->query('SELECT * FROM ' . USERS_TABLE . ' WHERE user_id = ' . (int) $user_id); $group_id = $db->fetchrow(); $group_id = $group_id->group; $db->freeresult(); $db->query('SELECT * FROM ' . GROUPS_TABLE . ' WHERE group_id = ' . (int) $group_id); $row = $db->fetchrow(); $db->freeresult(); $return[0] = new group($row->group_id, $row->group_name, $row->group_desc); if ( $row->roles != '' ) { $db->query('SELECT * FROM ' . ROLES_TABLE . ' WHERE role_id IN (' . $row->roles . ')'); while ( $role = $db->fetchrow() ) { $return[1][$role->role_id][] = new role($role->role_id, $role->role_name, $role->role_desc); } $db->freeresult(); $db->query('SELECT * FROM ' . ROLES_ACCESS_TABLE . ' WHERE role_id IN (' . $row->roles . ') AND module_key = \'' . $db->escape($module_key) . '\' GROUP BY role_id'); while ( $role_acl = $db->fetchrow() ) { $array = array_combine(explode(',', $role_acl->acl_keys), explode(',', $role_acl->acl_vals)); $return[2][$role_acl->role_id] = new access($role_acl->acl_id, $array); } $db->freeresult(); } return $return; }