static public function getAccessList($authId,$pid=0){
$db = Db::getInstance(C('RBAC_DB_DSN'));
$table = array('role'=>C('RBAC_ROLE_TABLE'),'user'=>C('RBAC_USER_TABLE'),'access'=>C('RBAC_ACCESS_TABLE'),'node'=>C('RBAC_NODE_TABLE'));
$arr = array();
$sql = "select node.id,node.name,node.title,node.show_loca,node.level from ".
$table['role']." as role,".
$table['user']." as user,".
$table['access']." as access ,".
$table['node']." as node ".
"where user.admin_id='{$authId}' and user.role_id=role.id and ( access.role_id=role.id or (access.role_id=role.pid and role.pid!=0 ) ) and role.status=1 and access.node_id=node.id and node.pid={$pid} and node.status=1";
$data = $db->query($sql);
foreach($data as $key=>$vo){
$arr[strtoupper($vo['name'])] = self::getAccessList($authId,$vo['id']);
$arr[strtoupper($vo['name'])]['id'] = $vo['id'] ;
$arr[strtoupper($vo['name'])]['name'] = $vo['name'] ;
$arr[strtoupper($vo['name'])]['title'] = $vo['title'] ;
$arr[strtoupper($vo['name'])]['level'] = $vo['level'] ;
$arr[strtoupper($vo['name'])]['show_loca'] = $vo['show_loca'] ;
}
return $arr ;
} 最佳答案