Yomi-Search(ヨミサーチ)カスタマイズメモ - 削除されたら管理人に削除理由つきでメールが届くようにする

投稿日:

08.07.17追記:@nifty TimeLine開発日誌等からいらした方へ。記事の位置がかわりました。→ソーシャル・タイムライン活用方法 - ラインを徒競走のコースのように使う

複数人で管理するために

Yomi-Search(ヨミサーチ)でランキングやリンク集を運営している方は多いと思います。登録サイトが増えてくると、一人では管理が難しくなり、複数人で運営しているサイトも少なからずあるのではないでしょうか。私が運営しているサイトも複数人で登録処理や違反削除を行っています。

そこで出てきた問題が、デフォルトの設定だと「いつ・誰が・どういう理由で・いくつサイトを削除したのか?」がわからないということ。これが分からないと何が困るかというと、誰が作業しているのかがわからないのもそうだし、一人が違反に気づいて消したのに別の一人がそこに気づかずに再度登録してしまう・・・などということが起きてしまいます。

解決策として共有の掲示板に書き込んでいこうなどと考えたのですが、消して・書いて・消して・・・というのは結構面倒です。消したら自動で管理人全員に削除理由つきでメールが配信されるようにできればすべて解決なのですが、方法がわかりません。

イメージとしては以下のようなものが理想です。

  • [ 管理人に通知 ] 画面を削除画面にもってくる
  • 管理人だけは通知と同時に削除できる

メールが届くようにするところまでは自己解決できたのですが、その先がわからなかったので詳しい人にきいてみました。(わんさんthanx!)

- スポンサードリンク -

書き換えるファイル

絡んでいるファイルはこの3つ。実際に書き換えるのは2つ。

  • regist_ys.cgi データを登録したり削除したりするcgi
  • pl/mail_ys.cgi メールを送信するcgi
  • regist_mente_admin.html 管理人用の登録内容変更画面のテンプレートファイル

regist_ys.cgiの書き換え

書き換える箇所は「#(p3)削除実行(&act_del)」の部分。

基本的にはこのようにカスタマイズします。
登録サイトが削除された時、管理人にメールを送る。

それプラス、以下の機能を付け加えます。

  • 削除した人が誰なのかわかるようにホスト名(IPアドレス)を表示する
  • 削除理由がわかるように削除理由をチェックボックスで選べるようにする
  • 具体的理由も書けるようテキストボックスも設ける

それにはこのように書き換えます。 ※字下げの形式がわからないため入れてません



$Cdel++;
$fl=1;

# 削除された時に管理人宛にメールを送信してみる。
if(!$Slog[9]) { $Slog[9] = $EST{admin_email}; } # email未記入の場合、Fromを管理者にしておく。

{
# htmlからもらった変数をテキストに変換して、変数$akugyouへどんどん入れてます。

if($FORM{type_test1} eq "1"){$akugyou.="削除理由1 \n";}
if($FORM{type_test2} eq "2"){$akugyou.="削除理由2 \n";}
if($FORM{type_test3} eq "3"){$akugyou.="削除理由3 \n";}
if($FORM{type_test4} eq "4"){$akugyou.="削除理由4 \n";}
if($FORM{type_test5} eq "5"){$akugyou.="削除理由5 \n";}

require "pl/mail_ys.cgi";
local ($Dhonbun);
$Dhonbun = "【削除者】\nHOST: $ENV{'REMOTE_ADDR'}\n\n【対象サイト】\nID: $Slog[0]\nTITLE: $Slog[1]\nURL: $Slog[2] \n\n【削除理由】\n$akugyou \n\n【コメント】 $FORM{com2} \n\n【お名前】 $FORM{c_name2} \n";
&mail($EST{admin_email},$Slog[9], "$EST{search_name}の登録サイトが削除されました","any","","","","","","",$Dhonbun);
}

ifが並んでいるいのがチェック項目。【削除者】という部分で、削除した人のIPがわかるようになっています。 【コメント】という部分が自由記入欄。【お名前】という欄はホスト名がわかるのでいらないかもしれません。

regist_mente_admin.htmlの書き換え

こちらは実際に表示されるテンプレート。これを登録データの削除の欄に追加します。


<a name=del></a>
<form action="regist_ys.cgi" method=post>
	<input type=hidden name=mode value="act_del">
	<input type=hidden name=del_mode value="single">
	<ul><p align=left><font size="+1">【登録データの削除】</font></p>
<br>
<input type=hidden name=changer value=admin>
<input type=hidden name=pass value="$FORM{pass}">
<input type=hidden name=id value="$FORM{id}" size=12>
	[通知種別]<br>
		<input type=checkbox name=type_test1 value="1">削除理由1<br>
		<input type=checkbox name=type_test2 value="2">削除理由2<br>
		<input type=checkbox name=type_test3 value="3">削除理由3<br>
		<input type=checkbox name=type_test4 value="4">削除理由4<br>
		<input type=checkbox name=type_test5 value="5">削除理由5<br>
	<br>
	[コメント](必要があればご記入ください)<br>
		<textarea name=com2 cols=40 rows=4></textarea><br>
	<br>
	[お名前]<br>
	<input type=text name=c_name2><br>
削除確認チェック→<input type=checkbox name=del_check value=on><br>
<input type=submit value="このデータを削除する">
</form></ul>

このhtmlがcgiにデータを渡してくれるということらしいです。これで設定は完了。

実際にデータを削除してみてメールが来るかどうか確認

モザイクをかけるとなんだか怪しいメールみたいだけど、うまくいくとこんな感じでメールが届きます。これをメーラーなりなんなりで管理スタッフに転送するように設定すれば完了です。

delmail.jpg

これを応用して、仮登録データを削除するときもメールが届くように設定してみたいと思います。

07.05.23追記
チャレンジしてみましたがわかりませんでした...。いつかは!

- スポンサードリンク -