"ServerRep", "Name" => \Lang\gettext("全服报表"), "PList" => array( Permission::P_REP_AllView => array("Name" => \Lang\gettext("全服总览")), Permission::P_REP_DailyUser => array("Name" => \Lang\gettext("全服每日用户")), Permission::P_REP_KeepLogin => array("Name" => \Lang\gettext("全服留存")), Permission::P_REP_LTV => array("Name" => \Lang\gettext("全服LTV")), Permission::P_REP_FirstLoginFirstPayCnt => array("Name" => \Lang\gettext("首登首充人数")), Permission::P_REP_XPayPaycnt => array("Name" => \Lang\gettext("购买X礼包再次付费人数")), Permission::P_All_PlayerLV => array("Name" => \Lang\gettext("全服等级分布")), ) ), array( "ModuleID" => "ServerInfo", "Name" => \Lang\gettext("服务器"), "PList" => array( Permission::P_Online => array("Name" => \Lang\gettext("在线人数")), Permission::P_PlayerLV => array("Name" => \Lang\gettext("等级分布")), Permission::P_Chatmonitor => array("Name" => \Lang\gettext("聊天监控")), Permission::P_BugReport => array("Name" => \Lang\gettext("Bug反馈")), Permission::P_Serverview => array("Name" => \Lang\gettext("本服总览")), Permission::P_PayOverview => array("Name" => \Lang\gettext("充值总览")), Permission::P_PayOvergroup => array("Name" => \Lang\gettext("充值分组")), Permission::P_PayOrder => array("Name" => \Lang\gettext("充值订单")), Permission::P_PayRank => array("Name" => \Lang\gettext("充值排行")), Permission::P_CTGReportAll => array("Name" => \Lang\gettext("充值分析")), Permission::P_PlayerList => array("Name" => \Lang\gettext("玩家列表")), ) ), array( "ModuleID" => "Comm", "Name" => \Lang\gettext("普通命令"), "PList" => array( Permission::P_BroadCast => array("Name" => \Lang\gettext("广播"), "GMTKey1" => array("GMT_BroadCast"), "Log" => array("GMT_BroadCast")), Permission::P_BroadCastMulti => array("Name" => \Lang\gettext("多服广播"), "GMTKey1" => array("GMT_BroadCast"), "Log" => array("GMT_BroadCast")), Permission::P_ClearTalkCache => array("Name" => \Lang\gettext("清空聊天缓存"), "GMTKey1" => array("GMT_ClearTalkCache"), "Log" => array("GMT_ClearTalkCache")), Permission::P_ForbidTalk => array( "Name" => \Lang\gettext("禁言/解禁"), "GMTKey1" => array("GMT_ForbidTalk", "GMT_UnForbidTalk"), "Log" => array("GMT_ForbidTalk", "GMT_UnForbidTalk") ), Permission::P_ForbidLogin => array( "Name" => \Lang\gettext("封号/解封"), "GMTKey1" => array("GMT_ForbidLogin", "GMT_LockIP", "GMT_UnLockIP", "GMT_UnForbidLogin"), "Log" => array("GMT_ForbidLogin", "GMT_LockIP", "GMT_UnLockIP", "GMT_UnForbidLogin") ), Permission::P_KickPlayer => array("Name" => \Lang\gettext("踢下线"), "GMTKey1" => array("GMT_KickPlayer"), "Log" => array("GMT_KickPlayer")), Permission::P_GetPlayerForbid => array("Name" => \Lang\gettext("查询玩家封禁状态"), "GMTKey1" => array("GMT_GetPlayerForbid")), Permission::P_GetForbidInfo => array("Name" => \Lang\gettext("查询全服封禁名单"), "GMTKey1" => array("GMT_GetForbidInfo")), Permission::P_GetPlayerInfo => array("Name" => \Lang\gettext("查询玩家"), "GMTKey1" => array("GMT_GetPlayerInfo", "GMT_PlayerItemInfo")), Permission::P_GetFamilyInfo => array("Name" => \Lang\gettext("查询仙盟"), "GMTKey1" => array("GMT_GetFamilyInfo")), Permission::P_FamilyTransfer => array("Name" => \Lang\gettext("转让仙盟"), "GMTKey1" => array("GMT_FamilyTransfer"), "Log" => array("GMT_FamilyTransfer")), Permission::P_FamilyDismiss => array("Name" => \Lang\gettext("解散仙盟"), "GMTKey1" => array("GMT_FamilyDismiss"), "Log" => array("GMT_FamilyDismiss")), Permission::P_QueryBillboard => array("Name" => \Lang\gettext("查询排行榜"), "GMTKey1" => array("GMT_QueryBillboard")), Permission::P_QueryBillboardCross => array("Name" => \Lang\gettext("查询跨服排行榜"), "GMTKey1" => array("GMT_QueryBillboardCross")), Permission::P_MagicWeaponExp => array("Name" => \Lang\gettext("法宝灵魂"), "GMTKey1" => array("GMT_MagicWeaponExp")), Permission::P_UserLog => array("Name" => \Lang\gettext("查看动态")), ) ), array( "ModuleID" => "Super", "Name" => \Lang\gettext("高级命令"), "PList" => array( Permission::P_CTGReq => array( "Name" => \Lang\gettext("充值申请"), "GMTKey2" => array("GMT_CTG"), "Title" => \Lang\gettext("如果没有充值免审权限则申请后需要审核"), "Log" => array("GMT_CTG"), "NOCheck" => Permission::P_CTGNOCheck, "Check" => Permission::P_CTGCheck ), Permission::P_CTGNOCheck => array("Name" => \Lang\gettext("充值免审"), "GMTKey2" => array("GMT_CTG"), "Title" => \Lang\gettext("可免审核直接充值")), Permission::P_CTGCheck => array("Name" => \Lang\gettext("充值审核")), Permission::P_AddPayCoin => array("Name" => \Lang\gettext("发放代币"), "GMTKey2" => array("GMT_AddPayCoin"), "Log" => array("GMT_AddPayCoin")), Permission::P_DelPlayerMoney => array("Name" => \Lang\gettext("扣除玩家货币"), "GMTKey2" => array("GMT_DelPlayerMoney"), "Log" => array("GMT_DelPlayerMoney")), Permission::P_DelPlayerItem => array("Name" => \Lang\gettext("扣除玩家物品"), "GMTKey2" => array("GMT_DelPlayerItem"), "Log" => array("GMT_DelPlayerItem")), Permission::P_SetGMLevel => array("Name" => \Lang\gettext("设置玩家GM"), "GMTKey2" => array("GMT_SetGMLevel"), "Log" => array("GMT_SetGMLevel")), Permission::P_Face => array("Name" => \Lang\gettext("头像管理"), "GMTKey2" => array("GMT_Face"), "Log" => array("GMT_Face")), Permission::P_AddTitle => array("Name" => \Lang\gettext("称号管理"), "GMTKey2" => array("GMT_AddTitle"), "Log" => array("GMT_AddTitle")), Permission::P_Worship => array("Name" => \Lang\gettext("膜拜管理"), "GMTKey2" => array("GMT_Worship")), Permission::P_AddAuctionItem => array("Name" => \Lang\gettext("上架拍品"), "GMTKey2" => array("GMT_AddAuctionItem")), Permission::P_RefixWorldLV => array("Name" => \Lang\gettext("纠正世界等级"), "GMTKey2" => array("GMT_RefixWorldLV")), Permission::P_BourseOnOff => array("Name" => \Lang\gettext("交易所开关"), "GMTKey2" => array("GMT_BourseOnOff")), Permission::P_CrossActServerIDChange => array("Name" => \Lang\gettext("跨服活动区服ID修改"), "GMTKey2" => array("GMT_CrossActServerIDChange")), Permission::P_CrossBattleChampionSet => array("Name" => \Lang\gettext("跨服战场冠军赛"), "GMTKey2" => array("GMT_CrossBattleChampionSet")), Permission::P_Execfile => array("Name" => \Lang\gettext("执行命令"), "GMTKey2" => array("GMT_Execfile"), "Log" => array("GMT_Execfile")), ) ), array( "ModuleID" => "Mail", "Name" => \Lang\gettext("邮件"), "PList" => array( Permission::P_ServerMailSend => array( "Name" => \Lang\gettext("全服邮件发送"), "GMTKey2" => array("GMT_AddEntireCompensation"), "Title" => \Lang\gettext("如果没有免审权限则发送后需要审核"), "Log" => array("GMT_AddEntireCompensation"), "NOCheck" => Permission::P_ServerMailNOCheck, "Check" => Permission::P_ServerMailCheck ), Permission::P_ServerMailTempMgr => array("Name" => \Lang\gettext("全服邮件模板管理")), Permission::P_ServerMailNOCheck => array( "Name" => \Lang\gettext("全服邮件免审"), "GMTKey2" => array("GMT_AddEntireCompensation"), "Title" => \Lang\gettext("可免审核直接发送全服邮件") ), Permission::P_ServerMailCheck => array("Name" => \Lang\gettext("全服邮件审核")), Permission::P_ServerMailMgr => array( "Name" => \Lang\gettext("全服邮件管理"), "GMTKey2" => array("GMT_CompensationQuery", "GMT_CompensationMgr"), "Title" => \Lang\gettext("查询删除全服邮件"), "Log" => array("GMT_CompensationMgr") ), Permission::P_PersonalMailSend => array( "Name" => \Lang\gettext("个人邮件发送"), "GMTKey2" => array("GMT_AddPersonalCompensation"), "Title" => \Lang\gettext("如果没有免审权限则发送后需要审核"), "Log" => array("GMT_AddPersonalCompensation"), "NOCheck" => Permission::P_PersonalMailNOCheck, "Check" => Permission::P_PersonalMailCheck ), Permission::P_PersonalMailTempMgr => array("Name" => \Lang\gettext("个人邮件模板管理")), Permission::P_PersonalMailNOCheck => array( "Name" => \Lang\gettext("个人邮件免审"), "GMTKey2" => array("GMT_AddPersonalCompensation"), "Title" => \Lang\gettext("可免审核直接发送个人邮件") ), Permission::P_PersonalMailCheck => array("Name" => \Lang\gettext("个人邮件审核")), Permission::P_PersonalMailMgr => array( "Name" => \Lang\gettext("个人邮件管理"), "GMTKey2" => array("GMT_CompensationQueryPersonal"), "Title" => \Lang\gettext("查询删除玩家未领取的邮件"), "Log" => array("GMT_CompensationQueryPersonal") ), ) ), array( "ModuleID" => "DR", "Name" => \Lang\gettext("流向查询"), "PList" => array( Permission::P_DREntry => array("Name" => \Lang\gettext("流向查询入口")), Permission::P_DRCTGOKSort => array("Name" => \Lang\gettext("充值查询")), Permission::P_ExchangePayCoin => array("Name" => \Lang\gettext("转代币记录")), // Permission::P_DRCTGReport => array("Name" => \Lang\gettext("充值分析")), Permission::P_DRPersonalMail => array("Name" => \Lang\gettext("个人邮件")), Permission::P_DRServerView => array("Name" => \Lang\gettext("区服总览(当前服生态)")), Permission::P_DRServerSum => array("Name" => \Lang\gettext("区服汇总")), Permission::P_DRPlayerMoneyDR => array("Name" => \Lang\gettext("货币查询")), Permission::P_DRPlayerItemDR => array("Name" => \Lang\gettext("物品查询")), Permission::P_DRBuyStoreItem => array("Name" => \Lang\gettext("商城分析")), Permission::P_DRTreasure => array("Name" => \Lang\gettext("寻宝分析")), Permission::P_DRServerKeepLogin => array("Name" => \Lang\gettext("留存分析")), Permission::P_DRServerLTV => array("Name" => \Lang\gettext("LTV分析")), Permission::P_DRFightPowerModule => array("Name" => \Lang\gettext("战力分析")), Permission::P_DRVIPLVInfo => array("Name" => \Lang\gettext("VIP等级")), ) ), array( "ModuleID" => "OPS", "Name" => \Lang\gettext("运维管理"), "PList" => array( Permission::P_OPSPackBranch => array("Name" => \Lang\gettext("打包分支管理")), Permission::P_OPSVersionState => array("Name" => \Lang\gettext("版本状态管理")), Permission::P_OPSGameVersion => array("Name" => \Lang\gettext("内容版本管理")), Permission::P_OPSServerList => array("Name" => \Lang\gettext("服务器列表")), Permission::P_OPSServerStateMgr => array("Name" => \Lang\gettext("服务器状态管理"), "Log" => array("1")), Permission::P_OPSServerReportSP => array("Name" => \Lang\gettext("服务器推送SP")), Permission::P_OPSRefreshServer => array("Name" => \Lang\gettext("刷新选服列表"), "Log" => array("1")), Permission::P_SetOpenServerTime => array("Name" => \Lang\gettext("设置开服时间"), "GMTKey2" => array("GMT_SetOpenServerTime")), Permission::P_CrossServerMaintain => array("Name" => \Lang\gettext("跨服主服维护"), "GMTKey2" => array("GMT_CrossServerMaintain")), Permission::P_CrossClientServerMaintain => array("Name" => \Lang\gettext("跨服子服维护"), "GMTKey2" => array("GMT_CrossClientServerMaintain")), Permission::P_VersionLog => array("Name" => \Lang\gettext("版本更新日志")), ) ), array( "ModuleID" => "Account", "Name" => \Lang\gettext("账号权限"), "PList" => array( Permission::P_PermissionGroup => array("Name" => \Lang\gettext("权限分组")), Permission::P_UserMgr => array("Name" => \Lang\gettext("账号管理")), ) ), ); } return $PermissionModules; } /** * 获取所有权限信息 */ function GetPermissionAll() { $PermissionAll = array(); foreach (GetPermissionModules() as $mInfo) { $PermissionAll = array_merge($PermissionAll, $mInfo["PList"]); } return $PermissionAll; } function GetPermissionInfo($Permission) { foreach (GetPermissionModules() as $mInfo) { if (array_key_exists($Permission, $mInfo["PList"])) { return $mInfo["PList"][$Permission]; } } return array(); } // 权限配置 class Permission { /**管理员默认分组名 */ const GroupAdmin = "admin"; const P_System = "P_System"; //全服报表 const P_REP_AllView = "P_REP_AllView"; const P_REP_DailyUser = "P_REP_DailyUser"; const P_REP_KeepLogin = "P_REP_KeepLogin"; const P_REP_LTV = "P_REP_LTV"; const P_REP_FirstLoginFirstPayCnt = "P_REP_FirstLoginFirstPayCnt"; const P_REP_XPayPaycnt = "P_REP_XPayPaycnt"; const P_All_PlayerLV = "P_All_PlayerLV"; //服务器 const P_Online = "P_Online"; const P_PlayerLV = "P_PlayerLV"; const P_Chatmonitor = "P_Chatmonitor"; const P_BugReport = "P_BugReport"; const P_Serverview = "P_Serverview"; const P_PayOverview = "P_PayOverview"; const P_PayOvergroup = "P_PayOvergroup"; const P_PayOrder = "P_PayOrder"; const P_PayRank = "P_PayRank"; const P_CTGReportAll = "P_CTGReportAll"; const P_PlayerList = "P_PlayerList"; //普通命令权限 const P_BroadCast = "P_BroadCast"; const P_BroadCastMulti = "P_BroadCastMulti"; const P_ClearTalkCache = "P_ClearTalkCache"; const P_ForbidTalk = "P_ForbidTalk"; const P_ForbidLogin = "P_ForbidLogin"; const P_KickPlayer = "P_KickPlayer"; const P_GetPlayerForbid = "P_GetPlayerForbid"; const P_GetForbidInfo = "P_GetForbidInfo"; const P_GetPlayerInfo = "P_GetPlayerInfo"; const P_GetFamilyInfo = "P_GetFamilyInfo"; const P_FamilyTransfer = "P_FamilyTransfer"; const P_FamilyDismiss = "P_FamilyDismiss"; const P_QueryBillboard = "P_QueryBillboard"; const P_QueryBillboardCross = "P_QueryBillboardCross"; const P_MagicWeaponExp = "P_MagicWeaponExp"; const P_UserLog = "P_UserLog"; //高级命令权限 const P_CTGReq = "P_CTGReq"; const P_CTGNOCheck = "P_CTGNOCheck"; const P_CTGCheck = "P_CTGCheck"; const P_AddPayCoin = "P_AddPayCoin"; const P_DelPlayerMoney = "P_DelPlayerMoney"; const P_DelPlayerItem = "P_DelPlayerItem"; const P_SetGMLevel = "P_SetGMLevel"; const P_AddTitle = "P_AddTitle"; const P_Face = "P_Face"; const P_Worship = "P_Worship"; const P_AddAuctionItem = "P_AddAuctionItem"; const P_RefixWorldLV = "P_RefixWorldLV"; const P_BourseOnOff = "P_BourseOnOff"; const P_CrossActServerIDChange = "P_CrossActServerIDChange"; const P_CrossBattleChampionSet = "P_CrossBattleChampionSet"; const P_Execfile = "P_Execfile"; //邮件权限 const P_ServerMailSend = "P_ServerMailSend"; const P_ServerMailTempMgr = "P_ServerMailTempMgr"; const P_ServerMailNOCheck = "P_ServerMailNOCheck"; const P_ServerMailCheck = "P_ServerMailCheck"; const P_ServerMailMgr = "P_ServerMailMgr"; const P_PersonalMailSend = "P_PersonalMailSend"; const P_PersonalMailTempMgr = "P_PersonalMailTempMgr"; const P_PersonalMailNOCheck = "P_PersonalMailNOCheck"; const P_PersonalMailCheck = "P_PersonalMailCheck"; const P_PersonalMailMgr = "P_PersonalMailMgr"; //流向权限 const P_DREntry = "P_DREntry"; const P_DRCTGOKSort = "P_DRCTGOKSort"; const P_ExchangePayCoin = "P_ExchangePayCoin"; const P_DRCTGReport = "P_DRCTGReport"; const P_DRPersonalMail = "P_DRPersonalMail"; const P_DRServerView = "P_DRServerView"; const P_DRServerSum = "P_DRServerSum"; const P_DRPlayerMoneyDR = "P_DRPlayerMoneyDR"; const P_DRPlayerItemDR = "P_DRPlayerItemDR"; const P_DRBuyStoreItem = "P_DRBuyStoreItem"; const P_DRTreasure = "P_DRTreasure"; const P_DRServerKeepLogin = "P_DRServerKeepLogin"; const P_DRServerLTV = "P_DRServerLTV"; const P_DRFightPowerModule = "P_DRFightPowerModule"; const P_DRVIPLVInfo = "P_DRVIPLVInfo"; //运维权限 const P_OPSPackBranch = "P_OPSPackBranch"; const P_OPSVersionState = "P_OPSVersionState"; const P_OPSGameVersion = "P_OPSGameVersion"; const P_OPSServerList = "P_OPSServerList"; const P_OPSServerStateMgr = "P_OPSServerStateMgr"; const P_OPSServerReportSP = "P_OPSServerReportSP"; const P_OPSRefreshServer = "P_OPSRefreshServer"; const P_SetOpenServerTime = "P_SetOpenServerTime"; const P_CrossServerMaintain = "P_CrossServerMaintain"; const P_CrossClientServerMaintain = "P_CrossClientServerMaintain"; const P_VersionLog = "P_VersionLog"; //===================== 账号管理权限 ======================= /**权限分组 */ const P_PermissionGroup = "P_PermissionGroup"; /**账号管理权限 - 增删改 */ const P_UserMgr = "P_UserMgr"; } // 审核状态定义 class GMTCheckState { /**免审/审核通过 */ const OK = 1; /**未审核 */ const UnCheck = 2; /**审核不通过 */ const Refuse = 3; public static function StateNameInfo() { return array( GMTCheckState::OK => \Lang\gettext("通过"), GMTCheckState::UnCheck => \Lang\gettext("未审核"), GMTCheckState::Refuse => \Lang\gettext("拒绝") ); } } class UserLV { /**超级管理员,只能有一个超级管理员账号,可管理所有组织及成员 */ const ADMIN_SUPER = 99; /**组织单位管理员,每个组织单位可以拥有多个组织管理员,仅可管理该组织成员 */ const ADMIN_ORG = 90; /**后台普通账号 */ const COMM = 0; public static function LVNameInfo() { return array( UserLV::COMM => \Lang\gettext("普通账号"), UserLV::ADMIN_ORG => \Lang\gettext("管理员"), UserLV::ADMIN_SUPER => \Lang\gettext("超级管理员") ); } } class User { private $m_sErrInfo; private $userData; private $permissions; private $serversArray; function __construct($UserAccount) { \DBOper\FindOne("GMTUser", array("UserAccount" => $UserAccount), $this->userData); if (!isset($this->userData) || $this->userData["UserAccount"] != $UserAccount) { $this->m_sErrInfo = "can not found UserAccount:" . $UserAccount; \Logging\LogError($this->m_sErrInfo); header("location:/Account/login.php"); return; } } public function GetAttr($attrName) { return $this->userData[$attrName]; } public function IsAdminSuper() { return $this->userData["UserLV"] == UserLV::ADMIN_SUPER; } public function IsAdminOrg() { return $this->userData["UserLV"] == UserLV::ADMIN_ORG; } //运营ID数组,所有的 public function GetSPIDAll() { if ($this->IsAdminSuper()) { return \CommFunc\GetAllChannel(); } if ($this->IsAdminOrg()) { return \CommFunc\GetOrganizationChannel($this->userData["Organization"]); } return $this->userData["SPList"]; } //运营ID,当前选择的 public function GetSPID() { $spid = $_SESSION['spid']; return $spid; } //根据指定的spid获取对应服务器列表配置 public function GetServersCfg($spid, $checkSpecial = true) { $ConfigFile = dirname(__FILE__) . "\Server\Server_" . $spid . ".ini"; if (file_exists($ConfigFile)) { $serversCfg = parse_ini_file($ConfigFile, true); if (!$checkSpecial) { return $serversCfg; } $UserAccount = $this->userData["UserAccount"]; \CommFunc\GetConfig("ServerInfo", "SpecialServerIDStart", $SpecialServerIDStart); \CommFunc\GetConfig("ServerInfo", "SpecialAccountList", $SpecialAccountList); $SpecialAccountList = explode(",", $SpecialAccountList); $SpecialServerIDStart = intval($SpecialServerIDStart); // 特殊账号,只能看指定服及以上 if (in_array($UserAccount, $SpecialAccountList)) { foreach ($serversCfg as $key => $info) { $ServerID = intval($info["ServerID"]); if ($ServerID < $SpecialServerIDStart) { unset($serversCfg[$key]); } } return $serversCfg; } return $serversCfg; } if ($spid) { echo "file is not exist: " . "Server_" . $spid . ".ini" . "
"; } return array(); } //重置服务器列表 public function ResetServers() { $this->serversArray = null; } //获取账号spid对应服务器列表配置 public function GetServers() { if ($this->serversArray != null) { return $this->serversArray; } $spid = $this->GetSPID(); $serversCfg = $this->GetServersCfg($spid, false); if (!count($serversCfg)) { return $serversCfg; } $this->serversArray = $serversCfg; $UserAccount = $this->userData["UserAccount"]; \CommFunc\GetConfig("ServerInfo", "SpecialServerIDStart", $SpecialServerIDStart); \CommFunc\GetConfig("ServerInfo", "SpecialAccountList", $SpecialAccountList); $SpecialAccountList = explode(",", $SpecialAccountList); $SpecialServerIDStart = intval($SpecialServerIDStart); $isSpecialUser = in_array($UserAccount, $SpecialAccountList); $specialServerID = 270; // 270服特殊处理,被合到270以前的服了 $specialMainServerID = 0; // 特殊服所属主服 if ($isSpecialUser) { foreach ($serversCfg as $info) { $ServerID = intval($info["ServerID"]); if ($ServerID == $specialServerID && $info["MainServer"]) { $specialMainServerID = intval($info["MainServer"]); break; } } } # 统计合服列表 $mixServerArray = array(); foreach ($this->serversArray as $serverName => $serverInfo) { $mainServerID = $serverInfo["MainServer"]; if (!$mainServerID) { $mainServerID = $serverInfo["ServerID"]; } if (!$mainServerID) { continue; } if (!array_key_exists($mainServerID, $mixServerArray)) { $mixServerArray[$mainServerID] = array("MixServerIDList" => array(), "MixServerStr" => ""); } array_push($mixServerArray[$mainServerID]["MixServerIDList"], intval($serverInfo["ServerID"])); } if ($isSpecialUser) { if ($specialMainServerID) { // 特殊服只显示这两个服 $mixServerArray[$specialMainServerID] = array("MixServerIDList" => array($specialMainServerID, $specialServerID), "MixServerStr" => ""); } } # 翻译合服字符串信息 foreach ($mixServerArray as $mainServerID => $mixServerInfo) { sort($mixServerInfo["MixServerIDList"]); $mixServerIDList = $mixServerInfo["MixServerIDList"]; $mixServerStr = ""; $serverCount = count($mixServerIDList); if ($serverCount <= 1) { continue; } for ($i = 0; $i < $serverCount; $i++) { $serverID = $mixServerIDList[$i]; if ($i == 0) { $mixServerStr = "" . $serverID; continue; } $connectPre = ($serverID == ($mixServerIDList[$i - 1] + 1)); # 连接上一个ID $connectNext = false; # 连接下一个ID if ($i != $serverCount - 1) { $connectNext = ($serverID == ($mixServerIDList[$i + 1] - 1)); } if ($connectPre && $connectNext) { continue; } else if ($connectPre) { $mixServerStr .= "~" . $serverID; } else { $mixServerStr .= ", " . $serverID; } } $mixServerArray[$mainServerID]["MixServerStr"] = $mixServerStr; } # 更新到每个服务器 foreach ($this->serversArray as $serverName => $serverInfo) { $serverID = $serverInfo["ServerID"]; $mainServerID = $serverInfo["MainServer"]; $mixServerInfo = null; if (array_key_exists($serverID, $mixServerArray)) { $mixServerInfo = $mixServerArray[$serverID]; } else if (array_key_exists($mainServerID, $mixServerArray)) { $mixServerInfo = $mixServerArray[$mainServerID]; } else { continue; } $this->serversArray[$serverName]["MixServerIDList"] = $mixServerInfo["MixServerIDList"]; $this->serversArray[$serverName]["MixServerStr"] = $mixServerInfo["MixServerStr"]; } // 特殊账号,只能看指定服及以上 if ($isSpecialUser) { foreach ($this->serversArray as $key => $info) { $serverID = intval($info["ServerID"]); if ($serverID < $SpecialServerIDStart && $serverID != $specialMainServerID) { unset($this->serversArray[$key]); } } } return $this->serversArray; } //所有权限 public function GetUserPermissions() { if (isset($this->permissions)) { return $this->permissions; } $this->permissions = array(); if ($this->IsAdminSuper()) { $PermissionModules = \User\GetPermissionModules(); foreach ($PermissionModules as $moduleInfo) { $this->permissions = array_merge($this->permissions, array_keys($moduleInfo["PList"])); } array_push($this->permissions, Permission::P_System); // 超级管理员附加系统权限 } else if ($this->IsAdminOrg()) { \DBOper\FindOne("GMTPermissionGroup", array( "Organization" => $this->userData["Organization"], "GroupName" => Permission::GroupAdmin ), $adminPerInfo); if (isset($adminPerInfo) && is_array($adminPerInfo['Permissions'])) { $this->permissions = $adminPerInfo['Permissions']; } } else { $groupDatas = null; $PermissionGroups = $this->userData["PermissionGroups"]; if (isset($PermissionGroups) && count($PermissionGroups) > 0) { \DBOper\Find("GMTPermissionGroup", array( "Organization" => $this->userData["Organization"], "GroupName" => array('$in' => $PermissionGroups) ), $groupDatas); } if (isset($groupDatas)) { foreach ($groupDatas as $gData) { if (is_array($gData['Permissions'])) { $this->permissions = array_merge($this->permissions, $gData['Permissions']); } } } } return $this->permissions; } //是否有该权限 public function HavePermission($permission, $notice = true) { if (!in_array($permission, $this->GetUserPermissions())) { if ($notice) { if (!$permission) { \Logging\LogError("没有指定权限"); echo \Lang\gettext("没有指定权限"); } else { \Logging\LogError("您没有该权限." . $permission); echo \Lang\gettext("您没有该权限"); } } return false; } return true; } //是否需要验证权限key public function NeedCheckKey() { \CommFunc\GetConfig("Config", "CheckKeyTime", $checkKeyTime); if ($checkKeyTime == "") { return true; } if (!$checkKeyTime) { // 不需要验证 return false; } $checkKeyTime = (int)$checkKeyTime; $curTime = time(); $lastcheckKeyTime = $_SESSION['checkKeyTime']; if ($lastcheckKeyTime && $curTime - $lastcheckKeyTime < $checkKeyTime) { return false; } return true; } //更新验证权限key时间 public function UpdCheckKeyTime() { $_SESSION['checkKeyTime'] = time(); return $_SESSION['checkKeyTime']; } public function GetErrInfo() { return $this->m_sErrInfo; } }