RSS API
Moodle 2.3
Overview
The RSS API is a core system in Moodle to allow you to create secure RSS feeds of data in your module.
These RSS feeds can then be syndicated by other websites or aggregated by a feed reader.
Any Moodle module can generate RSS feeds to allow secure access to it's data.
File Locations
The primary functions for the RSS API is located in lib/rsslib.php
Additional functions and usage examples can be found in the following files:
- blog/rsslib.php
- mod/data/rsslib.php
- mod/forum/rsslib.php
- mod/glossary/rsslib.php
Examples
Below you will find examples on how to use the RSS functions within your own modules.
Creating an RSS feed
This example shows how you can create the content of an RSS Feed.
require_once("lib/rsslib.php");
//create some entries (these would normally be pulled from the database table of the module you are creating an rss feed for).
for ($i=1; $i <= 10; $i++) {
$item = NULL;
$item->author = 'Joe Blogs';
$item->title = 'RSS Entry Number '.$i;
$item->pubdate = time();
$item->link = $CFG->wwwroot.'/entry/index.php?entryid='.$i;
$item->description = 'Summary of the RSS Entry';
$items[] = $item;
}
$content = rss_add_items($items); // Convert the array of items into the XML Content
$title = 'RSS Feed';
$description = 'General RSS Feed full of ENTRIES';
$header = rss_standard_header($title, $CFG->wwwroot.'/entry/index.php', $description);
$footer = rss_standard_footer();
$rssdata = $header.$content.$footer; // This is the complete RSS FEED
Caching an RSS feed
Following on from the previous example:
$filename = $CFG->cachedir .'/rss/entry/user/0/rss.xml';
rss_save_file('entry', $filename, $rssdata, true);
Linking to a RSS feed
This example shows how you can output a link to an RSS feed. (Example taken from blocks/news_items/block_news_items.php)
$cm = $modinfo->instances['forum'][$forum->id];
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
$forum = forum_get_course_forum($this->page->course->id, 'news');
$userid = (!isloggedin()) ? 0 : $USER->id;
$tooltiptext = get_string('rsssubscriberssposts','forum');
echo rss_get_link($context->id, $userid, 'mod_forum', $forum->id, $tooltiptext);