summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/media_rss/controllers/media_rss.php67
-rw-r--r--modules/media_rss/helpers/media_rss_block.php10
-rw-r--r--modules/media_rss/views/feed.mrss.php21
3 files changed, 77 insertions, 21 deletions
diff --git a/modules/media_rss/controllers/media_rss.php b/modules/media_rss/controllers/media_rss.php
index 1ec90766..336501ca 100644
--- a/modules/media_rss/controllers/media_rss.php
+++ b/modules/media_rss/controllers/media_rss.php
@@ -20,7 +20,7 @@
class Media_RSS_Controller extends Controller {
public static $page_size = 10;
- public function feed($id) {
+ public function albums($id) {
$item = ORM::factory("item", $id)->find();
if (!$item->loaded) {
return Kohana::show_404();
@@ -28,22 +28,75 @@ class Media_RSS_Controller extends Controller {
$page = $this->input->get("page", 1);
if ($page < 1) {
- url::redirect("media_rss/feed/{$item->id}");
+ url::redirect("media_rss/photos/{$item->id}");
}
$children = $item->descendants(self::$page_size, ($page - 1) * self::$page_size, "photo");
- $count = $item->descendants_count("photo");
$max_pages = ceil($item->descendants_count("photo") / self::$page_size);
if ($page > $max_pages) {
- url::redirect("media_rss/feed/{$item->id}?page=$max_pages");
+ url::redirect("media_rss/photos/{$item->id}?page=$max_pages");
}
$view = new View("feed.mrss");
- $view->item = $item;
+ $view->title = $item->title;
+ $view->link = url::abs_site("albums/{$item->id}");
+ $view->description = $item->description;
+ $view->feed_link = url::abs_site("media_rss/albums/{$item->id}");
$view->children = $children;
- $view->previous_page = $page > 1 ? $page - 1 : null;
- $view->next_page = $page < $max_pages ? $page + 1 : null;
+
+ if ($page > 1) {
+ $previous_page = $page - 1;
+ $view->previous_page_link =
+ url::abs_site("media_rss/albums/{$item->id}?page={$previous_page}");
+ }
+
+ if ($page < $max_pages) {
+ $next_page = $page + 1;
+ $view->next_page_link = url::abs_site("media_rss/albums/{$item->id}?page={$next_page}");
+ }
+
+ // @todo do we want to add an upload date to the items table?
+ $view->pub_date = date("D, d M Y H:i:s T");
+
+ rest::http_content_type(rest::RSS);
+ print $view;
+ }
+
+ public function tags($id) {
+ $tag = ORM::factory("tag", $id)->find();
+ if (!$tag->loaded) {
+ return Kohana::show_404();
+ }
+
+ $page = $this->input->get("page", 1);
+ if ($page < 1) {
+ url::redirect("media_rss/tags/{$tag->id}");
+ }
+
+ $children = $tag->items(self::$page_size, ($page - 1) * self::$page_size, "photo");
+ $max_pages = ceil($tag->count / self::$page_size);
+
+ if ($page > $max_pages) {
+ url::redirect("media_rss/tags/{$tag->id}?page=$max_pages");
+ }
+
+ $view = new View("feed.mrss");
+ $view->title = $tag->name;
+ $view->link = url::abs_site("tags/{$tag->id}");
+ $view->description = sprintf(_("Photos related to %s"), $tag->name);
+ $view->feed_link = url::abs_site("media_rss/tags/{$tag->id}");
+ $view->children = $children;
+
+ if ($page > 1) {
+ $previous_page = $page - 1;
+ $view->previous_page_link = url::abs_site("media_rss/tags/{$tag->id}?page={$previous_page}");
+ }
+
+ if ($page < $max_pages) {
+ $next_page = $page + 1;
+ $view->next_page_link = url::abs_site("media_rss/tags/{$tag->id}?page={$next_page}");
+ }
// @todo do we want to add an upload date to the items table?
$view->pub_date = date("D, d M Y H:i:s T");
diff --git a/modules/media_rss/helpers/media_rss_block.php b/modules/media_rss/helpers/media_rss_block.php
index 2e9cd866..e19ceef7 100644
--- a/modules/media_rss/helpers/media_rss_block.php
+++ b/modules/media_rss/helpers/media_rss_block.php
@@ -20,8 +20,16 @@
class media_rss_block_Core {
public static function head($theme) {
if ($theme->item()) {
- $url = url::site("media_rss/feed/{$theme->item()->id}");
+ if ($theme->item()->type == "album") {
+ $url = url::site("media_rss/albums/{$theme->item()->id}");
+ } else {
+ $url = url::site("media_rss/albums/{$theme->item()->parent_id}");
+ }
+ } else if ($theme->tag()) {
+ $url = url::site("media_rss/tags/{$theme->tag()->id}");
+ }
+ if (!empty($url)) {
return "<link rel=\"alternate\" type=\"" . rest::RSS . "\" href=\"$url\" />";
}
}
diff --git a/modules/media_rss/views/feed.mrss.php b/modules/media_rss/views/feed.mrss.php
index b3f44a17..8af189be 100644
--- a/modules/media_rss/views/feed.mrss.php
+++ b/modules/media_rss/views/feed.mrss.php
@@ -3,21 +3,16 @@
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/"
xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
- <title><?= $item->title ?></title>
- <link><?= url::abs_site("albums/{$item->id}") ?></link>
- <description><?= $item->description ?></description>
+ <title><? $title ?></title>
+ <link><?= $link ?></link>
+ <description><?= $description ?></description>
<language>en-us</language>
- <atom:link rel="self" href="<?= url::abs_site("media_rss/feed/{$item->id}") ?>"
- type="application/rss+xml" />
- <? if ($previous_page): ?>
- <atom:link rel="previous"
- href="<?= url::abs_site("media_rss/feed/{$item->id}?page=$previous_page") ?>"
- type="application/rss+xml" />
+ <atom:link rel="self" href="<?= $feed_link ?>" type="application/rss+xmlml" />
+ <? if (!empty($previous_page_link)): ?>
+ <atom:link rel="previous" href="<?= $previous_page_link ?>" type="application/rss+xml" />
<? endif ?>
- <? if ($next_page): ?>
- <atom:link rel="next"
- href="<?= url::abs_site("media_rss/feed/{$item->id}?page=$next_page") ?>"
- type="application/rss+xml" />
+ <? if (!empty($next_page_link)): ?>
+ <atom:link rel="next" href="<?= $next_page_link ?>" type="application/rss+xml" />
<? endif ?>
<pubDate><?= $pub_date ?></pubDate>
<lastBuildDate><?= $pub_date ?></lastBuildDate>