-###############################################################################\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;