summaryrefslogtreecommitdiff
path: root/modules/rss/helpers
diff options
context:
space:
mode:
Diffstat (limited to 'modules/rss/helpers')
-rw-r--r--modules/rss/helpers/rss.php29
-rw-r--r--modules/rss/helpers/rss_theme.php12
2 files changed, 31 insertions, 10 deletions
diff --git a/modules/rss/helpers/rss.php b/modules/rss/helpers/rss.php
index b320aeae..1d30425f 100644
--- a/modules/rss/helpers/rss.php
+++ b/modules/rss/helpers/rss.php
@@ -27,4 +27,33 @@ class rss_Core {
static function tag_feed($tag) {
return url::site("rss/tags/$tag->id}");
}
+
+ /**
+ * Get all available rss feeds
+ */
+ static function get_feeds($item, $sidebar_only=true) {
+ $feeds = array();
+ foreach (module::active() as $module) {
+ $class_name = "{$module->name}_rss";
+ if (method_exists($class_name, "available_feeds")) {
+ foreach (call_user_func(array($class_name, "available_feeds"), $item) as $feed) {
+ if ($sidebar_only && !$feed["sidebar"]) {
+ continue;
+ }
+ $feeds[$feed["description"]] = url::site("rss/{$feed['uri']}");
+ }
+ }
+ }
+
+ return $feeds;
+ }
+
+ static function process_feed($feed, $offset, $limit, $id) {
+ foreach (module::active() as $module) {
+ $class_name = "{$module->name}_rss";
+ if (method_exists($class_name, $feed)) {
+ return call_user_func(array($class_name, $feed), $offset, $limit, $id);
+ }
+ }
+ }
} \ No newline at end of file
diff --git a/modules/rss/helpers/rss_theme.php b/modules/rss/helpers/rss_theme.php
index 54bba210..b82133bd 100644
--- a/modules/rss/helpers/rss_theme.php
+++ b/modules/rss/helpers/rss_theme.php
@@ -40,16 +40,8 @@ class rss_theme_Core {
$block->css_id = "gRss";
$block->title = t("Available RSS Feeds");
$block->content = new View("rss_block.html");
- // @todo consider pushing the code for the feeds back to the associated modules
- // and create an event 'generate_rss_feeds' that modules can respond to create
- // the list of feeds.
- $feeds = array(t("New photos or movies") => url::site("rss/updates"));
- if (module::is_active("comment")) {
- $feeds[t("All new comments")] = url::site("rss/comments");
- $feeds[sprintf(t("Comments on %s"), $theme->item()->title)] =
- url::site("rss/comments/{$theme->item()->id}");
- }
- $block->content->feeds = $feeds;
+ $block->content->feeds = rss::get_feeds($theme->item());
+
return $block;
}
}