XOOPS Cubeのコアに同梱されているProfileモジュールは、ユーザー情報の項目を自由に追加できるモジュールです。
XOOPS CubeのServiceManagerは、モジュール間の連携を実現するXCube_Serviceを管理するコンポーネントです。
コア同梱のモジュールは基本的にServiceManagerにサービスを登録していますが、なぜかProfileモジュールだけは登録されていません。
そこで、登録するためのモジュールプリロードとパッチ(後述)を作りました。
コード#
とりあえずコードはGistにあげておきました。
ちょっと解説#
Definitions.class.php.patchはご覧の通りパッチファイルです。
メソッドを追加しただけですが、これがないとFATALになります。
呼び出し元を改変することも考えましたが、サービスの機能を減らす修正となってしまうのでこうなりました。
特に怪しい挙動もないので問題なく動作するとは思いますが、自己責任でお願いします。
RegisterService.class.phpはモジュールプリロードです。
このプリロードがServiceManagerへの登録を行います。
こちらのファイルはXOOPS_ROOT_PATH/modules/profile/preload
に配置してください。
まとめ#
Profileモジュールのサービスは戻り型にXCube_Objectを継承したクラスを定義していますが、実際に帰ってくるのが配列だったりするので注意が必要っぽいです。
XOOPS Cubeのモジュール開発やカスタマイズに関するドキュメントが少ない印象があるので、こういうネタはもっと拡充したいですね。