PEAK XOOPS - D3モジュールのイベント通知 in englishin japanese

Archive | RSS |
XOOPS
XOOPS : D3モジュールのイベント通知
Poster : GIJOE on 2006-10-05 18:10:43 (7208 reads)

in englishin japanese
XOOPSのイベント通知は、モジュールのルートコントローラを要求する上に、各種パスを決めうちしてある、D3にとってはなかなか嫌らしい機能です。

XOOPS_ROOT_PATH/modules/(dirname)/notification.php
XOOPS_ROOT_PATH/modules/(dirname)/notification_update.php

は用意せざるを得ないでしょう。

このあたりは、bulletin2がかなり先駆者としての働きをしていて、私自身、そのソースコードを追うだけでほとんどうまく行きました。

ただ、実際にモジュールからトリガーを引くときに、イベント通知の言語ファイル(*.tpl)のパスが決めうちであり、D3モジュールの特長である言語ファイルオーバーライドシステムが効きません。

bulletin2 では、それを解決しようと、イベント通知で呼ばれるlookup_fileの中でtriggerEvent()内の変数を書き換える、というアクロバティックな技(お前がいうか?)を見せています。

ところが、lookup_file 自体は、一度しか読み込まれない(include_once $lookup_file;)ために、この方法では、同時に2つのイベントをトリガーすることができません。他にも、これだとCube2.1との互換性も失われるであろう、というデメリットがあります。

仕方がないので、d3forumでは、XoopsNotificationHanlder::triggerEvent() は捨てて、それの代用関数を作りました。内部では、XoopsNotificationHanlder::notifyUser() を呼び出す形になっているので、このインターフェースさえ変わらなければ、Cube2.1でも本家版2.2でも動くはずです。もちろん、2種類以上のトリガーを同時に引くことも可能です。

このような仕掛けを作ったおかげで、ちゃんと以下のようなファイルオーバーライドが効くようになります。


1. XOOPS_ROOT_PATH/modules/(dirname)/language/(lang)/mail_template/
2. XOOPS_TRUST_PATH/modules/(trustdirname)/language/(lang)/mail_template/
3. XOOPS_TRUST_PATH/modules/(trustdirname)/language/english/mail_template/


0 comments

Related articles
Printer friendly page Send this story to a friend

Comments list

Login
Username or e-mail:

Password:

Remember Me

Lost Password?

Register now!