diff options
Diffstat (limited to 'modules/rss')
-rw-r--r-- | modules/rss/controllers/rss.php | 21 | ||||
-rw-r--r-- | modules/rss/helpers/rss.php | 19 | ||||
-rw-r--r-- | modules/rss/helpers/rss_theme.php | 14 |
3 files changed, 20 insertions, 34 deletions
diff --git a/modules/rss/controllers/rss.php b/modules/rss/controllers/rss.php index 164803cb..80803dfd 100644 --- a/modules/rss/controllers/rss.php +++ b/modules/rss/controllers/rss.php @@ -20,21 +20,24 @@ class Rss_Controller extends Controller { public static $page_size = 30; - public function __call($method, $arguments) { - $id = empty($arguments) ? null : $arguments[0]; + public function feed($method, $id=null) { $page = $this->input->get("page", 1); - $feed_uri = "rss/$method" . (empty($id) ? "" : "/$id"); + $feed_uri = "rss/feed/$method" . (empty($id) ? "" : "/$id"); if ($page < 1) { url::redirect($feed_uri); } - $feed = rss::process_feed($method, ($page - 1) * self::$page_size, self::$page_size, $id); - if ($feed->max_pages && $page > $feed->max_pages) { - url::redirect("$feed_uri?page={$feed->max_pages}"); + $feed = rss::feed_data($method, ($page - 1) * self::$page_size, self::$page_size, $id); + $max_pages = $feed["max_pages"]; + if ($max_pages && $page > $max_pages) { + url::redirect("$feed_uri?page={$max_pages}"); } + unset($feed["max_pages"]); - $view = new View(empty($feed->view) ? "feed.mrss" : $feed->view); - foreach ($feed->data as $field => $value) { + $view = new View(empty($feed["view"]) ? "feed.mrss" : $feed["view"]); + unset($feed["view"]); + + foreach ($feed as $field => $value) { $view->$field = $value; } $view->feed_link = url::abs_site($feed_uri); @@ -44,7 +47,7 @@ class Rss_Controller extends Controller { $view->previous_page_link = url::site("$feed_uri?page={$previous_page}"); } - if ($page < $feed->max_pages) { + if ($page < $max_pages) { $next_page = $page + 1; $view->next_page_link = url::site("$feed_uri?page={$next_page}"); } diff --git a/modules/rss/helpers/rss.php b/modules/rss/helpers/rss.php index 1d30425f..403ee225 100644 --- a/modules/rss/helpers/rss.php +++ b/modules/rss/helpers/rss.php @@ -19,28 +19,23 @@ */ class rss_Core { - static function item_feed($item) { - $id = $item->is_album() ? $item->id : $item->parent_id; - return url::site("rss/albums/$id"); - } - - static function tag_feed($tag) { - return url::site("rss/tags/$tag->id}"); + static function feed_link($uri) { + $url = url::site("rss/feed/$uri"); + return "<link rel=\"alternate\" type=\"" . rest::RSS . "\" href=\"$url\" />"; } /** * Get all available rss feeds */ - static function get_feeds($item, $sidebar_only=true) { + static function available_feeds($item) { $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; + if ($feed["type"] == "block") { + $feeds[$feed["description"]] = url::site("rss/feed/{$feed['uri']}"); } - $feeds[$feed["description"]] = url::site("rss/{$feed['uri']}"); } } } @@ -48,7 +43,7 @@ class rss_Core { return $feeds; } - static function process_feed($feed, $offset, $limit, $id) { + static function feed_data($feed, $offset, $limit, $id) { foreach (module::active() as $module) { $class_name = "{$module->name}_rss"; if (method_exists($class_name, $feed)) { diff --git a/modules/rss/helpers/rss_theme.php b/modules/rss/helpers/rss_theme.php index b82133bd..52d988bf 100644 --- a/modules/rss/helpers/rss_theme.php +++ b/modules/rss/helpers/rss_theme.php @@ -18,18 +18,6 @@ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ class rss_theme_Core { - static function head($theme) { - if ($theme->item()) { - $url = rss::item_feed($theme->item()); - } else if ($theme->tag()) { - $url = rss::tag_feed($theme->tag()); - } - - if (!empty($url)) { - return "<link rel=\"alternate\" type=\"" . rest::RSS . "\" href=\"$url\" />"; - } - } - static function sidebar_blocks($theme) { // @todo this needs to be data driven if (!$theme->item()) { @@ -40,7 +28,7 @@ class rss_theme_Core { $block->css_id = "gRss"; $block->title = t("Available RSS Feeds"); $block->content = new View("rss_block.html"); - $block->content->feeds = rss::get_feeds($theme->item()); + $block->content->feeds = rss::available_feeds($theme->item()); return $block; } |