線上書籍

Home

[1011]XOOPS 2.5 模組開發

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