OSDN Git Service

ソフト404等のレスポンスエラーコード対応
[fswiki/fswiki.git] / plugin / bbs / BBSHandler.pm
index d8d4864..8b0572c 100644 (file)
@@ -1,94 +1,95 @@
-############################################################\r
-#\r
-# ·Ç¼¨Èǥץ饰¥¤¥ó¤Î¥¢¥¯¥·¥ç¥ó¥Ï¥ó¥É¥é¡£\r
-#\r
-############################################################\r
-package plugin::bbs::BBSHandler;\r
-use strict;\r
-#===========================================================\r
-# ¥³¥ó¥¹¥È¥é¥¯¥¿\r
-#===========================================================\r
-sub new {\r
-       my $class = shift;\r
-       my $self = {};\r
-       return bless $self,$class;\r
-}\r
-\r
-#===========================================================\r
-# µ­»ö¤Î½ñ¤­¹þ¤ß\r
-#===========================================================\r
-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 $subject = $cgi->param("subject");\r
-       my $message = $cgi->param("message");\r
-       my $count   = $cgi->param("count");\r
-       my $page    = $cgi->param("page");\r
-       my $option  = $cgi->param("option");\r
-       \r
-       if($name eq ""){\r
-               $name = "̵̾¤·¤µ¤ó";\r
-       } else {\r
-               # post_name¤È¤¤¤¦¥­¡¼¤Ç¥¯¥Ã¥­¡¼¤ò¥»¥Ã¥È¤¹¤ë\r
-               my $path   = &Util::cookie_path($wiki);\r
-               my $cookie = $cgi->cookie(-name=>'post_name',-value=>$name,-expires=>'+1M',-path=>$path);\r
-               print "Set-Cookie: ",$cookie->as_string,"\n";\r
-       }\r
-       \r
-       if($subject eq ""){\r
-               $subject = "̵Âê";\r
-       }\r
-       \r
-       if($page eq "" || $count eq ""){\r
-               return $wiki->error("¥Ñ¥é¥á¡¼¥¿¤¬ÉÔÀµ¤Ç¤¹");\r
-       } elsif($message eq ""){\r
-               return $wiki->error("ËÜʸ¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£");\r
-       }\r
-       \r
-       # ¥Õ¥©¡¼¥Þ¥Ã¥È¥×¥é¥°¥¤¥ó¤Ø¤ÎÂбþ\r
-       my $format = $wiki->get_edit_format();\r
-       $name    = $wiki->convert_to_fswiki($name   ,$format,1);\r
-       $subject = $wiki->convert_to_fswiki($subject,$format,1);\r
-       $message = $wiki->convert_to_fswiki($message,$format);\r
-       \r
-       my @lines = split(/\n/,$wiki->get_page($page));\r
-       my $flag       = 0;\r
-       my $form_count = 1;\r
-       my $content    = "";\r
-       \r
-       foreach(@lines){\r
-               $content = $content.$_."\n";\r
-               if(/^{{bbs\s*.*}}$/ && $flag==0){\r
-                       if($form_count==$count){\r
-                               $content .= "!!$subject - $name (".&Util::format_date(time()).")\n".\r
-                                           "$message\n";\r
-                               \r
-                               # no_comment¥ª¥×¥·¥ç¥ó\r
-                               if($option eq "no_comment"){\r
-                                       \r
-                               # reverse_comment¥ª¥×¥·¥ç¥ó\r
-                               } elsif($option eq "reverse_comment"){\r
-                                       $content .= "{{comment reverse}}\n";\r
-                               # ¥Ç¥Õ¥©¥ë¥È\r
-                               } else {\r
-                                       $content .= "{{comment}}\n";\r
-                               }\r
-                               $flag = 1;\r
-                               \r
-                       } else {\r
-                               $form_count++;\r
-                       }\r
-               }\r
-       }\r
-       if($flag==1){\r
-               $wiki->save_page($page,$content);\r
-       }\r
-       \r
-       # ¸µ¤Î¥Ú¡¼¥¸¤Ë¥ê¥À¥¤¥ì¥¯¥È¤¹¤ë\r
-       $wiki->redirect($page);\r
-}\r
-\r
-1;\r
+############################################################
+#
+# ·Ç¼¨Èǥץ饰¥¤¥ó¤Î¥¢¥¯¥·¥ç¥ó¥Ï¥ó¥É¥é¡£
+#
+############################################################
+package plugin::bbs::BBSHandler;
+use strict;
+use HTTP::Status;
+#===========================================================
+# ¥³¥ó¥¹¥È¥é¥¯¥¿
+#===========================================================
+sub new {
+       my $class = shift;
+       my $self = {};
+       return bless $self,$class;
+}
+
+#===========================================================
+# µ­»ö¤Î½ñ¤­¹þ¤ß
+#===========================================================
+sub do_action {
+       my $self = shift;
+       my $wiki = shift;
+       my $cgi  = $wiki->get_CGI;
+       
+       my $name    = $cgi->param("name");
+       my $subject = $cgi->param("subject");
+       my $message = $cgi->param("message");
+       my $count   = $cgi->param("count");
+       my $page    = $cgi->param("page");
+       my $option  = $cgi->param("option");
+       
+       if($name eq ""){
+               $name = "̵̾¤·¤µ¤ó";
+       } else {
+               # 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($subject eq ""){
+               $subject = "̵Âê";
+       }
+       
+       if($page eq "" || $count eq ""){
+               return $wiki->error(RC_BAD_REQUEST, "¥Ñ¥é¥á¡¼¥¿¤¬ÉÔÀµ¤Ç¤¹");
+       } elsif($message eq ""){
+               return $wiki->error(RC_BAD_REQUEST, "ËÜʸ¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£");
+       }
+       
+       # ¥Õ¥©¡¼¥Þ¥Ã¥È¥×¥é¥°¥¤¥ó¤Ø¤ÎÂбþ
+       my $format = $wiki->get_edit_format();
+       $name    = $wiki->convert_to_fswiki($name   ,$format,1);
+       $subject = $wiki->convert_to_fswiki($subject,$format,1);
+       $message = $wiki->convert_to_fswiki($message,$format);
+       
+       my @lines = split(/\n/,$wiki->get_page($page));
+       my $flag       = 0;
+       my $form_count = 1;
+       my $content    = "";
+       
+       foreach(@lines){
+               $content = $content.$_."\n";
+               if(/^\{\{bbs\s*.*\}\}$/ && $flag==0){
+                       if($form_count==$count){
+                               $content .= "!!$subject - $name (".&Util::format_date(time()).")\n".
+                                           "$message\n";
+                               
+                               # no_comment¥ª¥×¥·¥ç¥ó
+                               if($option eq "no_comment"){
+                                       
+                               # reverse_comment¥ª¥×¥·¥ç¥ó
+                               } elsif($option eq "reverse_comment"){
+                                       $content .= "{{comment reverse}}\n";
+                               # ¥Ç¥Õ¥©¥ë¥È
+                               } else {
+                                       $content .= "{{comment}}\n";
+                               }
+                               $flag = 1;
+                               
+                       } else {
+                               $form_count++;
+                       }
+               }
+       }
+       if($flag==1){
+               $wiki->save_page($page,$content);
+       }
+       
+       # ¸µ¤Î¥Ú¡¼¥¸¤Ë¥ê¥À¥¤¥ì¥¯¥È¤¹¤ë
+       $wiki->redirect($page);
+}
+
+1;