official:質問箱/370より、ファイルが添付・削除されたときにメールでお知らせしてくれる機能をattach.inc.phpに追加してみました。
ページの更新時にメールを送信してくれる機能はありますが、ファイルの添付時にはお知らせしてくれないようです。
ファイルの添付・削除時は、たいていの場合「アップ(削除)しました」という書き込みを伴うと思うので、この場合は問題ないのですが、万が一無断でファイルを削除されたり大量のファイルをアップされたときのために、メールで通知する機能があれば便利だと思いました。
以下のパッチでは、ファイルが添付されたときは毎回、ファイルの削除時はATTACH_DELETE_ADMIN_ONLYがFALSEのときだけ(管理者以外にも削除を許可しているときだけ)メールで通知するようにしてあります。
article.inc.phpを参考にさせてもらいましたm(__)m
@@ -29,6 +29,18 @@ // アップロード/削除時にパスワードを要求する(ADMIN_ONLYが優先) define('ATTACH_PASSWORD_REQUIRE',FALSE); // FALSE or TRUE +// 添付・削除時のメール自動配信 1:する 0:しない +define('MAIL_AUTO_SEND',1); +// メール送信時の送信者メールアドレス +define('MAIL_FROM',''); +// メール送信時の題名 +define('MAIL_SUBJECT_PREFIX','[someone\'sPukiWiki]'); +// メール自動配信先 +global $_mailto; +$_mailto = array ( + '' +); + // ファイルのアクセス権 define('ATTACH_FILE_MODE',0644); //define('ATTACH_FILE_MODE',0604); // for XREA.COM @@ -148,7 +160,7 @@ { // $pass=NULL : パスワードが指定されていない // $pass=TRUE : アップロード許可 - global $adminpass,$_attach_messages; + global $adminpass,$_attach_messages,$_mailto; if ($file['tmp_name'] == '' or !is_uploaded_file($file['tmp_name'])) { @@ -188,7 +200,23 @@ $obj->status['pass'] = ($pass !== TRUE and $pass !== NULL) ? $pass : ''; $obj->putstatus(); - return array('result'=>TRUE,'msg'=>$_attach_messages['msg_uploaded']); + // メール自動送信 + if (MAIL_AUTO_SEND) { + $mailaddress = implode(',' ,$_mailto); + $mailsubject = MAIL_SUBJECT_PREFIX; + $mailsubject .= " New file's been attached"; + $mailsubject = mb_encode_mimeheader($mailsubject); + + $mailbody .= "File '" . $file['name'] . "' "; + $mailbody .= "has been attached to '" . $page . "'.\n"; + $mailbody = mb_convert_encoding( $mailbody, "JIS" ); + + $mailaddheader = "From: ".MAIL_FROM; + + mail($mailaddress, $mailsubject, $mailbody, $mailaddheader); + } + + return array('result'=>TRUE,'msg'=>$_attach_messages['msg_uploaded']); } //詳細フォームを表示 function attach_info($err='') @@ -549,7 +577,7 @@ } function delete($pass) { - global $adminpass,$_attach_messages; + global $adminpass,$_attach_messages,$_mailto; if ($this->status['freeze']) { @@ -596,7 +624,23 @@ touch(get_filename($this->page)); } - return array('msg'=>$_attach_messages['msg_deleted']); + // メール自動送信 + if (MAIL_AUTO_SEND && !ATTACH_DELETE_ADMIN_ONLY) { + $mailaddress = implode(',' ,$_mailto); + $mailsubject = MAIL_SUBJECT_PREFIX; + $mailsubject .= " A file's been deleted"; + $mailsubject = mb_encode_mimeheader($mailsubject); + + $mailbody .= "File '" . $this->file . "' "; + $mailbody .= "has been deleted from '" . $this->page . "'.\n"; + $mailbody = mb_convert_encoding( $mailbody, "JIS" ); + + $mailaddheader = "From: ".MAIL_FROM; + + mail($mailaddress, $mailsubject, $mailbody, $mailaddheader); + } + + return array('msg'=>$_attach_messages['msg_deleted']); } function freeze($freeze,$pass) {