diff options
| author | Bharat Mediratta <bharat@menalto.com> | 2008-11-28 01:20:17 +0000 | 
|---|---|---|
| committer | Bharat Mediratta <bharat@menalto.com> | 2008-11-28 01:20:17 +0000 | 
| commit | fd519082e1164bd3a92e541ad969c6151050f966 (patch) | |
| tree | 816be663053468bfabe6e06d08a95c7101cda6dd /modules | |
| parent | 18412bb14eca2e22c03895fa81a7749665700aca (diff) | |
Add a media_rss feed for tag views.
When visiting a photo, show the feed for the parent album.
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/media_rss/controllers/media_rss.php | 67 | ||||
| -rw-r--r-- | modules/media_rss/helpers/media_rss_block.php | 10 | ||||
| -rw-r--r-- | modules/media_rss/views/feed.mrss.php | 21 | 
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> | 
