2 // PukiWiki - Yet another WikiWikiWeb clone
3 // $Id: rss.inc.php,v 1.17 2005/10/04 13:41:03 henoheno Exp $
5 // RSS plugin: Publishing RSS of RecentChanges
7 // Usage: plugin=rss[&ver=[0.91|1.0|2.0]] (Default: 0.91)
10 // RSS 0.9, 1.0 : RSS means 'RDF Site Summary'
11 // RSS 0.91, 0.92 : RSS means 'Rich Site Summary'
12 // RSS 2.0 : RSS means 'Really Simple Syndication' (born from RSS 0.92)
14 function plugin_rss_action()
16 global $vars, $rss_max, $page_title, $whatsnew, $trackback;
18 $version = isset($vars['ver']) ? $vars['ver'] : '';
20 case '': $version = '0.91'; break; // Default
21 case '1': $version = '1.0'; break; // Sugar
22 case '2': $version = '2.0'; break; // Sugar
23 case '0.91': /* FALLTHROUGH */
24 case '1.0' : /* FALLTHROUGH */
26 default: die('Invalid RSS version!!');
29 $recent = CACHE_DIR . 'recent.dat';
30 if (! file_exists($recent)) die('recent.dat is not found');
33 $page_title_utf8 = mb_convert_encoding($page_title, 'UTF-8', SOURCE_ENCODING);
34 $self = get_script_uri();
37 $items = $rdf_li = '';
39 // BugTrack2/106: Only variables can be passed by reference from PHP 5.0.5
40 $file_array = file($recent); // with array_splice()
42 foreach (array_splice($file_array, 0, $rss_max) as $line) {
43 list($time, $page) = explode("\t", rtrim($line));
44 $r_page = rawurlencode($page);
45 $title = mb_convert_encoding($page, 'UTF-8', SOURCE_ENCODING);
48 case '0.91': /* FALLTHROUGH */
50 $date = get_date('D, d M Y H:i:s T', $time);
51 $date = ($version == '0.91') ?
52 ' <description>' . $date . '</description>' :
53 ' <pubDate>' . $date . '</pubDate>';
57 <link>$self?$r_page</link>
65 // Add <item> into <items>
66 $rdf_li .= ' <rdf:li rdf:resource="' . $self .
67 '?' . $r_page . '" />' . "\n";
69 $date = substr_replace(get_date('Y-m-d\TH:i:sO', $time), ':', -2, 0);
72 $tb_id = md5($r_page);
73 $trackback_ping = ' <trackback:ping>' . $self .
74 '?tb_id=' . $tb_id . '</trackback:ping>';
77 <item rdf:about="$self?$r_page">
79 <link>$self?$r_page</link>
80 <dc:date>$date</dc:date>
81 <dc:identifier>$self?$r_page</dc:identifier>
91 pkwk_common_headers();
92 header('Content-type: application/xml');
93 print '<?xml version="1.0" encoding="UTF-8"?>' . "\n\n";
95 $r_whatsnew = rawurlencode($whatsnew);
98 print '<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN"' .
99 ' "http://my.netscape.com/publish/formats/rss-0.91.dtd">' . "\n";
104 <rss version="$version">
106 <title>$page_title_utf8</title>
107 <link>$self?$r_whatsnew</link>
108 <description>PukiWiki RecentChanges</description>
109 <language>$lang</language>
118 $xmlns_trackback = $trackback ?
119 ' xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"' : '';
122 xmlns:dc="http://purl.org/dc/elements/1.1/"
124 xmlns="http://purl.org/rss/1.0/"
125 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
127 <channel rdf:about="$self?$r_whatsnew">
128 <title>$page_title_utf8</title>
129 <link>$self?$r_whatsnew</link>
130 <description>PukiWiki RecentChanges</description>