$items = $rdf_li = '';
// BugTrack2/106: Only variables can be passed by reference from PHP 5.0.5
$file_array = file($recent); // with array_splice()
foreach (array_splice($file_array, 0, $rss_max) as $line) {
list($time, $page) = explode("\t", rtrim($line));
$r_page = rawurlencode($page);
$title = mb_convert_encoding($page, 'UTF-8', SOURCE_ENCODING);
switch ($version) {
case '0.91': /* FALLTHROUGH */
case '2.0':
$date = get_date('D, d M Y H:i:s T', $time);
$date = ($version == '0.91') ? '' : ' ' . $date . '';
$retval = plugin_rssdiff_create($page);
if ($retval['body'] != '' && $title != 'RecentDeleted') {
$desc = "";
$desc = mb_convert_encoding($desc, 'UTF-8', SOURCE_ENCODING);
$items .= <<
$title
$self?$r_page
$desc
$date
EOD;
}
break;
case '1.0':
$retval = plugin_rssdiff_create($page);
// Add - into
if ($retval['body'] != '' && $title != 'RecentDeleted') {
$rdf_li .= ' ' . "\n";
$date = substr_replace(get_date('Y-m-d\TH:i:sO', $time), ':', -2, 0);
$trackback_ping = '';
if ($trackback) {
$tb_id = md5($r_page);
$trackback_ping = ' ' . $self .
'?tb_id=' . $tb_id . '';
}
$desc = "";
$desc = mb_convert_encoding($desc, 'UTF-8', SOURCE_ENCODING);
$items .= <<
$title
$self?$r_page
$desc
$date
$self?$r_page
$trackback_ping
EOD;
}
break;
}
}
// Feeding start
pkwk_common_headers();
header('Content-type: application/xml');
print '' . "\n\n";
$r_whatsnew = rawurlencode($whatsnew);
switch ($version) {
case '0.91':
print '' . "\n";
/* FALLTHROUGH */
case '2.0':
print <<
$page_title_utf8
$self?$r_whatsnew
PukiWiki RecentChanges
$lang
$items
EOD;
break;
case '1.0':
$xmlns_trackback = $trackback ?
' xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"' : '';
print <<
$page_title_utf8
$self?$r_whatsnew
PukiWiki RecentChanges
$rdf_li
$items
EOD;
break;
}
exit;
}
// 差分を生成
function plugin_rssdiff_create($page)
{
global $_title, $_title_diff;
global $read_auth, $read_auth_pages;
// Avoid read_auth pages
if ($read_auth) {
$matches = array();
foreach ($read_auth_pages as $key=>$val) {
if (preg_match($key, $page, $matches)) {
return array('msg'=>$_title, 'body'=>$page);
}
}
}
$is_page = is_page($page);
$filename = DIFF_DIR . encode($page) . '.txt';
if (file_exists($filename)) {
$diffdata = htmlspecialchars(join('', file($filename)));
$diffdata = preg_replace('/^(\-)(.*)$/m', ' $2', $diffdata);
$diffdata = preg_replace('/^(\+)(.*)$/m', ' $2', $diffdata);
$msg = "$diffdata
\n";
} else if ($is_page) {
$diffdata = trim(htmlspecialchars(join('', get_source($page))));
$msg = "$diffdata
\n";
} else {
return array('msg'=>$_title_diff, 'body'=>'');
}
return array('msg'=>$_title_diff, 'body'=>$msg);
}
?>