OSDN Git Service

改行コードをLFに統一。
[fswiki/fswiki.git] / plugin / rss / RSSMaker.pm
index 9343468..cf3da96 100644 (file)
-###############################################################################\r
-#\r
-# RSS¥×¥é¥°¥¤¥ó\r
-#\r
-###############################################################################\r
-package plugin::rss::RSSMaker;\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
-sub do_action {\r
-       my $self = shift;\r
-       my $wiki = shift;\r
-       my $cgi  = $wiki->get_CGI();\r
-       my $file = $wiki->config('log_dir')."/rss.cache";\r
-       \r
-       # ¥­¥ã¥Ã¥·¥å¥Õ¥¡¥¤¥ë¤¬¤Ê¤¤¾ì¹ç¤ÏºîÀ®¤¹¤ë\r
-       unless(-e $file){\r
-               &make_rss($wiki,$file);\r
-       }\r
-       \r
-       # RSS¤ò¥ì¥¹¥Ý¥ó¥¹\r
-       print "Content-Type: text/xml\n\n";\r
-       open(RSS,$file);\r
-       binmode(RSS);\r
-       while(<RSS>){\r
-               print $_;\r
-       }\r
-       close(RSS);\r
-       \r
-       exit();\r
-}\r
-\r
-#==============================================================================\r
-# ¥Õ¥Ã¥¯¥á¥½¥Ã¥É\r
-#==============================================================================\r
-sub hook {\r
-       my $self = shift;\r
-       my $wiki = shift;\r
-       my $hook = shift;\r
-       \r
-       if($hook eq "initialize"){\r
-               $wiki->add_head_info("<link rel=\"alternate\" type=\"application/rss+xml\" title=\"RSS\" href=\"".$wiki->create_url({action=>"RSS"})."\">");\r
-       } else {\r
-               &make_rss($wiki,$wiki->config('log_dir')."/rss.cache");\r
-       }\r
-}\r
-\r
-#==============================================================================\r
-# ÆüÉÕ¤ò¥Õ¥©¡¼¥Þ¥Ã¥È\r
-#==============================================================================\r
-sub format_date {\r
-       my $time = shift;\r
-       my ($sec, $min, $hour, $mday, $mon, $year, $wday) = localtime($time);\r
-       return sprintf("%04d/%02d/%02d %02d:%02d:%02d",\r
-                      $year+1900,$mon+1,$mday,$hour,$min,$sec);\r
-}\r
-\r
-#==============================================================================\r
-# RSS¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë\r
-#==============================================================================\r
-sub make_rss {\r
-       my $wiki = shift;\r
-       my $file = shift;\r
-       \r
-       open(RSS,">$file") or die "RSS¥Õ¥¡¥¤¥ë¤ÎºîÀ®¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£";\r
-       binmode(RSS);\r
-       \r
-       # ¹¹¿·¾ðÊó¤ò¼ý½¸\r
-       my @list = $wiki->get_page_list;\r
-       @list = sort {\r
-               my $mod1 = $wiki->get_last_modified2($a);\r
-               my $mod2 = $wiki->get_last_modified2($b);\r
-               return $mod2 <=> $mod1;\r
-       } @list;\r
-       \r
-       # URI¤òºîÀ®\r
-       my $uri = $wiki->config('server_host');\r
-       if($uri eq ""){\r
-               $uri = $wiki->get_CGI()->url(-path_info => 1);\r
-       } else {\r
-               $uri = $uri . $wiki->get_CGI->url(-absolute => 1) . $wiki->get_CGI()->path_info();\r
-       }\r
-       \r
-       # RSS¤ò¥Õ¥¡¥¤¥ë¤Ë½ñ¤­½Ð¤¹\r
-#      print "Content-Type: text/xml\n\n";\r
-       print RSS "<?xml version=\"1.0\" encoding=\"EUC-JP\"?>\n";\r
-       print RSS "<!DOCTYPE rss PUBLIC \"-//Netscape Communications//DTD RSS 0.91//EN\"\n";\r
-       print RSS "            \"http://my.netscape.com/publish/formats/rss-0.91.dtd\">\n";\r
-       print RSS "<rss version=\"0.91\">\n";\r
-       print RSS "  <channel>\n";\r
-       print RSS "    <title>".$wiki->config('site_title')."</title>\n";\r
-       print RSS "    <link>$uri?action=RSS</link>\n";\r
-       print RSS "    <description>".$wiki->config('site_title')." RecentChanges</description>\n";\r
-       print RSS "    <language>ja</language>\n";\r
-       my $count = 0;\r
-       foreach my $page (@list){\r
-               \r
-               # ¸ø³«¤µ¤ì¤Æ¤¤¤ë¥Ú¡¼¥¸¤Î¤ß\r
-               next if($wiki->get_page_level($page)!=0);\r
-               \r
-               if($count==15){\r
-                       last;\r
-               }\r
-               print RSS "    <item>\n";\r
-               print RSS "      <title>".Util::escapeHTML($page)."</title>\n";\r
-               print RSS "      <link>$uri?page=".Util::url_encode($page)."</link>\n";\r
-               print RSS "      <description>".&format_date($wiki->get_last_modified2($page))."</description>\n";\r
-               print RSS "    </item>\n";\r
-               $count++;\r
-       }\r
-       print RSS "  </channel>\n";\r
-       print RSS "</rss>\n";\r
-       \r
-       close(RSS);\r
-}\r
-\r
-1;\r
+###############################################################################
+#
+# RSS¥×¥é¥°¥¤¥ó
+#
+###############################################################################
+package plugin::rss::RSSMaker;
+use strict;
+#==============================================================================
+# ¥³¥ó¥¹¥È¥é¥¯¥¿
+#==============================================================================
+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 $file = $wiki->config('log_dir')."/rss.cache";
+       
+       # ¥­¥ã¥Ã¥·¥å¥Õ¥¡¥¤¥ë¤¬¤Ê¤¤¾ì¹ç¤ÏºîÀ®¤¹¤ë
+       unless(-e $file){
+               &make_rss($wiki,$file);
+       }
+       
+       # RSS¤ò¥ì¥¹¥Ý¥ó¥¹
+       print "Content-Type: text/xml\n\n";
+       open(RSS,$file);
+       binmode(RSS);
+       while(<RSS>){
+               print $_;
+       }
+       close(RSS);
+       
+       exit();
+}
+
+#==============================================================================
+# ¥Õ¥Ã¥¯¥á¥½¥Ã¥É
+#==============================================================================
+sub hook {
+       my $self = shift;
+       my $wiki = shift;
+       my $hook = shift;
+       
+       if($hook eq "initialize"){
+               $wiki->add_head_info("<link rel=\"alternate\" type=\"application/rss+xml\" title=\"RSS\" href=\"".$wiki->create_url({action=>"RSS"})."\">");
+       } else {
+               &make_rss($wiki,$wiki->config('log_dir')."/rss.cache");
+       }
+}
+
+#==============================================================================
+# ÆüÉÕ¤ò¥Õ¥©¡¼¥Þ¥Ã¥È
+#==============================================================================
+sub format_date {
+       my $time = shift;
+       my ($sec, $min, $hour, $mday, $mon, $year, $wday) = localtime($time);
+       return sprintf("%04d/%02d/%02d %02d:%02d:%02d",
+                      $year+1900,$mon+1,$mday,$hour,$min,$sec);
+}
+
+#==============================================================================
+# RSS¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë
+#==============================================================================
+sub make_rss {
+       my $wiki = shift;
+       my $file = shift;
+       
+       open(RSS,">$file") or die "RSS¥Õ¥¡¥¤¥ë¤ÎºîÀ®¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£";
+       binmode(RSS);
+       
+       # ¹¹¿·¾ðÊó¤ò¼ý½¸
+       my @list = $wiki->get_page_list;
+       @list = sort {
+               my $mod1 = $wiki->get_last_modified2($a);
+               my $mod2 = $wiki->get_last_modified2($b);
+               return $mod2 <=> $mod1;
+       } @list;
+       
+       # URI¤òºîÀ®
+       my $uri = $wiki->config('server_host');
+       if($uri eq ""){
+               $uri = $wiki->get_CGI()->url(-path_info => 1);
+       } else {
+               $uri = $uri . $wiki->get_CGI->url(-absolute => 1) . $wiki->get_CGI()->path_info();
+       }
+       
+       # RSS¤ò¥Õ¥¡¥¤¥ë¤Ë½ñ¤­½Ð¤¹
+#      print "Content-Type: text/xml\n\n";
+       print RSS "<?xml version=\"1.0\" encoding=\"EUC-JP\"?>\n";
+       print RSS "<!DOCTYPE rss PUBLIC \"-//Netscape Communications//DTD RSS 0.91//EN\"\n";
+       print RSS "            \"http://my.netscape.com/publish/formats/rss-0.91.dtd\">\n";
+       print RSS "<rss version=\"0.91\">\n";
+       print RSS "  <channel>\n";
+       print RSS "    <title>".$wiki->config('site_title')."</title>\n";
+       print RSS "    <link>$uri?action=RSS</link>\n";
+       print RSS "    <description>".$wiki->config('site_title')." RecentChanges</description>\n";
+       print RSS "    <language>ja</language>\n";
+       my $count = 0;
+       foreach my $page (@list){
+               
+               # ¸ø³«¤µ¤ì¤Æ¤¤¤ë¥Ú¡¼¥¸¤Î¤ß
+               next if($wiki->get_page_level($page)!=0);
+               
+               if($count==15){
+                       last;
+               }
+               print RSS "    <item>\n";
+               print RSS "      <title>".Util::escapeHTML($page)."</title>\n";
+               print RSS "      <link>$uri?page=".Util::url_encode($page)."</link>\n";
+               print RSS "      <description>".&format_date($wiki->get_last_modified2($page))."</description>\n";
+               print RSS "    </item>\n";
+               $count++;
+       }
+       print RSS "  </channel>\n";
+       print RSS "</rss>\n";
+       
+       close(RSS);
+}
+
+1;