- 追加された行はこの色です。
- 削除された行はこの色です。
**[[続・質問箱/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};
-さばぞうさんの指摘のとうり、LIBディレクトリにfile.phpにありました。希望どうりの機能をつけることができました。 -- [[kai]] &new{2004-11-01 (月) 16:25:08};
-よくみたらpukiwiki.ini.phpのソースが間違っていました。これをみつけるのに約1週間・・・。質問に答えてくれたみなさんありがとうございました。 -- [[pukiwiki初心者]] &new{2004-11-01 (月) 16:29:25};
- Ver1.4.7で特定ページの更新通知メールを実現したいのですが、file.phpに上記If文”if ($notify and $dir == DIFF_DIR)”に相当する行が見当たりません。特定ページの更新通知メールを実現する方法をご教示お願いします。 -- [[n4]] &new{2007-04-12 (木) 18:32:33};
- 255行目です :) -- [[teanan]] &new{2007-04-12 (木) 20:16:28};
- 255行目ですか?notifyで検索し268行目にらしき内容があったので、上記内容を参考に通知機能が使用できる様になりました。ありがとうございました。 -- &new{2007-04-13 (金) 16:28:02};
- 失礼しました、見ていたファイルが古かったようです。最新のfile.php(1.78)では267行目になっていますね (^^; -- [[teanan]] &new{2007-04-13 (金) 21:20:54};
- trackerに登録されたものを通知するために利用しているのですが、そもそも新規で登録されたときと、そのページを更新したときで通知メールのSubjectを出し分けたりってできるんでしょうか? -- [[へー]] &new{2007-07-13 (金) 13:32:12};
-- [[ページの作成日/更新日を判断する &new();>欲しいプラグイン/165]] を参考に、新規作成したのか更新したのかを区別できるようにしないと難しいと思われる。&br;「バックアップが存在しない == 新規作成」と決め打ちするならまだ楽に作れるかもしれない。 -- &new{2007-10-13 (土) 15:28:22};
- Ver1.4.7で特定のページが更新された時にのみメール通知するようにしましたが、特定のページ以外のページで添付ファイルを削除すると、通知メールが送信されてしまいます。どういった原因が考えられるでしょうか? -- [[みや]] &new{2007-10-13 (土) 10:58:13};
-- plugin/attach.inc.php の中にあるif ($notify) の分岐の中で、$notify_page 関連の処理をしていないから。 -- &new{2007-10-13 (土) 15:12:56};
#comment