Example #1
0
function get_cachedata_user_role_menu()
{
    global $_G;
    //DEBUG 取出所有角色菜单
    $data['user_role_menu'] = array('role_menu' => array(), 'user_menu' => array());
    $user_role_menu_sql_results = array();
    $user_role_menu_sql = "SELECT cm.menu_id,cm.menu_pid,cm.position,cm.sub_position,cm.name_var,cm.url,cm.self_style,cm.sort,urm.role_id,urm.user_id \r\n    FROM " . DB::table('user_role_menu') . " AS urm \r\n    LEFT JOIN " . DB::table('common_menu') . " AS cm ON urm.menu_id = cm.menu_id \r\n    WHERE cm.enable = 1 AND cm.isdelete = 0 \r\n    ORDER BY cm.menu_pid ASC, cm.sort ASC";
    $user_role_menu_sql_results = DB::fetch_all($user_role_menu_sql);
    //按角色 和 用户 格式化菜单数据 KEY 为 $key !empty(sub_position) = md5(url.'&'.sub_position) else md5(url);
    foreach ($user_role_menu_sql_results as $tkey => $tvalue) {
        if ($tvalue['url'] || $tvalue['sub_position']) {
            $tmp_key = empty($tvalue['sub_position']) ? md5($tvalue['url']) : md5($tvalue['url'] . '&' . $tvalue['sub_position']);
        } else {
            $tmp_key = md5($tvalue['menu_id']);
        }
        if ($tvalue['role_id']) {
            $data['user_role_menu']['role_menu'][$tvalue['role_id']]['menu_url_md5'][$tmp_key] = 1;
            $data['user_role_menu']['role_menu'][$tvalue['role_id']]['menu_url_tree'][$tvalue['menu_id']] = $tvalue;
        }
        if ($tvalue['user_id']) {
            $data['user_role_menu']['user_menu'][$tvalue['user_id']]['menu_url_md5'][$tmp_key] = 1;
            $data['user_role_menu']['user_menu'][$tvalue['user_id']]['menu_url_tree'][$tvalue['menu_id']] = $tvalue;
        }
    }
    //DEBUG 格式化权限菜单数
    foreach ($data['user_role_menu']['role_menu'] as $key => $value) {
        $data['user_role_menu']['role_menu'][$key]['menu_url_tree'] = menuarr2tree($value['menu_url_tree']);
    }
    foreach ($data['user_role_menu']['user_menu'] as $key => $value) {
        $data['user_role_menu']['user_menu'][$key]['menu_url_tree'] = menuarr2tree($value['menu_url_tree']);
    }
    return array($data['user_role_menu']);
}
Example #2
0
function menuarr2tree2($tree, $rootId = 0)
{
    $return = array();
    foreach ($tree as $leaf) {
        if ($leaf['menu_pid'] == $rootId) {
            foreach ($tree as $subleaf) {
                if ($subleaf['menu_pid'] == $leaf['menu_id']) {
                    $leaf['submenu'] = menuarr2tree($tree, $leaf['menu_id']);
                    break;
                }
            }
            $return[$leaf['menu_id']] = $leaf;
        }
    }
    return $return;
}