OSDN Git Service

BugTrack-plugin/339 : スパムフィルタプラグイン(学習機能無し版) - 20070803版
[fswiki/sandbox.git] / kgsoft / _ex_spam_filter_light / tags / 20070803 / plugin / _ex_spam_filter_light / pcomment.pm
1 ##########################################################################################
2 #
3 # ¥¹¥Ñ¥à¥Õ¥£¥ë¥¿¡¼¥×¥é¥°¥¤¥ó¡Ê³Ø½¬µ¡Ç½Ìµ¤·ÈÇ¡Ë
4 #¡Êpcomment¥×¥é¥°¥¤¥ó¤Î¥ª¡¼¥Ð¡¼¥é¥¤¥É¡Ë
5 #
6 ##########################################################################################
7 use strict;
8
9 use plugin::pcomment::PComment;
10
11 # plugin::pcomment::PComment¤Îdo_action¥á¥½¥Ã¥É¤ÎÃÖ¤­´¹¤¨
12 package plugin::pcomment::PComment;
13
14 sub do_action {\r
15     my $self = shift;\r
16     my $wiki = shift;\r
17     my $cgi  = $wiki->get_CGI;\r
18     \r
19     my $name      = $cgi->param("name");\r
20     my $message   = $cgi->param("message");\r
21     my $save_page = $cgi->param("save_page");\r
22     my $show_page = $cgi->param("show_page");\r
23     my $head_char = $cgi->param("head_char");\r
24     my $reply     = $cgi->param("reply");\r
25 \r
26 #--------------------------------------------------------------------------------------------------
27   if($message){
28     unless(&plugin::_ex_spam_filter_light::Install::judgment_text($message)){
29       my $time = Util::format_date(time());
30       my $file = $wiki->config('log_dir')."/spam_pcomment.txt";
31       if(open(SPAM_LOG, ">>$file")){
32         print SPAM_LOG "$show_page:$message - $name($time)\n";
33         close(SPAM_LOG);
34       }
35       my $error_message = $wiki->error("Åê¹Æ¤µ¤ì¤¿Ê¸¾Ï¤Ï¥¹¥Ñ¥à¥á¥Ã¥»¡¼¥¸¤ÈȽÄꤵ¤ì¤Þ¤·¤¿¡£\n");
36       $error_message .= "<p>\n";
37       $error_message .= "<div>Åê¹Æ¤µ¤ì¤¿Ê¸¾Ï¡§</div>\n";
38       $error_message .= "<div>" . Util::escapeHTML("$message") . "</div>\n";
39       $error_message .= "</p>\n";
40       return $error_message;
41     }
42   }
43 #--------------------------------------------------------------------------------------------------
44 \r
45     if($name eq ""){\r
46         $name = "̵̾¤·¤µ¤ó";\r
47     } else {\r
48         # post_name¤È¤¤¤¦¥­¡¼¤Ç¥¯¥Ã¥­¡¼¤ò¥»¥Ã¥È¤¹¤ë\r
49         my $cookie = $cgi->cookie(-name=>'post_name',-value=>$name,-expires=>'+1M');\r
50         print "Set-Cookie: ",$cookie->as_string,"\n";\r
51     }\r
52 \r
53     if($save_page ne "" && $message ne ""){\r
54         my $content;\r
55         if($wiki->page_exists($save_page)){\r
56             $content = $wiki->get_page($save_page);\r
57             $content =~ s/\n+$//g; #¹ÔËö¤Î²þ¹Ô¤ÏÁ´¤Æ½üµî\r
58         }else{\r
59             $content = "[[$show_page]]\n";\r
60         }\r
61         my $new_content .= $head_char . "$message - $name (".Util::format_date(time()) . ")";\r
62 \r
63         unless($reply){\r
64             $content .= "\n" if($content);\r
65             $content .= $new_content . "\n";\r
66         }else{\r
67             my @content;\r
68             my $reply_sw = 0; #±ø¤¤¤±¤É...\r
69             my $lev = 0;\r
70             foreach(split /\n/, $content){\r
71                 /^([*+]+)/;\r
72                 if($reply_sw == 1 and $lev >= length($1)){\r
73                     push(@content, $head_char x $lev . $new_content);\r
74                     $reply_sw = 2;\r
75                 }\r
76                 if($reply_sw == 0 and $reply eq Util::md5($_)){\r
77                     $lev = length($1);\r
78                     $reply_sw = 1;\r
79                 }\r
80                 push(@content, $_);\r
81             }\r
82             if($reply_sw == 1){\r
83                 push(@content, $head_char x $lev . $new_content);\r
84             }\r
85             $content = join("\n", @content);\r
86         }\r
87 \r
88         $wiki->save_page($save_page, $content);\r
89 \r
90         my $modtime = &Util::load_config_hash($wiki,$Wiki::DefaultStorage::MODTIME_FILE);\r
91         $modtime->{$show_page} = time();\r
92         &Util::save_config_hash($wiki,$Wiki::DefaultStorage::MODTIME_FILE,$modtime);\r
93 \r
94     }\r
95     # É½¼¨¤µ¤ì¤Æ¤¤¤¿¥Ú¡¼¥¸¤Ë¥ê¥À¥¤¥ì¥¯¥È\r
96     $wiki->redirect($show_page);\r
97 }\r
98
99 1;