ブログ - Cube モジュール解析
■XoopsModule (kernel/module.php)
Cube のモジュール情報クラス
xoops_version.php から初期生成され、データベースに格納される?
Cube のモジュール情報クラス
xoops_version.php から初期生成され、データベースに格納される?
_
■プロパティ(DB fields ?)
mid
name
version
last_update
weight
isactive
dirname
hasmain
hasadmin
hassearch
hasconfig
hascomments
hasnotification
■関連ファイル
modules/{$dirname}/xoops_version.php
初期化ファイル(DBに投入されないものはここから参照する?)
$modversion 配列
■modversion配列
・'version'
バージョン番号 (n.nn)
・'name'
モジュール名
・'dirname'
モジュール公開ディレクトリ名
・'hasMain'
メインページへのリンクあり?
リンクは modules/{$dirname}/ になる。
・'hasAdmin'
管理メニューあり?
・'hasSearch'
・'config'
・'hasComments'
・'hasNotification'
------
・'sub' (subLink メソッド)
サブメニュー配列
'name'
'url'
・'adminmenu' (loadAdminMenu メソッド)
adminmenu へのパス
modules/{$dirname}/{$adminmenu}
・'search' (search メソッド)
検索配列
'file'
'func'
・'cube_style'
・'help'
ヘルプ
cube_style が true の場合のみ?
■所感
D3化との関連で言えば loadAdminMenu メソッドがやっかい。
modules/legacy/admin/actions/{ModuleListAction,ModuleInfoAction}.class.php などから呼ばれているので無視はできない?
しかし、本来 ModuleListAction.class.php などから loadAdminMenu() を呼ぶ必要があるのだろうか?
事実、一部のモジュールでは 'adminmenu' を定義していないが、特に問題は発生していない。
また、Legacy_ModuleAdapter::doActionSearch()からも loadAdminMenu() は呼ばれる。
このため、'adminmenu'を定義していないモジュールでは、管理メニュー項目をアクションサーチで検索できない。
しかしこの問題は、オーバライドできるので回避できる。(はず...)
そもそも、XoopsModule クラスが loadAdminMenu() や getAdminMenu() メソッドを持っている必要があるのかどうか疑問だ。
結論としては、'adminmenu' および loadAdminMenu() メソッドの存在は無視しよう。ということ??
ついでに、search() メソッドも XoopsModule クラスには必要ないような気が...
これも Legacy_AbstractModule を継承したクラスで doLegacyGlobalSearch() をオーバーライドして、XoopsModule::search() を呼ばないようにすればOKか?
■プロパティ(DB fields ?)
mid
name
version
last_update
weight
isactive
dirname
hasmain
hasadmin
hassearch
hasconfig
hascomments
hasnotification
■関連ファイル
modules/{$dirname}/xoops_version.php
初期化ファイル(DBに投入されないものはここから参照する?)
$modversion 配列
■modversion配列
・'version'
バージョン番号 (n.nn)
・'name'
モジュール名
・'dirname'
モジュール公開ディレクトリ名
・'hasMain'
メインページへのリンクあり?
リンクは modules/{$dirname}/ になる。
・'hasAdmin'
管理メニューあり?
・'hasSearch'
・'config'
・'hasComments'
・'hasNotification'
------
・'sub' (subLink メソッド)
サブメニュー配列
'name'
'url'
・'adminmenu' (loadAdminMenu メソッド)
adminmenu へのパス
modules/{$dirname}/{$adminmenu}
・'search' (search メソッド)
検索配列
'file'
'func'
・'cube_style'
・'help'
ヘルプ
cube_style が true の場合のみ?
■所感
D3化との関連で言えば loadAdminMenu メソッドがやっかい。
modules/legacy/admin/actions/{ModuleListAction,ModuleInfoAction}.class.php などから呼ばれているので無視はできない?
しかし、本来 ModuleListAction.class.php などから loadAdminMenu() を呼ぶ必要があるのだろうか?
事実、一部のモジュールでは 'adminmenu' を定義していないが、特に問題は発生していない。
また、Legacy_ModuleAdapter::doActionSearch()からも loadAdminMenu() は呼ばれる。
このため、'adminmenu'を定義していないモジュールでは、管理メニュー項目をアクションサーチで検索できない。
しかしこの問題は、オーバライドできるので回避できる。(はず...)
そもそも、XoopsModule クラスが loadAdminMenu() や getAdminMenu() メソッドを持っている必要があるのかどうか疑問だ。
結論としては、'adminmenu' および loadAdminMenu() メソッドの存在は無視しよう。ということ??
ついでに、search() メソッドも XoopsModule クラスには必要ないような気が...
これも Legacy_AbstractModule を継承したクラスで doLegacyGlobalSearch() をオーバーライドして、XoopsModule::search() を呼ばないようにすればOKか?