ブログ - Cube モジュール解析

Cube モジュール解析

カテゴリ : 
開発用メモ » XCL開発資料
執筆 : 
masa 2008/8/7
■XoopsModule (kernel/module.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か?
  • トラックバック (0)
  • 閲覧 (3927)