XOOPSモジュール開発研究所 イベント通知 モジュール開発情報
ユーザメニュー
サイト内検索

イベント通知

コメント機能 コメント機能」に戻る 検索機能」へ進む 検索機能

モジュールのイベント通知機能の利用方法を解説します。

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.phpxoops_version.php
XOOPS総研 ページトップ
コメント機能 コメント機能」に戻る 検索機能」へ進む 検索機能