イベント通知
モジュールのイベント通知機能の利用方法を解説します。
xoops_version.phpファイル修正(抜粋)
xoops_version.phpにイベント通知の情報を変更、追加します。
$modversion['hasNotification'] = 1;
$modversion['notification']['lookup_file'] =
'include/notification.inc.php';
$modversion['notification']['lookup_func'] = 'notify';
$modversion['notification']['category'][1]['name'] = 'global';
$modversion['notification']['category'][1]['title'] =
_MI_HW_NOTIFY_GLOBAL;
$modversion['notification']['category'][1]['description'] =
_MI_HW_NOTIFY_GLOBAL_DESC;
$modversion['notification']['category'][1]['subscribe_from'] =
array('index.php');
$modversion['notification']['event'][1]['name'] = 'item_post';
$modversion['notification']['event'][1]['category'] = 'global';
$modversion['notification']['event'][1]['admin_only'] = 0;
$modversion['notification']['event'][1]['title'] =
_MI_HW_NOTIFY_POST;
$modversion['notification']['event'][1]['caption'] =
_MI_HW_NOTIFY_POST_CAP;
$modversion['notification']['event'][1]['description'] =
_MI_HW_NOTIFY_POST_DESC;
$modversion['notification']['event'][1]['mail_template'] =
'notify_item_post';
$modversion['notification']['event'][1]['mail_subject'] =
_MI_HW_NOTIFY_POST_SUBJECT;
notification要素の各項目の内容は以下の通りです。
| 項目 |
説明 |
| lookup_file |
イベント通知処理を実装したPHPファイルを指定する |
| lookup_func |
イベント通知処理を実装した関数を指定する |
notification要素の子要素categoryの各項目の内容は以下の通りです。
3次元目の配列に連番を指定することにより、複数のカテゴリーを設定することができます。
| 項目 |
説明 |
| name |
カテゴリー名を指定する |
| title |
カテゴリーのタイトルを記述する |
| description |
カテゴリーの説明を記述する |
| subscribe_from |
イベント通知元のPHPファイルを配列で指定する |
| item_name |
イベント通知元のコンテンツを識別するためのパラメータ名を指定する(今回は未使用) |
| allow_bookmark |
擬似ブックマーク機能を利用する場合、1を指定する(今回は未使用) |
notification要素の子要素eventの各項目の内容は以下の通りです。
3次元目の配列に連番を指定することにより、複数のイベントを設定することができます。
| 項目 |
説明 |
| name |
イベント名を指定する |
| title |
イベントのタイトルを記述する |
| category |
category要素の子要素nameで定義したカテゴリー名を指定する |
| description |
イベントの説明を記述する |
| admin_only |
管理ユーザーのみが使用する場合、1を指定する(今回は未使用) |
| caption |
イベントのキャプションを指定する |
| invisible |
このイベントを無効にする場合、1を指定する(今回は未使用) |
| mail_template |
/language/[言語]/mail_templateディレクトリの下に作成したイベント通知のテンプレートファイル(.tpl)を指定する |
| mail_subject |
イベント通知メッセージの件名を指定する |
/include/notification.inc.phpファイル追加
xoops_version.phpのlookup_fileで指定したファイルにlookup_funcで指定した関数を定義します。
この関数は引数としてカテゴリー名とコンテンツを識別するIDが渡されるので、コンテンツのタイトルと戻り先URLを配列にセットして返します。
今回は、モジュール全体に関わるイベントですので、コンテンツのタイトルと戻り先URLに空文字をセットします。
<?php
function notify($category, $item_id) {
$item['name'] = '';
$item['url'] = '';
return $item;
}
?>
/notification_update.phpファイル追加
イベント通知処理を実装したXOOPS本体のPHPファイル
[XOOPS_ROOT_PATH]/include/notification_update.php
をインクルードする/notification_update.phpファイルを追加します。
<?php
include '../../mainfile.php';
include XOOPS_ROOT_PATH.'/include/notification_update.php';
?>
/index.phpファイル修正(抜粋)
イベント通知機能を利用する/index.phpファイルで、メッセージが登録された際に実行される箇所にイベント通知処理を追加します。
$notification_handler = & xoops_gethandler('notification');
$notification_handler->triggerEvent('global', 0, 'item_post');
メールテンプレートファイル/language/[言語]/mail_template/notify_item_post.tpl
イベント通知機能を利用するメールテンプレートファイルを作成します。
{X_UNAME} さん、こんにちは。
{X_SITENAME} ( {X_SITEURL} )よりイベント通知のお知らせです。
{X_MODULE} モジュールでイベントが発生しました。
{X_MODULE_URL}
メールテンプレートファイル内で使用できる変数は以下の通りです。
下記以外にもtriggerEvent関数の第4引数に追加パラメータの配列をセットして渡すことができます。
| 変数名 |
説明 |
| {X_ADMINMAIL} |
サイト管理者のメールアドレス |
| {X_SITENAME} |
サイト名 |
| {X_SITEURL} |
サイトのURL |
| {X_UNAME} |
ユーザー名 |
| {X_UID} |
ユーザーID |
| {X_UEMAIL} |
ユーザーのメールアドレス |
| {X_ITEM_NAME} |
コンテンツを識別する項目名 |
| {X_ITEM_URL} |
コンテンツのURL |
| {X_ITEM_TYPE} |
項目の種類 |
| {X_MODULE} |
モジュール名 |
| {X_MODULE_URL} |
モジュールトップページのURL |
| {X_NOTIFY_CATEGORY} |
カテゴリー名 |
| {X_NOTIFY_EVENT} |
イベント名 |
| {X_UNSUBSCRIBE_URL} |
イベント通知機能の設定画面のURL |
テンプレートファイル修正(抜粋)
イベント通知機能を利用するテンプレートファイルhw_index.htmlで、イベント通知部分を表示するためのコードを追加します。
<{include file='db:system_notification_select.html'}>
モジュールのアップデート
ファイルをアップロードし、モジュールのアップデートを実行します。
最終的にモジュールのディレクトリ構成は、以下のようになります。
helloworld
├ admin
│ ├ index.php
│ ├ menu.php
│ └ other.php
├ blocks
│ └ hw_block.php
├ images
│ └ logo.png
├ include
│ └ notification.inc.php
├ language
│ ├ english
│ │ ├ mail_template
│ │ │ └ notify_item_post.tpl
│ │ ├ admin.php
│ │ ├ blocks.php
│ │ ├ main.php
│ │ └ modinfo.php
│ └ japanese
│ ├ mail_template
│ │ └ notify_item_post.tpl
│ ├ admin.php
│ ├ blocks.php
│ ├ main.php
│ └ modinfo.php
├ sql
│ └ mysql.sql
├ templates
│ ├ blocks
│ │ └ hw_block.html
│ ├ hw_index.html
│ └ hw_item.html
├ comment_delete.php
├ comment_edit.php
├ comment_new.php
├ comment_post.php
├ comment_reply.php
├ index.php
├ item.php
├ notification_update.php
└ xoops_version.php
helloworldモジュール1.5のダウンロード