OSDN Git Service

FSWiki 3.6.4対応版
[fswiki/sandbox.git] / kgsoft / _ex_spam_filter_light / tags / _ex_spam_filter_light_20171207 / plugin / _ex_spam_filter_light / bugtrack.pm
diff --git a/kgsoft/_ex_spam_filter_light/tags/_ex_spam_filter_light_20171207/plugin/_ex_spam_filter_light/bugtrack.pm b/kgsoft/_ex_spam_filter_light/tags/_ex_spam_filter_light_20171207/plugin/_ex_spam_filter_light/bugtrack.pm
new file mode 100644 (file)
index 0000000..6312509
--- /dev/null
@@ -0,0 +1,96 @@
+##########################################################################################
+#
+# ¥¹¥Ñ¥à¥Õ¥£¥ë¥¿¡¼¥×¥é¥°¥¤¥ó¡Ê³Ø½¬µ¡Ç½Ìµ¤·ÈÇ¡Ë
+#¡Ê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("¥Ð¥°ÆâÍƤ¬ÆþÎϤµ¤ì¤Æ¤¤¤Þ¤»¤ó¡£");
+       }
+       
+       # fswiki_post_name¤È¤¤¤¦¥­¡¼¤Ç¥¯¥Ã¥­¡¼¤ò¥»¥Ã¥È¤¹¤ë
+       my $path   = &Util::cookie_path($wiki);
+       my $cookie = $cgi->cookie(-name=>'fswiki_post_name',-value=>Util::url_encode($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;