18.
細部權限及自動功能
一、 XOOPS系統權限均在group_permission資料表:
- 這個表有五個欄位,分別為: gperm_id(權限的流水編號)、gperm_groupid(群組編號)、gperm_itemid(模組、區塊或細部項目編號)、gperm_modid(模組編號)、gperm_name(權限種類)。這簡單的五個欄位就可以設定各種模組、區塊,甚至是自訂的細部權限。
- (1) 「system_admin」就是「系統管理權」
- (2) 「module_read」就是「模組的使用權」
- (3) 「module_admin」就是「模組的管理權」
- (4) 「block_read」就是「區塊的使用權」
- 若在gperm_name欄位裡頭看到不屬於以上這四種名稱者,代表該權限並不是系統預設的權限,而是模組自訂的細部權限。
二、 細部權限設定(請將「groupperm.php」複製到模組admin下)
- 「權限項目陣列」其寫法如下:
$item_list = array(
'編號1' => "權限項目1",
'編號2' => "權限項目2"
);
- 「編號」會存在gperm_itemid欄位裡,要判斷某群組是否有該項目權限都要靠此編號來判定,故設好後編號和項目的對應就別亂改(但可新增)。
- 「權限項目」直接寫中文即可。
- 「權限名稱」非常重要了!請用英文名稱設定,且盡量別和其他模組重複。一旦設好了,此項目值千萬別改,因為一改,可能之前針對此模組所設訂的權限會全部泡湯。
三、 程式套用細部權限(請開啟套用權限機制.txt)
- $gperm_handler->checkRight()就是用來判斷權限狀況,而該方法需要四個參數,上面的1~9行其實就只是為了產生此四個參數而存在的。其參數如下:
- (1) $perm_name:權限名稱,即groupperm.php中的$perm_name設定。
- (2) $perm_itemid:權限項目編號,即groupperm.php中的$item_list設定。
- (3) $groups:目前登入者的所屬群組。
- (4) $module_id:模組編號,用$xoopsModule->getVar('mid')取得目前模組編號。
- 若是該段語法是在函數中使用,記得global $xoopsUser及$xoopsModule。
四、 安裝、更新及移除模組用的設定
- 這個項目沒有也沒關係,主要是用來設定在安裝(或反安裝)模組時,要順便進行的一些指定動作,並不常用(也並沒有規定一定要放在include中)。
$modversion['onInstall'] = "include/onInstall.php";
- 模組安裝時要執行的程式。檔案裡頭必須包含一個函數: xoops_module_install_{dirname} ,此函數將會在模組安裝時被執行。
$modversion['onUninstall'] = "include/onUninstall.php";
- 模組移除時要執行的程式。檔案裡頭必須包含一個函數: xoops_module_uninstall_{dirname} ,此函數將會在模組反安裝時被執行。
$modversion['onUpdate'] = "include/onUpdate.php";
- 模組更新時要執行的程式。檔案裡頭必須包含一個函數: xoops_module_update_{dirname} ,此函數將會在模組更新時被執行。