/** * +---------------------------------------------------------- * 取得当前认证号的所有浏览map * +---------------------------------------------------------- * * @param integer $authId * 用户ID * +---------------------------------------------------------- * @access public * +---------------------------------------------------------- */ public static function getBrowseList($authId) { // 获取当前用户所有组 $myallroles = Browse::getAuthorGroup($authId); $rolesstr = implode(',', array_filter($myallroles)); $MisSystemDataAccessViewModel = D("MisSystemDataAccessView"); $MisSystemDataAccessModelQuoteModel = M("mis_system_data_access_model_quote"); // 查询当前用户的浏览权限 if ($authId) { $db = Db::getInstance(C('RBAC_DB_DSN')); $userborwseList = $MisSystemDataAccessViewModel->where("mis_system_data_access_mas.status = 1 and startstatus=1 and mis_system_data_access_sub.accesscontent !='' and mis_system_data_access_sub.accesscontent is not null")->order("actionname,tablename,fieldname")->select(); //根据用户组装一个数组 $userAllborwseList = $MisSystemDataAccessViewModel->where("mis_system_data_access_mas.status = 1 and startstatus=1 and mis_system_data_access_sub.accesscontent !='' and mis_system_data_access_sub.accesscontent is not null AND ( ( mis_system_data_access_sub.objtype = 1) AND (mis_system_data_access_sub.objid = " . $authId . ")) OR ((mis_system_data_access_sub.objtype=2) AND (mis_system_data_access_sub.`objid` IN (" . $rolesstr . "))) ")->order("actionname,tablename,fieldname")->select(); $userNewAlllist = array(); foreach ($userAllborwseList as $userkey => $userval) { $userNewAlllist[$userval['actionname']][$userval['fieldname']][] = $userval; } //print_r($userborwseList); $MisSystemDataAccessModelQuoteList = $MisSystemDataAccessModelQuoteModel->where("status=1")->select(); foreach ($MisSystemDataAccessModelQuoteList as $mqkey => $mqval) { $MisSystemDataAccessModelQuoteNewList[$mqval['actionname']][] = $mqval; } //查询继承数据权限表单 $list = array(); if ($userborwseList) { $formArr = array(); $dformArr = array(); foreach ($userborwseList as $ukey => $uval) { $tablename = D($uval['actionname'])->getTablename(); if ($uval['fieldname']) { if ($uval['accesscontenttype'] == 2) { //分组授权 $groupval = ""; //分组所得数据权限 foreach ($userNewAlllist[$uval['actionname']][$uval['fieldname']] as $nekey => $neval) { $groupval[] = Browse::getGroupVal($neval['accesscontent']); } $str = implode(',', array_values($groupval)); } else { $newval = ""; //分组所得数据权限 foreach ($userNewAlllist[$uval['actionname']][$uval['fieldname']] as $nekey => $neval) { $newval .= $neval['accesscontent']; } $str = $newval; } if ($uval['typeid'] == 1) { if ($uval['isalldata'] == 1 || $str) { //主表字段 if ($formArr[$uval['actionname']][$uval['fieldname']]) { $newstr = $formArr[$uval['actionname']][$uval['fieldname']] . ',' . $str; $formArr[$uval['actionname']][$uval['fieldname']] = $newstr; //$newmap=$list[$uval ['actionname']]['formsql'] . " AND {$uval['fieldname']} in (" . $newstr .")"; } else { $formArr[$uval['actionname']][$uval['fieldname']] = $str; } if ($list[$uval['actionname']]['formsql']) { $newmap = $list[$uval['actionname']]['formsql'] . " AND {$tablename}.{$uval['fieldname']} in (" . $formArr[$uval['actionname']][$uval['fieldname']] . ")"; } else { $newmap = "{$tablename}.{$uval['fieldname']} in (" . $formArr[$uval['actionname']][$uval['fieldname']] . ")"; } if ($uval['fieldname'] != $userborwseList[$ukey + 1]['fieldname']) { $list[$uval['actionname']]['formsql'] = $newmap; } if ($uval['actionname'] != $userborwseList[$ukey + 1]['actionname']) { $list[$uval['actionname']]['formsql'] = $newmap; } if ($uval['accesscontentcategory'] == 1) { //selectlist.inc if ($selectlist[$uval['actionname']][$uval['accesscontentsave']]) { $selectlist[$uval['actionname']][$uval['accesscontentsave']] .= ',' . $str; } else { $selectlist[$uval['actionname']][$uval['accesscontentsave']] = $str; } $list[$uval['actionname']]['selectlist'] = $selectlist[$uval['actionname']]; } else { $list[$uval['actionname']][$uval['accesscontentsource']] = array($uval['accesscontentsave'] => $formArr[$uval['actionname']][$uval['fieldname']]); } } } else { //内嵌表 $newmap = ""; if ($dformArr[$uval['actionname']][$uval['tablename']][$uval['fieldname']]) { //echo $dformArr[$uval['actionname']][$uval['tablename']][$uval['fieldname']];exit; $dnewstr = $dformArr[$uval['actionname']][$uval['tablename']][$uval['fieldname']] . ',' . $str; $dformArr[$uval['actionname']][$uval['tablename']][$uval['fieldname']] = $dnewstr; //$newmap=$list[$uval ['actionname']][$uval['tablename']]['formsql'] . " AND {$uval['fieldname']} in (" . $str .")"; } else { $dformArr[$uval['actionname']][$uval['tablename']][$uval['fieldname']] = $str; //$newmap=$uval['fieldname']." in(".$str.")"; } if ($list[$uval['actionname']][$uval['tablename']]['formsql']) { $newmap = $list[$uval['actionname']][$uval['tablename']]['formsql'] . " AND {$tablename}.{$uval['fieldname']} in (" . $dformArr[$uval['actionname']][$uval['tablename']][$uval['fieldname']] . ")"; } else { $newmap = "{$tablename}.{$uval['fieldname']} in (" . $dformArr[$uval['actionname']][$uval['tablename']][$uval['fieldname']] . ")"; } if ($uval['fieldname'] != $userborwseList[$ukey + 1]['fieldname']) { $list[$uval['actionname']][$uval['tablename']]['formsql'] = $newmap; } if ($uval['actionname'] != $userborwseList[$ukey + 1]['actionname']) { $list[$uval['actionname']][$uval['tablename']]['formsql'] = $newmap; } if ($uval['accesscontentcategory'] == 1) { //selectlist.inc if ($selectlist[$uval['actionname']][$uval['tablename']][$uval['accesscontentsave']]) { $selectlist[$uval['actionname']][$uval['tablename']][$uval['accesscontentsave']] .= ',' . $str; } else { $selectlist[$uval['actionname']][$uval['tablename']][$uval['accesscontentsave']] = $str; } $list[$uval['actionname']][$uval['tablename']]['selectlist'] = $selectlist[$uval['actionname']][$uval['tablename']]; } else { $list[$uval['actionname']][$uval['tablename']][$uval['accesscontentsource']] = array($uval['accesscontentsave'] => $dformArr[$uval['actionname']][$uval['tablename']][$uval['fieldname']]); } //$list [$uval ['actionname']][$uval['tablename']]['formsql']=$newmap;//列表用的map 条件 if ($uval['accesscontentcategory'] == 1) { //selectlist.inc if ($selectlist[$uval['actionname']][$uval['tablename']][$uval['accesscontentsave']]) { $selectlist[$uval['actionname']][$uval['tablename']][$uval['accesscontentsave']] .= ',' . $str; } else { $selectlist[$uval['actionname']][$uval['tablename']][$uval['accesscontentsave']] = $str; } $list[$uval['actionname']][$uval['tablename']]['selectlist'] = $selectlist[$uval['actionname']][$uval['tablename']]; } else { $list[$uval['actionname']][$uval['tablename']][$uval['accesscontentsource']][$uval['accesscontentsave']] = $dformArr[$uval['actionname']][$uval['tablename']][$uval['fieldname']]; } } if ($MisSystemDataAccessModelQuoteNewList[$uval['actionname']] && $uval['actionname'] != $userborwseList[$ukey + 1]['actionname']) { //有继承权限模块 foreach ($MisSystemDataAccessModelQuoteNewList[$uval['actionname']] as $mqnkey => $mqnval) { //获取客户表 if ($list[$mqnval['quoteaction']]['extend'][$tablename]) { $list[$mqnval['quoteaction']]['extend'][$tablename] .= " and " . $list[$uval['actionname']]['formsql']; } else { $list[$mqnval['quoteaction']]['extend'][$tablename] = $list[$uval['actionname']]['formsql']; } if ($list[$mqnval['quoteaction']]['extend']['formsql']) { $list[$mqnval['quoteaction']]['extend']['formsql'] .= " and " . $mqnval['quotefield'] . " in (select " . $mqnval['savefield'] . " from " . $tablename . " where " . $list[$uval['actionname']]['formsql'] . " ) "; } else { $list[$mqnval['quoteaction']]['extend']['formsql'] = $mqnval['quotefield'] . " in (select " . $mqnval['savefield'] . " from " . D($uval['actionname'])->getTablename() . " where " . $list[$uval['actionname']]['formsql'] . " ) "; } } } } } } // 返回数组 return $list; } }