summaryrefslogtreecommitdiff
path: root/modules/rss
diff options
context:
space:
mode:
authorBharat Mediratta <bharat@menalto.com>2009-06-14 15:58:02 -0700
committerBharat Mediratta <bharat@menalto.com>2009-06-14 15:58:02 -0700
commit47bc53eb5c328254d431caebf8acfd2636969bb4 (patch)
tree26ecfe8531fd043941cda81673af961a27e8cc85 /modules/rss
parentdc3ed06cd76ebc7b949865be789fb26590d63ed0 (diff)
parentf18fb934427ce09896b51d49520b04fba0f1dd44 (diff)
Merge branch 'master' of git@github.com:gallery/gallery3
Diffstat (limited to 'modules/rss')
-rw-r--r--modules/rss/controllers/rss.php21
-rw-r--r--modules/rss/helpers/rss.php19
-rw-r--r--modules/rss/helpers/rss_theme.php14
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;
}