OSDN Git Service

(no commit message)
[fswiki/sandbox.git] / kgsoft / _ex_spam_filter_light / trunk / plugin / _ex_spam_filter_light / core.pm
diff --git a/kgsoft/_ex_spam_filter_light/trunk/plugin/_ex_spam_filter_light/core.pm b/kgsoft/_ex_spam_filter_light/trunk/plugin/_ex_spam_filter_light/core.pm
new file mode 100644 (file)
index 0000000..7f2b2f1
--- /dev/null
@@ -0,0 +1,162 @@
+##########################################################################################
+#
+# ¥¹¥Ñ¥à¥Õ¥£¥ë¥¿¡¼¥×¥é¥°¥¤¥ó¡Ê³Ø½¬µ¡Ç½Ìµ¤·ÈÇ¡Ë
+#¡Êcore::EditPage¥×¥é¥°¥¤¥ó¡Ê¥Ú¡¼¥¸¤ÎÊÔ½¸¡Ë¤Î¥ª¡¼¥Ð¡¼¥é¥¤¥É¡Ë
+#
+##########################################################################################
+use strict;
+
+use plugin::core::EditPage;
+
+# plugin::core::EditPage¤Îdo_action¥á¥½¥Ã¥É¤ÎÃÖ¤­´¹¤¨
+package plugin::core::EditPage;
+
+sub do_action {
+       my $self = shift;
+       my $wiki = shift;
+       my $cgi = $wiki->get_CGI;
+       
+       my $pagename = $cgi->param("page");
+       my $format   = $wiki->get_edit_format();
+       my $content  = $cgi->param("content");
+       my $sage     = $cgi->param("sage");
+       my $template = $cgi->param("template");
+       my $artno    = $cgi->param("artno");
+       my $time     = $wiki->get_last_modified($pagename);
+       
+       my $buf = "";
+       my $login = $wiki->get_login_info();
+
+       if($pagename eq ""){
+               return $wiki->error("¥Ú¡¼¥¸¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó¡£");
+       }
+       if($pagename =~ /([\|\[\]])|^:|([^:]:[^:])/){
+               return $wiki->error("¥Ú¡¼¥¸Ì¾¤Ë»ÈÍѤǤ­¤Ê¤¤Ê¸»ú¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£");
+       }
+       if(!$wiki->can_modify_page($pagename)){
+               return $wiki->error("¥Ú¡¼¥¸¤ÎÊÔ½¸¤Ïµö²Ä¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£");
+       }
+       
+       #--------------------------------------------------------------------------
+       # Êݸ½èÍý
+       if($cgi->param("save") ne ""){
+               if($wiki->page_exists($pagename)){
+                       if($cgi->param("lastmodified") < $time){
+                               return $wiki->error("¥Ú¡¼¥¸¤Ï´û¤ËÊ̤Υ桼¥¶¤Ë¤è¤Ã¤Æ¹¹¿·¤µ¤ì¤Æ¤¤¤Þ¤¹¡£");
+                       }
+               }
+
+#--------------------------------------------------------------------------------------------------
+  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_page.txt";
+      if(open(SPAM_LOG, ">>$file")){
+        print SPAM_LOG "-" x 70 . "\n";
+        print SPAM_LOG "$pagename:$artno ($time)\n";
+        print SPAM_LOG "-" x 70 . "\n";
+        print SPAM_LOG "$content\n";
+        close(SPAM_LOG);
+      }
+      my $error_message = $wiki->error("ÊÔ½¸¤µ¤ì¤¿Ê¸¾Ï¤Ï¥¹¥Ñ¥àʸ¾Ï¤ÈȽÄꤵ¤ì¤Þ¤·¤¿¡£\n");
+      $content = Util::escapeHTML($content);
+      $content =~ s/\n/<br>/g;
+      $error_message .= "<p>\n";
+      $error_message .= "<div>Åê¹Æ¤µ¤ì¤¿Ê¸¾Ï¡§</div>\n";
+      $error_message .= "<div>¡ã¥Ú¡¼¥¸Ì¾¡ä</div>\n";
+      $error_message .= "<div>$pagename</div>\n";
+      $error_message .= "<div>¡ãËÜʸ¡ä</div>\n";
+      $error_message .= "<div>$content</div>\n";
+      $error_message .= "</p>\n";
+      return $error_message;
+    }
+  }
+#--------------------------------------------------------------------------------------------------
+\r
+               #my $save_content = $content;
+               my $mode = $wiki->get_edit_format();
+               my $save_content = $wiki->convert_to_fswiki($content,$mode);
+
+               # ¥Ñ¡¼¥ÈÊÔ½¸¤Î¾ì¹ç
+               if($artno ne ""){
+                       $save_content = &make_save_source($wiki->get_page($pagename),$save_content,$artno,$wiki);
+               }
+               # FrontPage¤Ïºï½üÉÔ²Ä
+               if($pagename eq $wiki->config("frontpage") && $save_content eq ""){
+                       $buf = "<b>".&Util::escapeHTML($wiki->config("frontpage"))."¤Ïºï½ü¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£</b>\n";
+
+               # ¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï½èÍý¤ò¼Â¹Ô¤·¤Æ¥á¥Ã¥»¡¼¥¸¤òÊÖµÑ
+               } else {
+                       $wiki->save_page($pagename,$save_content,$sage);
+                       
+                       if($content ne ""){
+                               $wiki->redirect($pagename);
+                       } else {
+                               if($artno eq ""){
+                                       $wiki->set_title($pagename."¤òºï½ü¤·¤Þ¤·¤¿");
+                                       return $cgi->escapeHTML($pagename)."¤òºï½ü¤·¤Þ¤·¤¿¡£";
+                               } else {
+                                       $wiki->set_title($pagename."¤Î¥Ñ¡¼¥È¤òºï½ü¤·¤Þ¤·¤¿");
+                                       return $cgi->escapeHTML($pagename)."¤Î¥Ñ¡¼¥È¤òºï½ü¤·¤Þ¤·¤¿¡£";
+                               }
+                       }
+               }
+       #--------------------------------------------------------------------------
+       # ¥×¥ì¥Ó¥å¡¼½èÍý
+       } elsif($cgi->param("preview") ne ""){
+               $time = $cgi->param("lastmodified");
+               $buf = "°Ê²¼¤Î¥×¥ì¥Ó¥å¡¼¤ò³Îǧ¤·¤Æ¤è¤í¤·¤±¤ì¤Ð¡ÖÊݸ¡×¥Ü¥¿¥ó¤ò²¡¤·¤Æ¤¯¤À¤µ¤¤¡£<br>";
+               if($content eq ""){
+                       if($pagename eq $wiki->config("frontpage") && $artno eq ""){
+                               $buf = $buf."<b>¡Ê".&Util::escapeHTML($wiki->config("frontpage"))."¤Ïºï½ü¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£¡Ë</b>";
+                       } else {
+                               if($artno eq ""){
+                                       $buf = $buf."<b>¡Ê¥Ú¡¼¥¸ÆâÍƤ϶õ¤Ç¤¹¡£¹¹¿·¤¹¤ë¤È¤³¤Î¥Ú¡¼¥¸¤Ïºï½ü¤µ¤ì¤Þ¤¹¡£¡Ë</b>";
+                               } else {
+                                       $buf = $buf."<b>¡Ê¥Ú¡¼¥¸ÆâÍƤ϶õ¤Ç¤¹¡£¹¹¿·¤¹¤ë¤È¤³¤Î¥Ñ¡¼¥È¤Ïºï½ü¤µ¤ì¤Þ¤¹¡£¡Ë</b>";
+                               }
+                       }
+               }
+               $content = $wiki->convert_to_fswiki($content,$format);
+               $buf = $buf."<br>".$wiki->process_wiki($content);
+
+       } elsif($wiki->page_exists($pagename)) {
+               #¥Ú¡¼¥¸¤¬Â¸ºß¤¹¤ë¾ì¹ç
+               if($artno eq ""){
+                       $content = $wiki->get_page($pagename);
+               } else {
+                       $content = &read_by_part($wiki->get_page($pagename),$artno);
+               }
+       } elsif($template ne ""){
+               #¥Æ¥ó¥×¥ì¡¼¥È¤ò»ØÄꤵ¤ì¤¿¾ì¹ç
+               $content = $wiki->get_page($template);
+       }
+       
+       #--------------------------------------------------------------------------
+       # ÆþÎÏ¥Õ¥©¡¼¥à
+       $wiki->set_title($pagename."¤ÎÊÔ½¸",1);
+
+       my $tmpl = HTML::Template->new(filename=>$wiki->config('tmpl_dir')."/editform.tmpl",
+                                   die_on_bad_params => 0);
+
+       $tmpl->param({SCRIPT_NAME   => $wiki->config('script_name'),
+                                 PAGE_NAME     => $pagename,
+                                 CONTENT       => $wiki->convert_from_fswiki($content,$format),
+                                 LAST_MODIFIED => $time,
+                                 ACTION        => 'EDIT',
+                                 EXISTS_PAGE   => $wiki->page_exists($pagename),
+                                 SAGE          => $sage});
+       
+       if($artno ne ""){
+               $tmpl->param(OPTIONAL_PARAMS=>[{NAME=>'artno',VALUE=>$artno}]);
+       }
+
+       $buf .= $tmpl->output();
+
+       # ¥×¥é¥°¥¤¥ó¤òÁÞÆþ
+       $buf .= $wiki->get_editform_plugin();
+       
+       return $buf;
+}
+
+1;