##########################################################################################
#
# スパムフィルタープラグイン（学習機能無し版）
#（bugtrackプラグインのオーバーライド）
#
##########################################################################################
use strict;

use plugin::bugtrack::BugTrackHandler;

# plugin::bugtrack::BugTrackHandlerのdo_actionメソッドの置き換え
package plugin::bugtrack::BugTrackHandler;

sub do_action {
	my $self = shift;
	my $wiki = shift;
	my $cgi = $wiki->get_CGI;
	
	my $project  = $cgi->param("project");
	my $name     = $cgi->param("name");
	my $category = $cgi->param("category");
	my $priority = $cgi->param("priority");
	my $status   = $cgi->param("status");
	my $content  = $cgi->param("content");
	my $subject  = $cgi->param("subject");
	my $time     = time();
	
	if($name eq ""){
		return $wiki->error("名前が入力されていません。");
	} elsif($subject eq ""){
		return $wiki->error("サマリが入力されていません。");
	} elsif($content eq ""){
		return $wiki->error("バグ内容が入力されていません。");
	}
	
	# post_nameというキーでクッキーをセットする
	my $path   = &Util::cookie_path($wiki);
	my $cookie = $cgi->cookie(-name=>'post_name',-value=>$name,-expires=>'+1M',-path=>$path);
	print "Set-Cookie: ",$cookie->as_string,"\n";
	
#--------------------------------------------------------------------------------------------------
  if($content){
    unless(&plugin::_ex_spam_filter_light::Install::judgment_text($content)){
      my $time = Util::format_date(time());
      my $file = $wiki->config('log_dir')."/spam_bugtrack.txt";
      if(open(SPAM_LOG, ">>$file")){
        print SPAM_LOG "-" x 70 . "\n";
        print SPAM_LOG "$project:$name:$category:$priority:$status:$time\n";
        print SPAM_LOG "-" x 70 . "\n";
        print SPAM_LOG "$content\n";
        close(SPAM_LOG);
      }
      my $error_message = $wiki->error("投稿された文章はスパムメッセージと判定されました。\n");
      $subject = Util::escapeHTML($subject);
      $content = Util::escapeHTML($content);
      $content =~ s/\n/<br>/g;
      $error_message .= "<p>\n";
      $error_message .= "<div>投稿された文章：</div>\n";
      $error_message .= "<div>＜投稿者＞$name</div>\n";
      $error_message .= "<div>＜カテゴリ＞$category</div>\n";
      $error_message .= "<div>＜優先度＞$priority</div>\n";
      $error_message .= "<div>＜状態＞$status</div>\n";
      $error_message .= "<div>＜日時＞$time</div>\n";
      $error_message .= "<div>＜本文＞</div>\n";
      $error_message .= "<div>$content</div>\n";
      $error_message .= "</p>\n";
      return $error_message;
    }
  }
#--------------------------------------------------------------------------------------------------

	# フォーマットプラグインへの対応
	my $format = $wiki->get_edit_format();
	$name     = $wiki->convert_to_fswiki($name    ,$format,1);
	$category = $wiki->convert_to_fswiki($category,$format,1);
	$priority = $wiki->convert_to_fswiki($priority,$format,1);
	$status   = $wiki->convert_to_fswiki($status  ,$format,1);
	$content  = $wiki->convert_to_fswiki($content ,$format);
	
	my $page = $self->make_pagename($wiki,$project);
	
	$content = "!!!$subject\n".
	           "*投稿者： $name\n".
	           "*カテゴリ： $category\n".
	           "*優先度： $priority\n".
	           "*状態： $status\n".
	           "*日時： ".Util::format_date($time)."\n".
	           "{{bugstate}}\n".
	           "!!内容\n".$content."\n".
	           "!!コメント\n{{comment}}";
	
	$wiki->save_page($page,$content);
	$wiki->redirect($page);
}

1;
