update_execでメール送信

  • ページ: BugTrack
  • 投稿者: なかの?
  • 優先順位: 低
  • 状態: 完了
  • カテゴリー: その他
  • 投稿日: 2002-07-27 (土) 19:13:57
  • バージョン:

メッセージ

なかの?でアドバイスを受けまして、 変更をメールで知らせるようにしてみようと思ってます。

現在update_execはfile_writeの中で呼ばれているようで、 一回の更新で2通のメールが来てしまいます。

サンプルのupdate_execはmknmzを呼んでいるようですが、 この場合も2回呼ぶ必要はないような気がします。

file_writeの中でupdate_execを実行していますが、 update_execの意味的には呼出元で実行した方がいいような気がしています。どうでしょうか?

ちなみにメールで更新内容そのものを送れるように以下の修正をしてみました。

こちらも考慮頂ければと思います。

$update_exec = 'mail mail_address@ドメイン < %update_file';

--- file.php.org        2002-07-27 18:06:58.000000000 +0900
+++ file.php    2002-07-27 18:06:40.000000000 +0900
@@ -49,7 +49,8 @@

        if($update_exec)
        {
-               system($update_exec." > /dev/null &");
+               $new_update_exec = str_replace("%update_file",$dir.encode($page).".txt",$update_exec);
+               system($new_update_exec." > /dev/null &");
        }
 }

  • プラグインによってページの書き換えが起こることもありうるので、「ページの書き換えが発生した」というイベントを最も捕らえやすいのはfile_writeの中なんでしょう。たぶん。 -- ぱんだ 2002-07-28 (日) 10:20:50
  • ただ、file_writeは、DATA_DIRへの書き込み時とDIFF_DIRへの書き込み時の2回呼び出されますから、たとえば*1こんな風にすればいいんじゃないかと思います。 -- ぱんだ 2002-07-28 (日) 10:22:09
    -	if($update_exec)
    +	if($update_exec and $dir == DATA_DIR)
  • 手元で以下のような修正を入れて使っています(CVS版)。 -- masao 2003-04-24 (木) 22:22:54
    Index: pukiwiki.ini.php
    ===================================================================
    RCS file: /cvsroot/pukiwiki/pukiwiki/pukiwiki.ini.php,v
    retrieving revision 1.34
    diff -u -r1.34 pukiwiki.ini.php
    --- pukiwiki.ini.php	3 Apr 2003 01:42:02 -0000	1.34
    +++ pukiwiki.ini.php	24 Apr 2003 13:19:32 -0000
    @@ -131,6 +131,17 @@
     // ページの更新時にバックグランドで実行されるコマンド(mknmzなど)
     $update_exec = '';
     //$update_exec = '/usr/bin/mknmz --media-type=text/pukiwiki -O /var/lib/namazu/index/ -L ja -c -K /var/www/wiki/';
    +////////////////////////////////////////////////
    +// ページの更新時にメールを送信するか
    +$notify = 1;
    +// To:(宛先)
    +$notify_to = 'masao@ulis.ac.jp';
    +// From:(送り主)
    +$notify_from = 'admin@nile.ulis.ac.jp';
    +// Subject:(件名)
    +$notify_subject = '[pukiwiki] %page';
    +// 追加ヘッダ
    +$notify_header = "From: ".$notify_from."\r\nX-Mailer: PukiWiki/".S_VERSION." PHP/".phpversion();
     
     /////////////////////////////////////////////////
     // 一覧・更新一覧に含めないページ名(正規表現で)
    Index: file.php
    ===================================================================
    RCS file: /cvsroot/pukiwiki/pukiwiki/file.php,v
    retrieving revision 1.17
    diff -u -r1.17 file.php
    --- file.php	13 Apr 2003 06:10:37 -0000	1.17
    +++ file.php	24 Apr 2003 13:19:32 -0000
    @@ -76,6 +76,7 @@
     function file_write($dir,$page,$str)
     {
     	global $post,$update_exec;
    +	global $notify,$notify_to,$notify_from,$notify_subject,$notify_header;
     	global $_msg_invalidiwn;
     	
     	if (!is_pagename($page))
    @@ -118,6 +119,12 @@
     	
     	if ($update_exec and $dir == DATA_DIR) {
     		system($update_exec.' > /dev/null &');
    +	}
    +
    +	if ($notify and $dir == DIFF_DIR) {
    +		$subject = str_replace('%page', $page, $notify_subject);
    +		mb_language(LANG);
    +		mb_send_mail($notify_to, $subject, $str, $notify_header);
     	}
     }
  • 手元では問題は起きていないようなので、上記相当のものを1.4系に取り込んで頂くことはできませんでしょうか? -- masao 2003-06-06 (金) 20:18:22
  • cvsに投入しました。 -- ぱんだ 2003-06-11 (水) 09:06:30
  • 正規表現の部分がどうしても上手くできないです。「練習用ページ」or「行頭:」の指定をどうやるか、どなたか教えてください。m(__)m -- maja 2003-06-17 (火) 22:53:02

*1 場当たり的ですが

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2003-09-21 (日) 03:31:26
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.260 sec.

OSDN