diff options
Diffstat (limited to 'feed.php')
-rw-r--r-- | feed.php | 42 |
1 files changed, 24 insertions, 18 deletions
@@ -15,13 +15,19 @@ require_once(DOKU_INC.'inc/init.php'); //close session session_write_close(); +//feed disabled? +if(!actionOK('rss')) { + http_status(404); + echo '<error>RSS feed is disabled.</error>'; + exit; +} + // get params $opt = rss_parseOptions(); // the feed is dynamic - we need a cache for each combo // (but most people just use the default feed so it's still effective) -$cache = getCacheName(join('', array_values($opt)).$_SERVER['REMOTE_USER'], '.feed'); -$key = join('', array_values($opt)).$_SERVER['REMOTE_USER']; +$key = join('', array_values($opt)).'$'.$_SERVER['REMOTE_USER'].'$'.$_SERVER['HTTP_HOST'].$_SERVER['SERVER_PORT']; $cache = new cache($key, '.feed'); // prepare cache depends @@ -135,12 +141,10 @@ function rss_parseOptions() { $opt['guardmail'] = ($conf['mailguard'] != '' && $conf['mailguard'] != 'none'); - $type = valid_input_set( - 'type', array( - 'rss', 'rss2', 'atom', 'atom1', 'rss1', - 'default' => $conf['rss_type'] - ), - $_REQUEST + $type = $INPUT->valid( + 'type', + array( 'rss', 'rss2', 'atom', 'atom1', 'rss1'), + $conf['rss_type'] ); switch($type) { case 'rss': @@ -182,7 +186,7 @@ function rss_parseOptions() { function rss_buildItems(&$rss, &$data, $opt) { global $conf; global $lang; - /* @var auth_basic $auth */ + /* @var DokuWiki_Auth_Plugin $auth */ global $auth; $eventData = array( @@ -293,18 +297,19 @@ function rss_buildItems(&$rss, &$data, $opt) { case 'diff': case 'htmldiff': if($ditem['media']) { - $revs = getRevisions($id, 0, 1, 8192, true); + $medialog = new MediaChangeLog($id); + $revs = $medialog->getRevisions(0, 1); $rev = $revs[0]; $src_r = ''; $src_l = ''; if($size = media_image_preview_size($id, false, new JpegMeta(mediaFN($id)), 300)) { - $more = 'w='.$size[0].'&h='.$size[1].'t='.@filemtime(mediaFN($id)); - $src_r = ml($id, $more); + $more = 'w='.$size[0].'&h='.$size[1].'&t='.@filemtime(mediaFN($id)); + $src_r = ml($id, $more, true, '&', true); } if($rev && $size = media_image_preview_size($id, $rev, new JpegMeta(mediaFN($id, $rev)), 300)) { $more = 'rev='.$rev.'&w='.$size[0].'&h='.$size[1]; - $src_l = ml($id, $more); + $src_l = ml($id, $more, true, '&', true); } $content = ''; if($src_r) { @@ -318,7 +323,8 @@ function rss_buildItems(&$rss, &$data, $opt) { } else { require_once(DOKU_INC.'inc/DifferenceEngine.php'); - $revs = getRevisions($id, 0, 1); + $pagelog = new PageChangeLog($id); + $revs = $pagelog->getRevisions(0, 1); $rev = $revs[0]; if($rev) { @@ -347,8 +353,8 @@ function rss_buildItems(&$rss, &$data, $opt) { case 'html': if($ditem['media']) { if($size = media_image_preview_size($id, false, new JpegMeta(mediaFN($id)))) { - $more = 'w='.$size[0].'&h='.$size[1].'t='.@filemtime(mediaFN($id)); - $src = ml($id, $more); + $more = 'w='.$size[0].'&h='.$size[1].'&t='.@filemtime(mediaFN($id)); + $src = ml($id, $more, true, '&', true); $content = '<img src="'.$src.'" alt="'.$id.'" />'; } else { $content = ''; @@ -378,8 +384,8 @@ function rss_buildItems(&$rss, &$data, $opt) { default: if($ditem['media']) { if($size = media_image_preview_size($id, false, new JpegMeta(mediaFN($id)))) { - $more = 'w='.$size[0].'&h='.$size[1].'t='.@filemtime(mediaFN($id)); - $src = ml($id, $more); + $more = 'w='.$size[0].'&h='.$size[1].'&t='.@filemtime(mediaFN($id)); + $src = ml($id, $more, true, '&', true); $content = '<img src="'.$src.'" alt="'.$id.'" />'; } else { $content = ''; |