**[[続・質問箱/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 を勉強しないとダメですね。 :( 実現方法をそのまま教えてもらう形になってしまいましたが、上記の通りで希望通りのことが実現できました。ありがとうございました。 -[[続・質問箱/400]]で質問したら、こちらのほうが良いということでしたのでこちらで質問を改めてさせて頂きたいと思います。特定のページが更新されたときのみ更新メール通知したいと思い、上記の説明のとおりに まず、pukiwiki.ini.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初心者]] &new{2004-10-27 (水) 21:51:18}; -まだ具体的に書かれてないと思います。$notify_pageには実際に何と書いて、何というページを更新したのかとか。あと環境などもないような。 -- [[さばぞう]] &new{2004-10-27 (水) 23:01:43}; -環境はサーバにLinux(FedoraCore2)を使用して、メールサーバは立ち上げていません。$notify_pageにはFrontPage(ページ名は変更してその名前をいれましたが、このではFrontPageと書かせて頂きます。)と書きました。更新(書き換え)したのはpukiwiki.ini.php、 file.phpです。 -- [[pukiwiki初心者]] &new{2004-10-27 (水) 23:14:24}; -「ここではFrontPageと書かせて頂きます」というのが不審なのですが、''実際に''FrontPageにして、FrontPageというページを更新しても、メールは送られないのですか?と、敢えて重ねて確認するのも、続・質問箱/400の方では、最初$notify_page設定行の中に'')''が入っていて、これは''続・質問箱/102''のページからコピペしただけで、この質問者が確かにこうしたかどうかは怪しいものだ…と思ったりしたからですが。 -- &new{2004-10-27 (水) 23:51:10}; -「ここではFrontPageと書かせていただきます」と書いたのは、FrontPageの名前を私的なものに変更したからです。もしかしてこれが原因ですか?続・質問箱/400に書いた「)」はコピペミスです。すいません。 -- [[pukiwiki初心者]] &new{2004-10-27 (水) 23:56:32}; -これは$notify_pageをそのままeregにpatternとして与えているので、そこに正規表現の特殊文字が含まれている(あるいは正規表現として間違っている)と、期待通りの結果が得られないことがあります。そういうこともあるので、回答する人達は''実際にやった''変更の提示を求めているのです。あなただけが知っている読み替えに、重要な鍵が隠されているかもしれない訳ですから。 -- &new{2004-10-28 (木) 00:37:36}; -ん?pukiwiki.ini.php の $notify_page のイコールって2つじゃなくて1つじゃありません? -- [[にぶんのに]] &new{2004-10-28 (木) 02:44:05}; -おお、代入じゃなくて比較演算子になってますね。 -- &new{2004-10-28 (木) 06:49:56}; $notify_page = "通知させたいページ名"; //Bracketはつけない でFA? -pukiwiki1.4.4ですがfile.phpがないんですけど、特定のページが更新された時のみメール通知する機能は使えないのでしょうか?PukiwikiはLinux(Fedora core2)をサーバとして使用しています。 -- [[kai]] &new{2004-10-29 (金) 15:06:18}; -よく探しましたか?lib(LIB_DIR)ディレクトリにありませんか? -- [[さばぞう]] &new{2004-10-29 (金) 15:30:10}; #comment