OSDN Git Service

Try new method #ref(pagename/filename)
[pukiwiki/pukiwiki.git] / plugin / rss10.inc.php
index 42445b4..aecae38 100644 (file)
@@ -2,65 +2,81 @@
 /////////////////////////////////////////////////
 // PukiWiki - Yet another WikiWikiWeb clone.
 //
-// $Id: rss10.inc.php,v 1.3 2003/02/24 10:09:43 panda Exp $
+// $Id: rss10.inc.php,v 1.12 2004/07/31 03:09:20 henoheno Exp $
 //
 // RecentChanges ¤Î RSS ¤ò½ÐÎÏ
 function plugin_rss10_action()
 {
        global $script,$rss_max,$page_title,$whatsnew;
-       
-       $self = $script.'?';
+       global $trackback;
 
-       $page_title_utf8 = $page_title;
-       if (function_exists('mb_convert_encoding')) {
-               $page_title_utf8 = mb_convert_encoding($page_title_utf8,'UTF-8',SOURCE_ENCODING);
+       $self = (preg_match('#^https?://#',$script) ? $script : get_script_uri());
+       if ($self === FALSE)
+       {
+               die_message("please set '\$script' in ".INI_FILE);
        }
 
+       $page_title_utf8 = mb_convert_encoding($page_title,'UTF-8',SOURCE_ENCODING);
+
        $items = $rdf_li = '';
 
-       if (!file_exists(CACHE_DIR.'recent.dat')) {
+       if (!file_exists(CACHE_DIR.'recent.dat'))
+       {
                return '';
        }
        $recent = file(CACHE_DIR.'recent.dat');
        $lines = array_splice($recent,0,$rss_max);
-       foreach ($lines as $line) {
+       foreach ($lines as $line)
+       {
                list($time,$page) = explode("\t",rtrim($line));
                $r_page = rawurlencode($page);
-               $title = $page;
-               if (function_exists('mb_convert_encoding')) {
-                       $title = mb_convert_encoding($title,'UTF-8',SOURCE_ENCODING);
-               }
+               $title = mb_convert_encoding($page,'UTF-8',SOURCE_ENCODING);
                // 'O'¤¬½ÐÎϤ¹¤ë»þ¹ï¤ò'+09:00'¤Î·Á¤ËÀ°·Á
-               $dcdate = substr_replace(get_date('Y-m-d\TH:i:sO',$time),':',-2,0);
-               
+               $dc_date = substr_replace(get_date('Y-m-d\TH:i:sO',$time),':',-2,0);
+
 //             $desc = get_date('D, d M Y H:i:s T',$time);
 // <description>$desc</description>
-               
+
+               $dc_identifier = $trackback_ping = '';
+               if ($trackback)
+               {
+                       $tb_id = md5($r_page);
+                       $dc_identifier = " <dc:identifier>$self?$r_page</dc:identifier>";
+                       $trackback_ping = " <trackback:ping>$self?tb_id=$tb_id</trackback:ping>";
+               }
                $items .= <<<EOD
-<item rdf:about="$script?$r_page">
+<item rdf:about="$self?$r_page">
  <title>$title</title>
- <link>$script?$r_page</link>
- <dc:date>$dcdate</dc:date>
+ <link>$self?$r_page</link>
+ <dc:date>$dc_date</dc:date>
+$dc_identifier
+$trackback_ping
 </item>
 
 EOD;
-               $rdf_li .= "    <rdf:li rdf:resource=\"$script?$r_page\" />\n";
+               $rdf_li .= "    <rdf:li rdf:resource=\"$self?$r_page\" />\n";
        }
-       
+
+       $xmlns_trackback = $trackback ?
+               '  xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"' : '';
+
        header('Content-type: application/xml');
-       
+
+       $r_whatsnew = rawurlencode($whatsnew);
+
        print <<<EOD
 <?xml version="1.0" encoding="utf-8"?>
 
-<rdf:RDF 
+<rdf:RDF
   xmlns:dc="http://purl.org/dc/elements/1.1/"
+$xmlns_trackback
   xmlns="http://purl.org/rss/1.0/"
-  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
+  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xml:lang="ja">
 
- <channel rdf:about="$script?rss">
+ <channel rdf:about="$self?$r_whatsnew">
   <title>$page_title_utf8</title>
-  <link>$script?$whatsnew</link>
+  <link>$self?$r_whatsnew</link>
   <description>PukiWiki RecentChanges</description>
   <items>
    <rdf:Seq>
@@ -74,4 +90,4 @@ $items
 EOD;
        exit;
 }
-?>
\ No newline at end of file
+?>