[981]PHP入門+XOOPS模組設計
這個項目沒有也沒關係,主要是用來設定在安裝(或反安裝)模組時,要順便進行的一些指定動作,並不常用(也並沒有規定一定要放在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} ,此函數將會在模組更新時被執行。
安裝時可以讓模組建立一些必要的資料夾或者複製一些檔案等動作。
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;
}