OSDN Git Service

BugTrack-plugin/339 : スパムフィルタプラグイン(学習機能無し版) - 20070803版
[fswiki/sandbox.git] / kgsoft / _ex_spam_filter_light / tags / 20070803 / plugin / _ex_spam_filter_light / pcomment.pm
diff --git a/kgsoft/_ex_spam_filter_light/tags/20070803/plugin/_ex_spam_filter_light/pcomment.pm b/kgsoft/_ex_spam_filter_light/tags/20070803/plugin/_ex_spam_filter_light/pcomment.pm
new file mode 100644 (file)
index 0000000..6592e67
--- /dev/null
@@ -0,0 +1,99 @@
+##########################################################################################
+#
+# ¥¹¥Ñ¥à¥Õ¥£¥ë¥¿¡¼¥×¥é¥°¥¤¥ó¡Ê³Ø½¬µ¡Ç½Ìµ¤·ÈÇ¡Ë
+#¡Êpcomment¥×¥é¥°¥¤¥ó¤Î¥ª¡¼¥Ð¡¼¥é¥¤¥É¡Ë
+#
+##########################################################################################
+use strict;
+
+use plugin::pcomment::PComment;
+
+# plugin::pcomment::PComment¤Îdo_action¥á¥½¥Ã¥É¤ÎÃÖ¤­´¹¤¨
+package plugin::pcomment::PComment;
+
+sub do_action {\r
+    my $self = shift;\r
+    my $wiki = shift;\r
+    my $cgi  = $wiki->get_CGI;\r
+    \r
+    my $name      = $cgi->param("name");\r
+    my $message   = $cgi->param("message");\r
+    my $save_page = $cgi->param("save_page");\r
+    my $show_page = $cgi->param("show_page");\r
+    my $head_char = $cgi->param("head_char");\r
+    my $reply     = $cgi->param("reply");\r
+\r
+#--------------------------------------------------------------------------------------------------
+  if($message){
+    unless(&plugin::_ex_spam_filter_light::Install::judgment_text($message)){
+      my $time = Util::format_date(time());
+      my $file = $wiki->config('log_dir')."/spam_pcomment.txt";
+      if(open(SPAM_LOG, ">>$file")){
+        print SPAM_LOG "$show_page:$message - $name($time)\n";
+        close(SPAM_LOG);
+      }
+      my $error_message = $wiki->error("Åê¹Æ¤µ¤ì¤¿Ê¸¾Ï¤Ï¥¹¥Ñ¥à¥á¥Ã¥»¡¼¥¸¤ÈȽÄꤵ¤ì¤Þ¤·¤¿¡£\n");
+      $error_message .= "<p>\n";
+      $error_message .= "<div>Åê¹Æ¤µ¤ì¤¿Ê¸¾Ï¡§</div>\n";
+      $error_message .= "<div>" . Util::escapeHTML("$message") . "</div>\n";
+      $error_message .= "</p>\n";
+      return $error_message;
+    }
+  }
+#--------------------------------------------------------------------------------------------------
+\r
+    if($name eq ""){\r
+        $name = "̵̾¤·¤µ¤ó";\r
+    } else {\r
+        # post_name¤È¤¤¤¦¥­¡¼¤Ç¥¯¥Ã¥­¡¼¤ò¥»¥Ã¥È¤¹¤ë\r
+        my $cookie = $cgi->cookie(-name=>'post_name',-value=>$name,-expires=>'+1M');\r
+        print "Set-Cookie: ",$cookie->as_string,"\n";\r
+    }\r
+\r
+    if($save_page ne "" && $message ne ""){\r
+        my $content;\r
+        if($wiki->page_exists($save_page)){\r
+            $content = $wiki->get_page($save_page);\r
+            $content =~ s/\n+$//g; #¹ÔËö¤Î²þ¹Ô¤ÏÁ´¤Æ½üµî\r
+        }else{\r
+            $content = "[[$show_page]]\n";\r
+        }\r
+        my $new_content .= $head_char . "$message - $name (".Util::format_date(time()) . ")";\r
+\r
+        unless($reply){\r
+            $content .= "\n" if($content);\r
+            $content .= $new_content . "\n";\r
+        }else{\r
+            my @content;\r
+            my $reply_sw = 0; #±ø¤¤¤±¤É...\r
+            my $lev = 0;\r
+            foreach(split /\n/, $content){\r
+                /^([*+]+)/;\r
+                if($reply_sw == 1 and $lev >= length($1)){\r
+                    push(@content, $head_char x $lev . $new_content);\r
+                    $reply_sw = 2;\r
+                }\r
+                if($reply_sw == 0 and $reply eq Util::md5($_)){\r
+                    $lev = length($1);\r
+                    $reply_sw = 1;\r
+                }\r
+                push(@content, $_);\r
+            }\r
+            if($reply_sw == 1){\r
+                push(@content, $head_char x $lev . $new_content);\r
+            }\r
+            $content = join("\n", @content);\r
+        }\r
+\r
+        $wiki->save_page($save_page, $content);\r
+\r
+        my $modtime = &Util::load_config_hash($wiki,$Wiki::DefaultStorage::MODTIME_FILE);\r
+        $modtime->{$show_page} = time();\r
+        &Util::save_config_hash($wiki,$Wiki::DefaultStorage::MODTIME_FILE,$modtime);\r
+\r
+    }\r
+    # É½¼¨¤µ¤ì¤Æ¤¤¤¿¥Ú¡¼¥¸¤Ë¥ê¥À¥¤¥ì¥¯¥È\r
+    $wiki->redirect($show_page);\r
+}\r
+
+1;