ブログ - XCL モジュール開発 インストール&アップデート

XCL モジュール開発 インストール&アップデート

カテゴリ : 
開発用メモ » XCL開発資料
執筆 : 
masa 2008/7/26
■従来のインストール&アップデート機能の定義

xoops_version.php に下記を定義する。

$modversion['onInstall'] = 'oninstall.php';
$modversion['onUpdate'] = 'onupdate.php';
$modversion['onUninstall'] = 'onuninstall.php';
oninstall.php に関数を定義
function xoops_module_install_{mydirname}($module)

■XCL2.1 のインストール定義
(modules/legacy/admin/class/ModuleInstallUtils.class.phpを参照)

xoops_version.php に下記を定義する。

$modversion['legacy_installer']['installer']['class'] = 'myInstaller';
$modversion['legacy_installer']['updater']['class'] = 'myUpdater';
$modversion['legacy_installer']['uninstaller']['class'] = 'myUninstaller';


admin/class の下にファイルを作成
myInstaller.class.php
myUpdater.class.php
myUninstaller.class.php

class {Modulename}_myInstaller extends Legacy_ModuleInstaller
class {Modulename}_myUpdater extends Legacy_ModulePhasedUpgrader
class {Modulename}_myUninstaller extends Legacy_ModuleUninstaller


なお、通常はファイルパスは admin/class/ だが、下記のような定義を追加することでファイルパスやネームスペースも変更できる。

$modversion['legacy_installer']['installer']['filepath'] = '{フルパスでのファイルパス指定}';
$modversion['legacy_installer']['installer']['namespace'] = '{ネームスペース}'



■Installer クラスの定義
XR/modules/legacy/admin/class/ModuleInstaller.class.php をインクルード

・bool executeInstall()
インストールを実行する。成功すれば true を返す。
特に必要がなければ Legacy_ModuleInstaller のものをそのまま使えばよい?
標準の executeInstall() は次のようなものを呼び出す。

_installTables()
_installModule()
_installTemplates()
_installBlocks()
_installPreferences()
_processScript()
_processReport()


■従来定義とXCL定義の関係
(Legacy_ModuleInstaller @modules/legacy/admin/class/ModuleInstaller.class.phpを参照)

_processScript() の中で $modversion['onInstall'] のチェックが行われている。


■結論

D3対応するために通常は oninstall.php にインストールスクリプトを作るが、モジュールディレクトリルートにファイルを増やさないために、XCLスタイルでインストーラクラスを作成する。

ファイルパスとして XOOPS_TRUST_PATH."/modules/${mytrustdirname}/admin/class/myInstaller.class.php" をセットする。
ネームスペースには モジュール名(Trust側)を使う

oninstall.php に書いていたインストールスクリプトは、インストールクラスの _processScript() 中に記述する。
  • トラックバック (0)
  • 閲覧 (4959)