From 68f43bcf6b19ba5d21836c5f2346d3ef1ad66f3f Mon Sep 17 00:00:00 2001 From: Tero Kivinen Date: Fri, 26 Oct 2018 04:26:42 +0300 Subject: [PATCH] Implemented only_new option for RSS feed, so you can request RSS feed that contains only new files. --- feed.php | 4 ++++ inc/changelog.php | 5 +++++ inc/common.php | 1 + 3 files changed, 10 insertions(+) diff --git a/feed.php b/feed.php index 2731ddb03..85ddd417d 100644 --- a/feed.php +++ b/feed.php @@ -133,6 +133,8 @@ function rss_parseOptions() { 'items' => array('int', 'num', $conf['recent']), // Boolean, only used in rc mode 'show_minor' => array('bool', 'minor', false), + // Boolean, only used in rc mode + 'only_new' => array('bool', 'onlynewpages', false), // String, only used in list mode 'sort' => array('str', 'sort', 'natural'), // String, only used in search mode @@ -146,6 +148,7 @@ function rss_parseOptions() { $opt['items'] = max(0, (int) $opt['items']); $opt['show_minor'] = (bool) $opt['show_minor']; + $opt['only_new'] = (bool) $opt['only_new']; $opt['sort'] = valid_input_set('sort', array('default' => 'natural', 'date'), $opt); $opt['guardmail'] = ($conf['mailguard'] != '' && $conf['mailguard'] != 'none'); @@ -469,6 +472,7 @@ function rssRecentChanges($opt) { $flags = 0; if(!$conf['rss_show_deleted']) $flags += RECENTS_SKIP_DELETED; if(!$opt['show_minor']) $flags += RECENTS_SKIP_MINORS; + if($opt['only_new']) $flags += RECENTS_ONLY_NEW_PAGES; if($opt['content_type'] == 'media' && $conf['mediarevisions']) $flags += RECENTS_MEDIA_CHANGES; if($opt['content_type'] == 'both' && $conf['mediarevisions']) $flags += RECENTS_MEDIA_PAGES_MIXED; diff --git a/inc/changelog.php b/inc/changelog.php index 652016cb8..d9b1576d0 100644 --- a/inc/changelog.php +++ b/inc/changelog.php @@ -205,6 +205,7 @@ function addMediaLogEntry( * * RECENTS_SKIP_DELETED - don't include deleted pages * RECENTS_SKIP_MINORS - don't include minor changes + * RECENTS_ONLY_NEW_PAGES - only include new created pages * RECENTS_SKIP_SUBSPACES - don't include subspaces * RECENTS_MEDIA_CHANGES - return media changes instead of page changes * RECENTS_MEDIA_PAGES_MIXED - return both media changes and page changes @@ -299,6 +300,7 @@ function getRecents($first,$num,$ns='',$flags=0){ * * RECENTS_SKIP_DELETED - don't include deleted pages * RECENTS_SKIP_MINORS - don't include minor changes + * RECENTS_ONLY_NEW_PAGES - only include new created pages * RECENTS_SKIP_SUBSPACES - don't include subspaces * RECENTS_MEDIA_CHANGES - return media changes instead of page changes * @@ -373,6 +375,9 @@ function _handleRecent($line,$ns,$flags,&$seen){ // skip seen ones if(isset($seen[$recent['id']])) return false; + // skip changes, of only new pages are requested + if($recent['type']!==DOKU_CHANGE_TYPE_CREATE && ($flags & RECENTS_ONLY_NEW_PAGES)) return false; + // skip minors if($recent['type']===DOKU_CHANGE_TYPE_MINOR_EDIT && ($flags & RECENTS_SKIP_MINORS)) return false; diff --git a/inc/common.php b/inc/common.php index c462934b2..bcf0edb69 100644 --- a/inc/common.php +++ b/inc/common.php @@ -22,6 +22,7 @@ define('RECENTS_SKIP_MINORS', 4); define('RECENTS_SKIP_SUBSPACES', 8); define('RECENTS_MEDIA_CHANGES', 16); define('RECENTS_MEDIA_PAGES_MIXED', 32); +define('RECENTS_ONLY_NEW_PAGES', 64); /** * Wrapper around htmlspecialchars()