- 追加された行はこの色です。
- 削除された行はこの色です。
**[[続・質問箱/102]] [#qd32afc9]
|RIGHT:70|LEFT:410|c
|~サマリ|特定のページが更新された時にメール通知したい|
|~バージョン|1.4.2|
|~投稿者|[[だりあ]]|
|~状態|完了|
|~投稿日|&new{2004-03-23 (TUE) 11:39:16};|
***質問 [#c00732b8]
特定のページ、例えば FAQ などのヘルプ系ページが更新された時だけメールで管理者に通知することは可能でしょうか?
pukiwiki.ini.php の $notify だと全ページが対象になってしまいますよね?
サーバは FreeBSD 5.2.1-RELEASE
メールソフトとして qmail が動いています。
***回答 [#iceea09e]
-[[名無しさん]] &new{2004-03-23 (TUE) 22:17:01};
~pukiwiki.ini.phpあたりで、メール通知するページを定義($notify_pageを新設)しておいて、file.phpの154行目あたりで$notify_pageかどうかで分岐させればできそうですね。
-[[だりあ]] &new{2004-03-24 (WED) 15:42:13};
:|
~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);
+ }
}
-[[名無しさん]] &new{2004-03-24 (WED) 17:49:57};
~ちゃんと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)
+ {
とすればいいのでは?
-[[だりあ]] &new{2004-03-25 (THU) 10:03:54};
~PukiWiki を運用していくには本格的に PHP を勉強しないとダメですね。 :(
実現方法をそのまま教えてもらう形になってしまいましたが、上記の通りで希望通りのことが実現できました。ありがとうございました。
#comment