2 /////////////////////////////////////////////////
3 // PukiWiki - Yet another WikiWikiWeb clone.
5 // $Id: rss.inc.php,v 1.11 2004/12/02 11:34:25 henoheno Exp $
7 // Publishing RSS feed of RecentChanges
8 // HOW TO USE: rss.inc.php?ver=[0.91(default)|1.0|2.0]
10 function plugin_rss_action()
12 global $vars, $script, $rss_max, $page_title, $whatsnew, $trackback;
14 $self = (preg_match('#^https?://#', $script) ? $script : get_script_uri());
15 if ($self === FALSE) die('please set "$script" at INI_FILE');
17 $recent = CACHE_DIR . 'recent.dat';
18 if (! file_exists($recent)) die('recent.dat is not found');
20 $version = isset($vars['ver']) ? $vars['ver'] : '';
22 case '': $version = '0.91'; break; // Default
23 case '1': $version = '1.0'; break;
24 case '2': $version = '2.0'; break;
26 $page_title_utf8 = mb_convert_encoding($page_title, 'UTF-8', SOURCE_ENCODING);
28 $items = $rdf_li = '';
29 foreach (array_splice(file($recent), 0, $rss_max) as $line) {
30 list($time, $page) = explode("\t", rtrim($line));
31 $r_page = rawurlencode($page);
32 $title = mb_convert_encoding($page, 'UTF-8', SOURCE_ENCODING);
35 case '0.91': /* FALLTHROUGH */
37 $date = get_date('D, d M Y H:i:s T', $time);
38 $date = ($version == '0.91') ?
39 ' <description>' . $date . '</description>' :
40 ' <pubDate>' . $date . '</pubDate>';
44 <link>$self?$r_page</link>
52 $dc_date = substr_replace(get_date('Y-m-d\TH:i:sO', $time), ':', -2, 0);
53 $dc_identifier = " <dc:identifier>$self?$r_page</dc:identifier>";
55 $rdf_li .= " <rdf:li rdf:resource=\"$self?$r_page\" />\n";
57 $tb_id = md5($r_page);
58 $trackback_ping = " <trackback:ping>$self?tb_id=$tb_id</trackback:ping>";
61 <item rdf:about="$self?$r_page">
63 <link>$self?$r_page</link>
64 <dc:date>$dc_date</dc:date>
72 die('Invalid RSS version!!');
78 header('Content-type: application/xml');
79 print '<?xml version="1.0" encoding="UTF-8"?>' . "\n\n";
81 $r_whatsnew = rawurlencode($whatsnew);
84 print '<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN"' .
85 ' "http://my.netscape.com/publish/formats/rss-0.91.dtd">' . "\n";
90 <rss version="$version">
92 <title>$page_title_utf8</title>
93 <link>$self?$r_whatsnew</link>
94 <description>PukiWiki RecentChanges</description>
95 <language>ja</language>
104 $xmlns_trackback = $trackback ?
105 ' xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"' : '';
108 xmlns:dc="http://purl.org/dc/elements/1.1/"
110 xmlns="http://purl.org/rss/1.0/"
111 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
113 <channel rdf:about="$self?$r_whatsnew">
114 <title>$page_title_utf8</title>
115 <link>$self?$r_whatsnew</link>
116 <description>PukiWiki RecentChanges</description>