カテゴリ | |
---|---|
サマリ | 特定のページが更新された時にメール通知したい |
バージョン | 1.4.2 |
投稿者 | だりあ |
状態 | 完了 |
投稿日 | 2004-03-23 (TUE) 11:39:16 |
特定のページ、例えば FAQ などのヘルプ系ページが更新された時だけメールで管理者に通知することは可能でしょうか? pukiwiki.ini.php の $notify だと全ページが対象になってしまいますよね?
サーバは FreeBSD 5.2.1-RELEASE メールソフトとして qmail が動いています。
pukiwiki.ini.phpあたりで、メール通知するページを定義($notify_pageを新設)しておいて、file.phpの154行目あたりで$notify_pageかどうかで分岐させればできそうですね。
PHP が分からないのですが、 file.php の 151行目、 if ($notify and $dir == DIFF_DIR) の直後に if 文で分岐させてみたところ、どのページを更新してもメール通知が来なくなってしまいました。具体的にはどのように条件判断させれば良いのでしょうか?ちなみに $notify = 1 などのメール通知に必要な条件は満たしています。
行った変更は以下の通りです。 pukiwiki.ini.php に $notify_page = '通知させたいページ名' を設定した後、file.php を以下のように編集しました。
if ($notify and $dir == DIFF_DIR) { + if ($notify_page == "通知させたいページ名") + { if ($notify_diff_only) { // 差分だけを送信する $str = preg_replace('/^[^-+].*\n/m','',$str); } if ($smtp_auth) { pop_before_smtp(); } $subject = str_replace('$page',$page,$notify_subject); ini_set('SMTP',$smtp_server); mb_language(LANG); mb_send_mail($notify_to,$subject,$str,$notify_header); + } }
ちゃんとfile.phpのfunction file_write()の中で$notify_pageをglobal宣言してあるのでしょうか?
function file_write($dir,$page,$str,$notimestamp=FALSE) { global $post,$update_exec; global $_msg_invalidiwn; global $notify,$notify_diff_only,$notify_to,$notify_from,$notify_subject,$notify_header; global $smtp_server,$smtp_auth; + global $notify_page;
また、
+ if ($notify_page == "通知させたいページ名") + {となってますが、これじゃあ、いくらやってもだめでしょう。pukiwiki.ini.phpの中で
$notify_page == "通知させたいページ名(正規表現)"; //Bracketはつけないと定義。file.phpの中では
+ if (ereg($notify_page,$page) == TRUE) + {とすればいいのでは?
PukiWiki を運用していくには本格的に PHP を勉強しないとダメですね。 :( 実現方法をそのまま教えてもらう形になってしまいましたが、上記の通りで希望通りのことが実現できました。ありがとうございました。
$notify_page == "通知させたいページ名"; //Bracketはつけないと定義。 file.phpの中では
if ($notify and $dir == DIFF_DIR) { + if (ereg($notify_page,$page) == TRUE) + { if ($notify_diff_only) { // 差分だけを送信する $str = preg_replace('/^[^-+].*\n/m','',$str); } if ($smtp_auth) { pop_before_smtp(); } $subject = str_replace('$page',$page,$notify_subject); ini_set('SMTP',$smtp_server); mb_language(LANG); mb_send_mail($notify_to,$subject,$str,$notify_header); + } }function file_write()の中で$notify_pageをglobal宣言
function file_write($dir,$page,$str,$notimestamp=FALSE) { global $post,$update_exec; global $_msg_invalidiwn; global $notify,$notify_diff_only,$notify_to,$notify_from,$notify_subject,$notify_header; global $smtp_server,$smtp_auth; + global $notify_page;としました。 しかし、結果としてどのページを更新しても更新メールが来なくなりました。どうしてなのかわかりません。具体的に教えてください。お願いします。-- pukiwiki初心者 2004-10-27 (水) 21:51:18
$notify_page = "通知させたいページ名"; //BracketはつけないでFA?