From 1272d0837eeefb96af69bbb24a93b05cc818837f Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Thu, 11 Jun 2009 00:44:34 -0700 Subject: Changed rss_theme::sidebar_blocks to fire the event "request_feed_links" to allow modules to contribute rss feed links to the rss sidebar block. Ticket #388. --- modules/rss/helpers/rss_theme.php | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'modules/rss/helpers/rss_theme.php') diff --git a/modules/rss/helpers/rss_theme.php b/modules/rss/helpers/rss_theme.php index 54bba210..185d9d45 100644 --- a/modules/rss/helpers/rss_theme.php +++ b/modules/rss/helpers/rss_theme.php @@ -43,13 +43,12 @@ class rss_theme_Core { // @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; + $event_data = new stdClass(); + $event_data->feeds = array(); + $event_data->item = $theme->item(); + + module::event("request_feed_links", $event_data); + $block->content->feeds = $event_data->feeds; return $block; } } -- cgit v1.2.3 From 4877f968b4d92c69e2fbecef6c6b1666b8af67f8 Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Thu, 11 Jun 2009 00:48:32 -0700 Subject: Rearrange the code in sidebar_block to logically group the code for readability. --- modules/rss/helpers/rss_theme.php | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'modules/rss/helpers/rss_theme.php') diff --git a/modules/rss/helpers/rss_theme.php b/modules/rss/helpers/rss_theme.php index 185d9d45..b433c66a 100644 --- a/modules/rss/helpers/rss_theme.php +++ b/modules/rss/helpers/rss_theme.php @@ -36,19 +36,17 @@ class rss_theme_Core { return; } - $block = new Block(); - $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. $event_data = new stdClass(); $event_data->feeds = array(); $event_data->item = $theme->item(); - module::event("request_feed_links", $event_data); + + $block = new Block(); + $block->css_id = "gRss"; + $block->title = t("Available RSS Feeds"); + $block->content = new View("rss_block.html"); $block->content->feeds = $event_data->feeds; + return $block; } } -- cgit v1.2.3 From e5793b5b2680cba14dda6bd0242b262baa0d00a6 Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Fri, 12 Jun 2009 06:58:53 -0700 Subject: Change the "request_feed_links" eventing handling so that individual modules provide the part of the url (the suffix) that they are interested in and the rss module will format the rest of the url. --- modules/comment/helpers/comment_event.php | 4 ++-- modules/gallery/helpers/gallery_event.php | 2 +- modules/rss/helpers/rss_theme.php | 4 +++- 3 files changed, 6 insertions(+), 4 deletions(-) (limited to 'modules/rss/helpers/rss_theme.php') diff --git a/modules/comment/helpers/comment_event.php b/modules/comment/helpers/comment_event.php index 6370e27d..fdf3a96f 100644 --- a/modules/comment/helpers/comment_event.php +++ b/modules/comment/helpers/comment_event.php @@ -23,8 +23,8 @@ class comment_event_Core { } static function request_feed_links($event_data) { - $event_data->feeds[t("All new comments")] = url::site("rss/comments"); + $event_data->feeds[t("All new comments")] = "comments"; $event_data->feeds[sprintf(t("Comments on %s"), $event_data->item->title)] = - url::site("rss/comments/{$event_data->item->id}"); + "comments/{$event_data->item->id}"; } } diff --git a/modules/gallery/helpers/gallery_event.php b/modules/gallery/helpers/gallery_event.php index b652d9a4..b1e9332d 100644 --- a/modules/gallery/helpers/gallery_event.php +++ b/modules/gallery/helpers/gallery_event.php @@ -45,6 +45,6 @@ class gallery_event_Core { } static function request_feed_links($event_data) { - $event_data->feeds[t("New photos or movies")] = url::site("rss/updates"); + $event_data->feeds[t("New photos or movies")] = url::site("updates"); } } diff --git a/modules/rss/helpers/rss_theme.php b/modules/rss/helpers/rss_theme.php index b433c66a..2e4e141b 100644 --- a/modules/rss/helpers/rss_theme.php +++ b/modules/rss/helpers/rss_theme.php @@ -40,7 +40,9 @@ class rss_theme_Core { $event_data->feeds = array(); $event_data->item = $theme->item(); module::event("request_feed_links", $event_data); - + foreach ($event_data->feeds as $key => $feed) { + $event_data->feeds[$key] = url::site("rss/$feed"); + } $block = new Block(); $block->css_id = "gRss"; $block->title = t("Available RSS Feeds"); -- cgit v1.2.3 From d4d145a44302a1438df7416e3046457bc9582806 Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Fri, 12 Jun 2009 07:46:42 -0700 Subject: Change from an event driven model to a call driven model similiar to the task api. --- modules/comment/helpers/comment_event.php | 6 ------ modules/comment/helpers/comment_rss.php | 30 ++++++++++++++++++++++++++++++ modules/gallery/helpers/gallery_event.php | 4 ---- modules/gallery/helpers/gallery_rss.php | 27 +++++++++++++++++++++++++++ modules/rss/helpers/rss.php | 21 +++++++++++++++++++++ modules/rss/helpers/rss_theme.php | 9 +-------- 6 files changed, 79 insertions(+), 18 deletions(-) create mode 100644 modules/comment/helpers/comment_rss.php create mode 100644 modules/gallery/helpers/gallery_rss.php (limited to 'modules/rss/helpers/rss_theme.php') diff --git a/modules/comment/helpers/comment_event.php b/modules/comment/helpers/comment_event.php index fdf3a96f..a3beb27a 100644 --- a/modules/comment/helpers/comment_event.php +++ b/modules/comment/helpers/comment_event.php @@ -21,10 +21,4 @@ class comment_event_Core { static function item_before_delete($item) { Database::instance()->delete("comments", array("item_id" => $item->id)); } - - static function request_feed_links($event_data) { - $event_data->feeds[t("All new comments")] = "comments"; - $event_data->feeds[sprintf(t("Comments on %s"), $event_data->item->title)] = - "comments/{$event_data->item->id}"; - } } diff --git a/modules/comment/helpers/comment_rss.php b/modules/comment/helpers/comment_rss.php new file mode 100644 index 00000000..9ae28726 --- /dev/null +++ b/modules/comment/helpers/comment_rss.php @@ -0,0 +1,30 @@ + t("All new comments"), + "sidebar" => true, + "uri" => "comments"), + array("description" => sprintf(t("Comments on %s"), $item->title), + "sidebar" => true, + "uri" => "comments/{$item->id}")); + } +} \ No newline at end of file diff --git a/modules/gallery/helpers/gallery_event.php b/modules/gallery/helpers/gallery_event.php index b1e9332d..aa11b7c0 100644 --- a/modules/gallery/helpers/gallery_event.php +++ b/modules/gallery/helpers/gallery_event.php @@ -43,8 +43,4 @@ class gallery_event_Core { module::clear_var("gallery", "choose_default_tookit"); } } - - static function request_feed_links($event_data) { - $event_data->feeds[t("New photos or movies")] = url::site("updates"); - } } diff --git a/modules/gallery/helpers/gallery_rss.php b/modules/gallery/helpers/gallery_rss.php new file mode 100644 index 00000000..0b87b1b1 --- /dev/null +++ b/modules/gallery/helpers/gallery_rss.php @@ -0,0 +1,27 @@ + t("New photos or movies"), + "sidebar" => true, + "uri" => "updates")); + } +} diff --git a/modules/rss/helpers/rss.php b/modules/rss/helpers/rss.php index b320aeae..b0e7b30f 100644 --- a/modules/rss/helpers/rss.php +++ b/modules/rss/helpers/rss.php @@ -27,4 +27,25 @@ 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; + } + } \ No newline at end of file diff --git a/modules/rss/helpers/rss_theme.php b/modules/rss/helpers/rss_theme.php index 2e4e141b..b82133bd 100644 --- a/modules/rss/helpers/rss_theme.php +++ b/modules/rss/helpers/rss_theme.php @@ -36,18 +36,11 @@ class rss_theme_Core { return; } - $event_data = new stdClass(); - $event_data->feeds = array(); - $event_data->item = $theme->item(); - module::event("request_feed_links", $event_data); - foreach ($event_data->feeds as $key => $feed) { - $event_data->feeds[$key] = url::site("rss/$feed"); - } $block = new Block(); $block->css_id = "gRss"; $block->title = t("Available RSS Feeds"); $block->content = new View("rss_block.html"); - $block->content->feeds = $event_data->feeds; + $block->content->feeds = rss::get_feeds($theme->item()); return $block; } -- cgit v1.2.3