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} ,此函數將會在模組更新時被執行。