$recent_st_array['mtime']) { readfile($rss_cache); exit; } } ob_start(); $lang = LANG; $page_title_utf8 = mb_convert_encoding($page_title, 'UTF-8', SOURCE_ENCODING); $self = get_script_uri(); // Creating $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 (file_head($recent, $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 = get_date('D, d M Y H:i:s +0900', $time); $date = ($version == '0.91') ? '' : ' ' . $date . '' . "\n$self?$r_page"; $retval = plugin_rss2_htmlrender($page); if ($retval['body'] != '' && $title != 'RecentDeleted') { $desc = ""; if ($version == '2.0') { $desc = ""; $desc = mb_convert_encoding($desc, 'UTF-8', SOURCE_ENCODING); } $items .= << $title $self?$r_page $desc $date EOD; } break; case '1.0': $retval = plugin_rss2_htmlrender($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; } // Create RSS cache $fp = fopen($rss_cache, 'w'); $rss = ob_get_contents(); fwrite($fp, $rss); fclose($fp); ob_end_flush(); exit; } // rendering function plugin_rss2_htmlrender($page) { global $script, $_title, $vars; global $read_auth, $read_auth_pages; $matches = array(); // Avoid read_auth pages if ($read_auth) { foreach ($read_auth_pages as $key=>$val) { if (preg_match($key, $page, $matches)) { return array('msg'=>$_title, 'body'=>$page); } } } $postdata = @join('', get_source($page)); if ($postdata) { $vars['page'] = $page; $dynamic_regex = "/(#counter|#online|#contents|#popular\(.*\)|#recent\(.*\)|&counter(\(.*\))?;|&lastmod.*(\(.*\))?;|&online(\(.*\))?;)/"; $postdata = preg_replace($dynamic_regex, "", $postdata); $postdata = make_str_rules($postdata); $postdata = explode("\n", $postdata); $postdata = drop_submit(convert_html($postdata)); $dagger_regex = "/(]*>†<\/a>)/"; $postdata = preg_replace($dagger_regex, "", $postdata); $title_regex = "\s+title=\"[^\"]*\""; while (preg_match("/()/", $postdata, $matches)) { $search = $matches[0]; $replace = $matches[1] . $matches[3]; $postdata = str_replace($search, $replace, $postdata); } $uri_regex = "/(href|src)=\"((?!https?:\/\/)[^\"]*)\"/"; while (preg_match($uri_regex, $postdata, $matches)) { $search = $matches[0]; $replace = $matches[1] . "=\"" . $script . $matches[2] . "\""; $postdata = str_replace($search, $replace, $postdata); } $omit_regex = "/\s+(id|class|style)=\"[^\"]*\"/"; $postdata = preg_replace($omit_regex, "", $postdata); } else { return array('msg'=>$_title, 'body'=>''); } return array('msg'=>$_title, 'body'=>$postdata); } ?>