最新xoops模組開發
一、前台架構
將檢查權限的程式碼,放到前台共同引入的檔案中,如下圖
二、檢查權限
- 由上圖,決定將程式碼放到「interface_menu.php」
-
//---- 權限設定 ---- */
$module_id = $xoopsModule->getVar('mid');
$isAdmin=false;
if ($xoopsUser){
//判斷是否對該模組有管理權限
$isAdmin=$xoopsUser->isAdmin($module_id);
}
//權限設定($gperm_name_arr權限名稱、$gperm_itemid_arr權限項目 )
if($gperm_name_arr and $gperm_itemid_arr){
$gperm_handler =& xoops_gethandler('groupperm');
#取得群組
$groups =($xoopsUser)? $xoopsUser->getGroups():XOOPS_GROUP_ANONYMOUS;
//權限設定
foreach($gperm_name_arr as $gperm_name =>$gperm_name_title){
foreach($gperm_itemid_arr as $gperm_itemid =>$gperm_itemid_v){
if($isAdmin){
#管理員
$gperm[$gperm_name][$gperm_itemid]=true;
}else{
#非管理員
if($gperm_itemid_v['anonymous']){
#訪客有權限
#檢查是是否開放全部
$sql = "select gperm_id
from `".$xoopsDB->prefix('group_permission')."`
where `gperm_groupid` = '0' and `gperm_modid`='{$module_id}' and `gperm_itemid`='{$gperm_itemid}' and `gperm_name`='{$gperm_name}'";
$result = $xoopsDB->queryF($sql) or redirect_header($_SERVER['PHP_SELF'], 3, web_error());
$row = $xoopsDB->fetchArray($result);
if($row['gperm_id']){
$gperm[$gperm_name][$gperm_itemid]=true;
continue;
}
}
if($gperm_handler->checkRight($gperm_name, $gperm_itemid, $groups, $module_id)){
//若有權限要做的動作
$gperm[$gperm_name][$gperm_itemid]=true;
}else{
//若沒有權限要做的動作
$gperm[$gperm_name][$gperm_itemid]=false;
}
}
}
}
}
/*
if(!$gperm['ugm_webAdmin'][1])redirect_header(XOOPS_URL,3,_NOPERM);//新增
if(!$gperm['ugm_webAdmin'][2])redirect_header(XOOPS_URL,3,_NOPERM);//編輯
if(!$gperm['ugm_webAdmin'][3])redirect_header(XOOPS_URL,3,_NOPERM);//刪除
if(!$gperm['ugm_webAdmin'][4])redirect_header(XOOPS_URL,3,_NOPERM);//瀏覽
if(!$gperm['ugm_webAdmin'][5])redirect_header(XOOPS_URL,3,_NOPERM);//列印
*/
//---- 權限設定 ---- */
三、使用
- $isAdmin => 是否為管理員
-
if(!$gperm['ugm_webAdmin'][1])redirect_header(XOOPS_URL,3,_NOPERM);//新增
if(!$gperm['ugm_webAdmin'][2])redirect_header(XOOPS_URL,3,_NOPERM);//編輯
if(!$gperm['ugm_webAdmin'][3])redirect_header(XOOPS_URL,3,_NOPERM);//刪除
if(!$gperm['ugm_webAdmin'][4])redirect_header(XOOPS_URL,3,_NOPERM);//瀏覽
if(!$gperm['ugm_webAdmin'][5])redirect_header(XOOPS_URL,3,_NOPERM);//列印