diff options
-rw-r--r-- | core/models/item.php | 5 | ||||
-rw-r--r-- | modules/media_rss/controllers/media_rss.php (renamed from modules/slideshow/controllers/slideshow.php) | 31 | ||||
-rw-r--r-- | modules/media_rss/helpers/media_rss_installer.php | 33 | ||||
-rw-r--r-- | modules/media_rss/views/media.rss.php | 41 | ||||
-rw-r--r-- | modules/slideshow/views/slideshow_feed.rss.php | 20 |
5 files changed, 90 insertions, 40 deletions
diff --git a/core/models/item.php b/core/models/item.php index 485975cb..0b576d2c 100644 --- a/core/models/item.php +++ b/core/models/item.php @@ -175,6 +175,11 @@ class Item_Model extends ORM_MPTT { $real_column = substr($column, 0, strlen($column) - 5); return "<span class=\"gInPlaceEdit gEditField-{$this->id}-{$real_column}\">" . "{$this->$real_column}</span>"; + } else if ($column == "mime_type") { + if ($this->is_album() || ($mime_type = file::mime()) === false) { + $mime_type = "application/unknown"; + } + return $mime_type; } else if ($column == "owner") { // This relationship depends on an outside module, which may not be present so handle // failures gracefully. diff --git a/modules/slideshow/controllers/slideshow.php b/modules/media_rss/controllers/media_rss.php index 57553227..19a5dec3 100644 --- a/modules/slideshow/controllers/slideshow.php +++ b/modules/media_rss/controllers/media_rss.php @@ -17,34 +17,25 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ -class Slideshow_Controller extends REST_Controller { +class Media_rss_Controller extends REST_Controller { // @todo this should be retrieved from the slideshow configuration public static $LIMIT = 10; public function _show($parent, $output_format) { - $offset = $this->input->get("offset", 0); - $children = array(); - // @todo actually fill the array - switch ($output_format) { - case "json": - print json_encode($children); - break; - case "rss": - $view = new View("slideshow_feed.rss"); - $view->item = $parent; - $view->children = $children; - break; - default: + if ($output_format != "mediarss") { throw new Exception("@todo Unsupported output format: $output_format"); } + + $offset = $this->input->get("offset", 0); + + $view = new View("slideshow_feed.rss"); + $view->item = $parent; + + // @todo create a descendent child method on ORM_MTPP to get all of the children + $view->children = $children; } - /** - * Override the get_output_format. We want to restrict the check to only $_GET and set the - * default to rss. - * @return string - */ protected function get_output_format() { - return $this->input->get("_format", "rss"); + return "mediarss"; } }
\ No newline at end of file diff --git a/modules/media_rss/helpers/media_rss_installer.php b/modules/media_rss/helpers/media_rss_installer.php new file mode 100644 index 00000000..481adf8a --- /dev/null +++ b/modules/media_rss/helpers/media_rss_installer.php @@ -0,0 +1,33 @@ +<?php defined("SYSPATH") or die("No direct script access."); +/** + * Gallery - a web based photo album viewer and editor + * Copyright (C) 2000-2008 Bharat Mediratta + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. + */ +class media_rss_installer { + public static function install() { + Kohana::log("debug", "media_rss_installer::install"); + $version = module::get_version("media_rss"); + Kohana::log("debug", "version: $version"); + if ($version == 0) { + module::set_version("media_rss", 1); + } + } + + public static function uninstall() { + module::delete("media_rss"); + } +} diff --git a/modules/media_rss/views/media.rss.php b/modules/media_rss/views/media.rss.php new file mode 100644 index 00000000..26f6b1fe --- /dev/null +++ b/modules/media_rss/views/media.rss.php @@ -0,0 +1,41 @@ +<? defined("SYSPATH") or die("No direct script access."); ?> +<? 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> + <title><?= $item->title ?></title> + <link><?= url::site("media_rss/$item->id") ?></link> + <description><?= $item->description ?></description> + <language>en-us</language> + <? if (isset($prevOffset)): ?> + <atom:link rel="previous" href="<?= url::site("media_rss/$item->id?offset=\"$prevOffset\"") ?>" /> + <? endif; ?> + <? if (isset($nextOffset)): ?> + <atom:link rel="next" href="href="<?= url::site("media_rss/$item->id?offset=\"$nextOffset\"") ?>"/> + <? endif; ?> + <? + // @todo do we want to add an upload date to the items table? + $date = date("D, dd M Y H:i:s e"); + ?> + <pubDate><?= $date ?></pubDate> + <lastBuildDate><?= $date ?></lastBuildDate> + <? foreach ($children as $child): ?> + <item> + <title type="html"><?= $child->title ?></title> + <link></link> + <guid><?= $child->id ?></guid> + <description type="html"><?= $child->description ?></description> + <media:thumbnail url="<?= $child->thumbnail_url() ?>" + type="<?= $child->mine_type ?>" + height="<?= $child->thumbnail_height ?>" + width="<?= $child->thumbnail_width ?>" + /> + <media:content url="<?= $child->resize_url() ?>" + type="<?= $child->mine_type ?>" + height="<?= $child->resize_height ?>" + width="<?= $child->resize_width ?>" + /> + </item> + <? endforeach; ?> + </channel> +</rss> diff --git a/modules/slideshow/views/slideshow_feed.rss.php b/modules/slideshow/views/slideshow_feed.rss.php deleted file mode 100644 index b07bf5fe..00000000 --- a/modules/slideshow/views/slideshow_feed.rss.php +++ /dev/null @@ -1,20 +0,0 @@ -<? defined("SYSPATH") or die("No direct script access."); ?> -<? echo "<?xml version=\"1.0\" ?>"; ?> -<rss version="2.0"> - <channel> - <title><?= $item->title ?></title> - <link><?= url::site("slideshow/$item->id") ?></link> - <description><?= $item->description ?></description> - <language>en-us</language> - <? - // @todo do we want to add an upload date to the items table? - $date = date("D, dd M Y H:i:s e"); - ?> - <pubDate><?= $date ?></pubDate> - <lastBuildDate><?= $date ?></lastBuildDate> - <? foreach ($children as $child): ?> - <image> - </image> - <? endforeach; ?> - </channel> -</rss>
\ No newline at end of file |