カテゴリ | |
---|---|
サマリ | 「タイムスタンプを変更しない」場合にメール送信止めたいです |
バージョン | 1.4.3 |
投稿者 | しまやん |
状態 | 完了 |
投稿日 | 2004-07-25 (SUN) 19:10:17 |
ページが改定されたときに送信されるメール機能、非常に重宝しているのですが、メールを流すまでもない更新の場合に、意図的にメール通知をしないであげたい、とも思っています。
そこで「file.php」の154行目あたりに手を加えて「タイムスタンプを変更しない」チェックがオンのときはメールを送らないようにしてみましたが、このオンオフに関わらず、必ずメールが送られてしまいます。
if ($notify and $dir == DIFF_DIR) { + if (!$notimestamp) + { 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); + } }
どなたかアドバイス頂けましたら幸いです。
うわ、ごめんなさい、行がくずれちゃいました。 要は「if (!$notimestamp)」がうまいこと動いてないみたいなのですが・・。
自己レスです。「if (!$notimestamp)」が効かない理由は判明しました。file.phpの42行目にある通り、DIFF_DIRモードでfile_writeが呼ばれるときは無条件に$notimestampがfalseとなる仕様の為でした。引き続き具体的な解決方法を考えてみようと思いますが、まずは現状の報告まで。
タイムスタンプを変えずに、暗黙のいたずらをされた場合もメールで通知が行かなくなってしまう気がしますので、その辺が今後の課題ですね :)
ふむふむ、なるほど。 メールを自分の携帯に送っている都合上、ページを新設したりする推敲作業中にもメールがバンバン飛ぶのはなんとかならないかなあ、というのが最初の動機でした。そうなると管理者パスワードを入れたときだけメールを止められる、とするほうがいいかもですね。もう少し検討してみます。^^
検討した結果の”逃げ手”として、file.php 119行目付近に「if (preg_match ("/特定のキーワード/i", $str)」を追加して、TRUEならば何かフラグ($stopswなど)を立てた後にpreg_replaceでそのキーワードを空文字に置換しておき、後は 156行目付近で「if ($notify and $dir == DIFF_DIR and !$stopsw)」とやってみたら、特定のキーワードを含む時だけメールを抑制できました。きっとイレギュラーな方法なのでしょうが、とりあえず個人用ですのでこれで運用してみようと思います。PHP触るのは初めてでしたが、なかなか興味深く、もっと勉強してみたい気がしてきました。ありがとうございました。