2 // PukiWiki - Yet another WikiWikiWeb clone
4 // Copyright 2003-2021 PukiWiki Development Team
5 // License: GPL v2 or (at your option) any later version
7 // RSS plugin: Publishing RSS of RecentChanges
9 // Usage: plugin=rss[&ver=[0.91|1.0|2.0]] (Default: 0.91)
12 // RSS 0.9, 1.0 : RSS means 'RDF Site Summary'
13 // RSS 0.91, 0.92 : RSS means 'Rich Site Summary'
14 // RSS 2.0 : RSS means 'Really Simple Syndication' (born from RSS 0.92)
16 function plugin_rss_action()
18 global $vars, $rss_max, $page_title, $whatsnew;
20 $version = isset($vars['ver']) ? $vars['ver'] : '';
22 case '': $version = '0.91'; break; // Default
23 case '1': $version = '1.0'; break; // Sugar
24 case '2': $version = '2.0'; break; // Sugar
25 case '0.91': /* FALLTHROUGH */
26 case '1.0' : /* FALLTHROUGH */
28 default: die('Invalid RSS version!!');
31 $recent = CACHE_DIR . 'recent.dat';
32 if (! file_exists($recent)) die('recent.dat is not found');
35 $page_title_utf8 = mb_convert_encoding($page_title, 'UTF-8', SOURCE_ENCODING);
38 $items = $rdf_li = '';
40 foreach (file_head($recent, $rss_max) as $line) {
41 list($time, $page) = explode("\t", rtrim($line));
42 $r_page_link = htmlsc(get_page_uri($page, PKWK_URI_ABSOLUTE));
43 $title = mb_convert_encoding($page, 'UTF-8', SOURCE_ENCODING);
46 case '0.91': /* FALLTHROUGH */
48 $date = get_date('D, d M Y H:i:s T', $time);
49 $date = ($version == '0.91') ?
50 ' <description>' . $date . '</description>' :
51 ' <pubDate>' . $date . '</pubDate>';
55 <link>$r_page_link</link>
63 // Add <item> into <items>
64 $rdf_li .= ' <rdf:li rdf:resource="' . $r_page_link .
67 $date = substr_replace(get_date('Y-m-d\TH:i:sO', $time), ':', -2, 0);
69 <item rdf:about="$r_page_link">
71 <link>$r_page_link</link>
72 <dc:date>$date</dc:date>
73 <dc:identifier>$r_page_link</dc:identifier>
82 pkwk_common_headers();
83 header('Content-type: application/xml');
84 print '<?xml version="1.0" encoding="UTF-8"?>' . "\n\n";
86 $r_whatsnew_link = htmlsc(get_page_uri($whatsnew, PKWK_URI_ABSOLUTE));
89 print '<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN"' .
90 ' "http://my.netscape.com/publish/formats/rss-0.91.dtd">' . "\n";
95 <rss version="$version">
97 <title>$page_title_utf8</title>
98 <link>$r_whatsnew_link</link>
99 <description>PukiWiki RecentChanges</description>
100 <language>$lang</language>
111 xmlns:dc="http://purl.org/dc/elements/1.1/"
112 xmlns="http://purl.org/rss/1.0/"
113 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
115 <channel rdf:about="$r_whatsnew_link">
116 <title>$page_title_utf8</title>
117 <link>$r_whatsnew_link</link>
118 <description>PukiWiki RecentChanges</description>