📄 permit_group.php
字号:
<?php/*[BBWPS!] (C)2006-2010 小蜜蜂版权所有.This is NOT a freeware, use is subject to license terms功能:平台虚拟权限组*/error_reporting(0);//-------------------------------------------------//验证是否是合法引用//-------------------------------------------------function_exists("CheckRequire")?null:exit("Forbidden");require_once("../class/ParseRole_class.php");//-------------------------------------------------//读入更新模块权限的信息//-------------------------------------------------file_exists("../data/updaterole.php")?include_once("../data/updaterole.php"):null;//-------------------------------------------------------//读取更新的模块url并访问模块更新的虚拟权限组//$updateRole 要更新的模块虚拟权限组//$roleArray 缓存下来的模块虚拟权限组//$moduleArray 模块安装信息//-------------------------------------------------------file_exists("../data/role.php")?include("../data/role.php"):null;$roleStr = "<?php"."\n";if(is_array($updateRole)){ //--------------------------------------------------- //如果有更新信息,就按更新的信息来循环访问更新信息 //--------------------------------------------------- foreach ($updateRole as $uRole){ //---------------------------------------- //用XML解析器解析 //---------------------------------------- if($moduleArray[$uRole]['idns']){ $rolePath = $moduleArray[$uRole]['idns']."api/role.php?basecheckcode=".EnMakeMd5($baseCheckCode); } else { if($moduleArray[$uRole]['dns']){ $rolePath = $moduleArray[$uRole]['dns']."api/adminrole.php?basecheckcode=".EnMakeMd5($baseCheckCode); } else{ continue; } } $xmlParseObj = new RoleParse($rolePath); $xmlParseArr = $xmlParseObj->GetInfos(); if(key_exists($xmlParseArr[0]['module'],$roleArray)){ //------------------------------------ //存在,说明是更新的信息,先清除以前的信息 //------------------------------------ unset($roleArray[$xmlParseArr[0]['module']]); } //------------------------------------- //保存原来的缓存信息 //------------------------------------- if(is_array($roleArray)){ foreach ($roleArray as $rkey=>$ra){ if(is_array($ra)&&count($ra)>0){ foreach ($ra as $r){ $roleStr.='$roleArray["'.$rkey.'"][]=array('; foreach ($r as $rk=>$rv){ $roleStr.='"'.$rk.'"=>"'.$rv.'",'; } $roleStr = substr($roleStr,0,-1).');'."\n"; } } } } //--------------------------------------------- //加入现在的信息 //--------------------------------------------- if(is_array($xmlParseArr)&&count($xmlParseArr)>0){ $moduleName = $xmlParseArr[0]['module']; array_shift($xmlParseArr); foreach ($xmlParseArr as $xp){ $roleStr.='$roleArray["'.$moduleName.'"][]=array("rid"=>"'.$xp["rid"].'","rname"=>"'.$xp["rname"].'","descript"=>"'.$xp['rdescript'].'");'."\n"; } } $fp = fopen("../data/role.php","w"); fwrite($fp,$roleStr,strlen($roleStr))?fclose($fp):null; //过滤重复的数据; $fileStrArray=file("../data/role.php"); $fileStrArray=array_unique($fileStrArray); $fileStr=implode("\n",$fileStrArray); $fp = fopen("../data/role.php","w"); fwrite($fp,$fileStr,strlen($fileStr))?fclose($fp):null; //exit(); //----------------------------------------------- //删除当前更新的权限组 //----------------------------------------------- $updateStr = "<?php"."\n"; foreach ($updateRole as $uroleValue){ if($uroleValue!=$uRole){ $updateStr.='$updateRole[]="'.$uroleValue.'";'."\n"; } } $upfp = fopen("../data/updaterole.php","w"); fwrite($upfp,$updateStr,strlen($updateStr)); fclose($upfp); } unset($fp,$roleStr);}unset($roleArray);file_exists("../data/role.php")?include("../data/role.php"):null;$db= new DB($hostname,$username,$password,$database);$p = new Template("./template/member");extract($_POST);extract($_GET);switch ($action){ //---------------------------------- //启动权限组 //---------------------------------- case "start": $popenStartSql = "update {$prefix}permitgroup set popen='1' where pgid='{$pgid}'"; $db->update($popenStartSql); Meta(0,"?mod=member&f=permit_group"); break; //---------------------------------- //停止权限组 //---------------------------------- case "stop": $popenStopSql = "update {$prefix}permitgroup set popen='0' where pgid='{$pgid}'"; $db->update($popenStopSql); Meta(0,"?mod=member&f=permit_group"); break; //---------------------------------- //增加一个虚拟权限组 //---------------------------------- case "addpg": $module=array($_POST["cbaseArray"],$_POST["module"]); $module=serialize($module); $insertSql = "insert into {$prefix}permitgroup (`pgname`,`descript`,`popen`,`module`,`pgtype`,`ispass`,`isreg`) values ('$pgname','$description','1','$module','{$_POST["pgtype"]}','{$_POST["ispass"]}','{$_POST["isreg"]}')"; $db->insert($insertSql); Meta(0,"?mod=member&f=permit_group"); break; //--------------------------------- //编辑一个虚拟权限组 //--------------------------------- case "edit": $permitPrefix = ""; //-------------------------------- //把设置的权限串化 //-------------------------------- foreach ($permitvalue as $pk=>$pv){ $permitArray[]=array("module"=>$pk,"moduleper"=>$pv); } $permitStr = serialize($permitArray); //------------------------------------ //串化后的格式为 bbwps_module_0:2|bbwps_module_2:2|动画:1 //------------------------------------ $module=array($_POST["cbaseArray"],$_POST["module"]); $module=serialize($module); $permitSql = "update {$database}.{$prefix}permitgroup set `pgname`='$pgname',`permit`='$permitStr',`descript`='$description',`popen`='$popen',`module`='$module',`ispass`='{$_POST["ispass"]}',`isreg`='{$_POST["isreg"]}' where `pgid`='$pgid'"; $db->update($permitSql); Meta(0,"?mod=member&f=permit_group"); break; //----------------------------------------------- //删除一个虚拟权限组 //----------------------------------------------- case "del": $deleteSql = "delete from {$prefix}permitgroup where `pgid`='$pgid'"; $db->update($deleteSql); $sql="update {$prefix}members set vipnum='0' where vipnum='$pgid'"; $db->update($sql); Meta(0,"?mod=member&f=permit_group"); //------------------------------------------------- //编辑一个会员组的页面 //------------------------------------------------- break; case "editpage": $p->set_file("pg","permit_group.html"); $p->set_block("pg","modulerole1","mr"); $p->set_block("pg","permitrow","pgr"); //获得该会员组的基本信息 $pgSql = "select * from {$prefix}permitgroup where pgid={$pgid}"; $pgRes = $db->query($pgSql,true); $pgObj = $db->fetch_object($pgRes); //新增加的用户组访问的模块2007-04-18 $tmp_module=unserialize($pgObj->module); $moduleArraySelf=$tmp_module[1]; $cbaseArray=$tmp_module[0]; getallcbase(); $ModuleStr=$cbaseOption; $p->set_var("edit_module",$ModuleStr); //---------------------------------------- //清空权限组 //---------------------------------------- $p->set_var("permitname",$pgObj->pgname); $p->set_var("pgid","&pgid=".$pgObj->pgid); $p->set_var("description",$pgObj->descript); $p->set_var("popen_0",""); $p->set_var("popen_1",""); $pgObj->ispass?$p->set_var("ispass","checked"):$p->set_var("ispass",""); $pgObj->isreg?$p->set_var("isreg","checked"):$p->set_var("isreg",""); $popen = "popen_".$pgObj->popen; $p->set_var($popen,"checked"); $permitArr = unserialize($pgObj->permit); //----------------------------------------- //二层模板 //----------------------------------------- foreach ($roleArray as $rakey=>$ra){ $moduleid=$rakey; $rakey=str_replace("bbwps_module_","",$rakey); if(in_array($rakey,$moduleArraySelf)){ $p->set_var("mr",null); $p->set_var("modulename",$moduleArray[$moduleid]["name"]); //----------------------------------------- //三层模板 //----------------------------------------- foreach ($ra as $r){ $p->set_var($r); $p->set_var("input","<input type=\"radio\" name=\"permitvalue[".$moduleid."]\" value=\"".$r['rid']."\">"); foreach ($permitArr as $pa1){ //----------------------------------- //$permitAr[0]模块ID号 //----------------------------------- if($pa1['module']==$moduleid&&$pa1['moduleper']==$r['rid']){ $p->set_var("input","<input type=\"radio\" name=\"permitvalue[".$moduleid."]\" value=\"".$r['rid']."\" checked>"); break; } } $p->parse("mr","modulerole1",true); } $p->parse("pgr","permitrow",true); } } $p->set_file("pg","permit_group.html"); $p->parse("out","pg"); $p->p("out"); break; default: $p->set_file("handle","mem_add.html"); $p->set_block("handle","link","lk"); $sql="select * from {$database}.{$prefix}permitgroup"; $db->query($sql,true); while ($rs=$db->fetch_array()){ $p->set_var($rs); if($rs["popen"]==0){ $p->set_var("start","start"); $p->set_var("startname",$langAdminArray["modu_start"]); $p->set_var("color","green"); } else{ $p->set_var("start","stop"); $p->set_var("startname",$langAdminArray["modu_stop"]); $p->set_var("color","red"); } $p->parse("lk","link",true); } getallcbase(); $ModuleStr=$cbaseOption; $p->set_var("edit_module",$ModuleStr); $p->parse("output","handle"); $p->p("output"); break;}function getcbase($baseid,$step){ global $db,$cbaseOption,$prefix,$moduleArraySelf,$cbaseArray,$langAdminArray; $sql="select * from {$prefix}module where cbaseid={$baseid}"; $db->query($sql,true); while ($rs=$db->fetch_array()){ $checked=""; if(in_array($rs["id"],$moduleArraySelf)){ $checked="checked"; } else{ $rs["isshow"]?$checked="":$checked="disabled"; } switch ($rs["regctrl"]){ case 0 : $regctrl="({$langAdminArray["mem_regctrl_0"]})"; break; case 1 : $regctrl="({$langAdminArray["mem_regctrl_1"]})"; break; default: $regctrl=""; break; } $cbaseOption.="{$step}|--<input type=\"checkbox\" name=\"module[]\" value=\"{$rs["id"]}\" {$checked}>{$rs["name"]}{$regctrl}<br>"; } $sql="select * from {$prefix}cbase where pcbaseid={$baseid}"; $db->query($sql,true); while ($rs=$db->fetch_array()){ $arr_tmp_cbaseid[]=$rs; } foreach ($arr_tmp_cbaseid as $rs){ if(in_array($rs["cbaseid"],$cbaseArray)){ $checked="checked"; } else{ $checked=""; } switch ($rs["regctrl"]){ case 0 : $regctrl="({$langAdminArray["mem_regctrl_0"]})"; break; case 1 : $regctrl="({$langAdminArray["mem_regctrl_1"]})"; break; default: $regctrl=""; break; } $cbaseOption.="{$step}|--<input type=\"checkbox\" name=\"cbaseArray[]\" value=\"{$rs["cbaseid"]}\" {$checked}>{$rs["cbasename"]}({$langAdminArray["mem_node"]})<br />"; getcbase($rs["cbaseid"],$step." "); } return true;}function getallcbase(){ global $db,$cbaseOption,$prefix,$moduleArraySelf,$cbaseArray,$langAdminArray; $sql="select * from {$prefix}module where cbaseid=0 order by sort"; $db->query($sql,true); while ($rs=$db->fetch_array()){ $checked=""; if(in_array($rs["id"],$moduleArraySelf)){ $checked="checked"; } else{ $rs["isshow"]?$checked="":$checked="disabled"; } switch ($rs["regctrl"]){ case 0 : $regctrl="({$langAdminArray["mem_regctrl_0"]})"; break; case 1 : $regctrl="({$langAdminArray["mem_regctrl_1"]})"; break; default: $regctrl=""; break; } $cbaseOption.="|--<input type=\"checkbox\" name=\"module[]\" value=\"".$rs["id"]."\" {$checked}>".$rs["name"]."{$regctrl}<br/>"; } $sql="select * from {$prefix}cbase where pcbaseid=0"; $db->query($sql,true); while ($rs=$db->fetch_array()){ $rstmp[]=$rs; } foreach ($rstmp as $rs){ if(in_array($rs["cbaseid"],$cbaseArray)){ $checked="checked"; } else{ $checked=""; } $cbaseOption.="|--<input type=\"checkbox\" name=\"cbaseArray[]\" value=\"{$rs["cbaseid"]}\" {$checked}>{$rs["cbasename"]}({$langAdminArray["mem_node"]})<br />"; getcbase($rs["cbaseid"]," "); }}?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -