summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/media_rss/controllers/media_rss.php30
-rw-r--r--modules/media_rss/views/feed.mrss.php33
2 files changed, 36 insertions, 27 deletions
diff --git a/modules/media_rss/controllers/media_rss.php b/modules/media_rss/controllers/media_rss.php
index 68025259..10d9741b 100644
--- a/modules/media_rss/controllers/media_rss.php
+++ b/modules/media_rss/controllers/media_rss.php
@@ -18,26 +18,36 @@
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
class Media_RSS_Controller extends Controller {
- public static $LIMIT = 10;
+ public static $page_size = 10;
+
public function feed($id) {
$item = ORM::factory("item", $id)->find();
if (!$item->loaded) {
return Kohana::show_404();
}
- $view = new View("feed.mrss");
- $view->item = $item;
+ $page = $this->input->get("page", 1);
+ if ($page < 1) {
+ url::redirect("media_rss/feed/{$item->id}");
+ }
- $offset = $this->input->get("offset", 0);
- $view->children = $item->decendents(Media_RSS_Controller::$LIMIT, $offset, "photo");
+ $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 (!empty($offset)) {
- $view->prevOffset = $offset - Media_RSS_Controller::$LIMIT;
- }
- if ($view->children->count() >= Media_RSS_Controller::$LIMIT) {
- $view->nextOffset = $offset + Media_RSS_Controller::$LIMIT;
+ if ($page > $max_pages) {
+ url::redirect("media_rss/feed/{$item->id}?page=$max_pages");
}
+ $view = new View("feed.mrss");
+ $view->item = $item;
+ $view->children = $children;
+ $view->previous_page = $page > 1 ? $page - 1 : null;
+ $view->next_page = $page < $max_pages ? $page + 1 : null;
+
+ // @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");
+
header("Content-type: application/rss+xml");
print $view;
}
diff --git a/modules/media_rss/views/feed.mrss.php b/modules/media_rss/views/feed.mrss.php
index 8c88b8a2..b3f44a17 100644
--- a/modules/media_rss/views/feed.mrss.php
+++ b/modules/media_rss/views/feed.mrss.php
@@ -1,5 +1,5 @@
<? defined("SYSPATH") or die("No direct script access."); ?>
-<? echo "<?xml version=\"1.0\" ?>"; ?>
+<? echo "<?xml version=\"1.0\" ?>" ?>
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/"
xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
@@ -7,21 +7,20 @@
<link><?= url::abs_site("albums/{$item->id}") ?></link>
<description><?= $item->description ?></description>
<language>en-us</language>
- <atom:link rel="self" href="<?= url::abs_site("media_rss/feed/{$item->id}") ?>" type="application/rss+xml" />
- <? if (isset($prevOffset)): ?>
- <atom:link rel="previous" href="<?= url::abs_site("media_rss/feed/{$item->id}?offset={$prevOffset}") ?>"
- type="application/rss+xml" />
- <? endif; ?>
- <? if (isset($nextOffset)): ?>
- <atom:link rel="next" href="<?= url::abs_site("media_rss/feed/{$item->id}?offset={$nextOffset}") ?>"
- type="application/rss+xml" />
- <? endif; ?>
- <?
- // @todo do we want to add an upload date to the items table?
- $date = date("D, d M Y H:i:s T");
- ?>
- <pubDate><?= $date ?></pubDate>
- <lastBuildDate><?= $date ?></lastBuildDate>
+ <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" />
+ <? endif ?>
+ <? if ($next_page): ?>
+ <atom:link rel="next"
+ href="<?= url::abs_site("media_rss/feed/{$item->id}?page=$next_page") ?>"
+ type="application/rss+xml" />
+ <? endif ?>
+ <pubDate><?= $pub_date ?></pubDate>
+ <lastBuildDate><?= $pub_date ?></lastBuildDate>
<? foreach ($children as $child): ?>
<item>
<title><?= $child->title ?></title>
@@ -46,6 +45,6 @@
/>
</media:group>
</item>
- <? endforeach; ?>
+ <? endforeach ?>
</channel>
</rss>