ブログ - XCL モジュール開発 インストール&アップデート
■従来のインストール&アップデート機能の定義
xoops_version.php に下記を定義する。
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 に下記を定義する。
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/ だが、下記のような定義を追加することでファイルパスやネームスペースも変更できる。
■Installer クラスの定義
XR/modules/legacy/admin/class/ModuleInstaller.class.php をインクルード
・bool executeInstall()
インストールを実行する。成功すれば true を返す。
特に必要がなければ Legacy_ModuleInstaller のものをそのまま使えばよい?
標準の executeInstall() は次のようなものを呼び出す。
■従来定義と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() 中に記述する。
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() 中に記述する。