Wiki source code of Modified Pages RSS Feed

Last modified by XWiki Admin on 26.05.2017 08:17

Show last authors
1 {{velocity}}
2 ## TODO: Rewrite this page completely so that it uses the same source as the Activity Stream Macro
3 ## Backward compatibility redirect, if the RSS feed is called without the outputSyntax query argument, force it.
4 #if (("$!request.xpage" == 'plain' || "$!request.xpage" == 'rdf') && "$!request.outputSyntax" != 'plain')
5 $response.sendRedirect($xwiki.getURL($doc.fullName, 'view', 'xpage=plain&outputSyntax=plain'))
6 #end
7 #if ("$!request.xpage" == 'plain' && "$!request.outputSyntax" == 'plain')
8 $response.setContentType('application/rss+xml')
9 ## ======================
10 ## Compute Query to find documents
11 ## ======================
12 #if("$!{request.tag}" != '')
13 ## RSS feed for documents tagged with $request.tag
14 #set ($query = 'from doc.object(XWiki.TagClass) as tag where (')
15 #foreach ($tag in $request.getParameterValues('tag'))
16 #set ($query = "$query :tag${foreach.count} member of tag.tags")
17 #if ($foreach.hasNext)
18 #set ($query = "$query OR ")
19 #end
20 #end
21 #set ($query = "$query) AND ")
22 #else
23 #set ($query = 'where')
24 #end
25 #if("$!{request.space}" == '')
26 ## RSS feed for the whole wiki
27 #set ($query = "$query 1=1")
28 #else
29 ## RSS feed for spaces
30 #set ($query = "$query (")
31 #foreach ($space in $request.getParameterValues('space'))
32 #set ($query = "$query doc.space=:space${foreach.count} OR doc.space LIKE :space_nested${foreach.count}")
33 #if ($foreach.hasNext)
34 #set ($query = "$query OR ")
35 #end
36 #end
37 #set ($query = "$query)")
38 #end
39 #set ($query = "$query order by doc.date desc")
40 ## ==============
41 ## Bind Query parameters
42 ## ==============
43 ## Bind query parameters depending on the passed query string parameters
44 #set ($queryObject = $services.query.xwql($query).addFilter('hidden/document').addFilter('currentlanguage').setLimit(20).setOffset(0))
45 #if("$!{request.tag}" != '')
46 #foreach ($tag in $request.getParameterValues('tag'))
47 #set ($queryObject = $queryObject.bindValue("tag${foreach.count}", $tag))
48 #end
49 #end
50 #if("$!{request.space}" != '')
51 #foreach ($space in $request.getParameterValues('space'))
52 #set ($queryObject = $queryObject.bindValue("space${foreach.count}", $space))
53 #set ($queryObject = $queryObject.bindValue("space_nested${foreach.count}", "${space}.%"))
54 #end
55 #end
56 ## ================
57 ## Compute feed description
58 ## ================
59 ## 4 cases to handle: no spaces and tags specified, only spaces specified, only tags specified and spaces and tags specified
60 #if ("$!{request.space}" != '')
61 #if ("$!{request.tag}" != '')
62 #set ($description = $services.localization.render('activity.rss.feed.tagsAndSpaces.description', [$stringtool.join($request.getParameterValues('tag'), ','), $stringtool.join($request.getParameterValues('space'), ',')]))
63 #else
64 #set ($description = $services.localization.render('activity.rss.feed.spaces.description', [$stringtool.join($request.getParameterValues('space'), ',')]))
65 #end
66 #else
67 #if ("$!{request.tag}" != '')
68 #set ($description = $services.localization.render('activity.rss.feed.tags.description', [$stringtool.join($request.getParameterValues('tag'), ',')]))
69 #else
70 #set ($description = $services.localization.render('activity.rss.feed.description'))
71 #end
72 #end
73 ## =====================
74 ## Execute query and generate feed
75 ## =====================
76 #set ($feed = $xwiki.feed.getWebFeed($queryObject.execute()))
77 #set ($feedURI = $xwiki.getDocument('Main.WebHome').getExternalURL('view'))
78 #set ($discard = $feed.setLink($feedURI))
79 #set ($discard = $feed.setUri($feedURI))
80 #set ($discard = $feed.setAuthor('XWiki'))
81 #set ($discard = $feed.setTitle($services.localization.render('activity.rss.feed.description')))
82 #set ($discard = $feed.setDescription($description))
83 #set ($discard = $feed.setLanguage("$xcontext.locale"))
84 #set ($discard = $feed.setCopyright($xwiki.getXWikiPreference('copyright')))
85 $xwiki.feed.getFeedOutput($feed, $xwiki.getXWikiPreference('feed_type', 'rss_2.0'))
86 #end
87 {{/velocity}}