:::

18. 模組自動功能

一、安裝、更新及移除模組用的設定

這個項目沒有也沒關係,主要是用來設定在安裝(或反安裝)模組時,要順便進行的一些指定動作,並不常用(也並沒有規定一定要放在include中)。

  1. $modversion['onInstall'] = "include/oninstall.php";
    模組安裝時要執行的程式。檔案裡頭必須包含一個函數: xoops_module_install_{dirname} ,此函數將會在模組安裝時被執行。
  2. $modversion['onUninstall'] = "include/onuninstall.php";
    模組移除時要執行的程式。檔案裡頭必須包含一個函數: xoops_module_uninstall_{dirname} ,此函數將會在模組反安裝時被執行。
  3. $modversion['onUpdate'] = "include/onUpdate.php";
    模組更新時要執行的程式。檔案裡頭必須包含一個函數: xoops_module_update_{dirname} ,此函數將會在模組更新時被執行。

二、安裝時自動建立資料夾

安裝時可以讓模組建立一些必要的資料夾或者複製一些檔案等動作。
function xoops_module_install_tad_contact(&$module) {
    mk_dir(XOOPS_ROOT_PATH."/uploads/tad_contact");
    mk_dir(XOOPS_ROOT_PATH."/uploads/tad_contact/file");
    mk_dir(XOOPS_ROOT_PATH."/uploads/tad_contact/image");
    return true;
}

三、更新時自動更新資料庫結構

若模組的資料結構需更新,那麼可以用此機制(先檢查,後執行):
function xoops_module_update_tad_contact(&$module, $old_version) {
    GLOBAL $xoopsDB;
    if(chk_chk1()) go_update1();
    return true;
}


function chk_chk1(){
global $xoopsDB;
    $sql="select count(`pic_type`) from ".$xoopsDB->prefix("contact");
    $result=$xoopsDB->query($sql);
    if(empty($result)) return false;
    return true;
}


function go_update1(){
    global $xoopsDB;
    $sql="ALTER TABLE ".$xoopsDB->prefix("contact")." DROP `pic_type`";
    $xoopsDB->queryF($sql) or redirect_header(XOOPS_URL."/modules/system/admin.php?fct=modulesadmin",30,  mysql_error());
}

四、移除時自動備份資料夾

移除時,若覺得資料有保存價值,那麼亦可將資料保存起來。
function xoops_module_uninstall_tad_contact(&$module) {
  GLOBAL $xoopsDB;
    $date=date("Ymd");
    rename(XOOPS_ROOT_PATH."/uploads/tad_contact",XOOPS_ROOT_PATH."/uploads/tad_contact_bak_{$date}");

    return true;
}


:::

搜尋


書籍目錄

展開 | 闔起

線上使用者

33人線上 (9人在瀏覽線上書籍)

會員: 0

訪客: 33

更多…