From baff63b70b2b686b14f468a26180081ad505ce9a Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Sun, 22 Feb 2009 05:21:44 +0000 Subject: Very basic movie support. You can upload a FLV file, we use ffmpeg to extract a thumbnail out of it and if you click through we show it using flowplayer. --- core/controllers/movies.php | 103 +++++++++++++++++++++++++++++++++++ core/controllers/simple_uploader.php | 16 +++--- 2 files changed, 112 insertions(+), 7 deletions(-) create mode 100644 core/controllers/movies.php (limited to 'core/controllers') diff --git a/core/controllers/movies.php b/core/controllers/movies.php new file mode 100644 index 00000000..c84ce8d6 --- /dev/null +++ b/core/controllers/movies.php @@ -0,0 +1,103 @@ +viewable() + ->where("parent_id", $photo->parent_id) + ->where("id >", $photo->id) + ->orderby("id", "ASC") + ->find(); + $previous_item = ORM::factory("item") + ->viewable() + ->where("parent_id", $photo->parent_id) + ->where("id <", $photo->id) + ->orderby("id", "DESC") + ->find(); + $position = ORM::factory("item") + ->viewable() + ->where("parent_id", $photo->parent_id) + ->where("id <=", $photo->id) + ->count_all(); + + $template = new Theme_View("page.html", "photo"); + $template->set_global("item", $photo); + $template->set_global("children", array()); + $template->set_global("children_count", $photo->children_count()); + $template->set_global("parents", $photo->parents()); + $template->set_global("next_item", $next_item->loaded ? $next_item : null); + $template->set_global("previous_item", $previous_item->loaded ? $previous_item : null); + $template->set_global("sibling_count", $photo->parent()->children_count()); + $template->set_global("position", $position); + + $template->content = new View("movie.html"); + + $photo->view_count++; + $photo->save(); + + print $template; + } + + /** + * @see REST_Controller::_update($resource) + */ + public function _update($photo) { + access::required("edit", $photo); + + $form = photo::get_edit_form($photo); + if ($form->validate()) { + // @todo implement changing the name. This is not trivial, we have + // to check for conflicts and rename the album itself, etc. Needs an + // api method. + $orig = clone $photo; + $photo->title = $form->edit_photo->title->value; + $photo->description = $form->edit_photo->description->value; + $photo->save(); + + module::event("item_updated", $orig, $photo); + + log::success("content", "Updated photo", "id\">view"); + message::success(t("Saved photo %photo_title", array("photo_title" => $photo->title))); + + print json_encode( + array("result" => "success", + "location" => url::site("photos/$photo->id"))); + } else { + print json_encode( + array("result" => "error", + "form" => $form->__toString())); + } + } + + /** + * @see REST_Controller::_form_edit($resource) + */ + public function _form_edit($photo) { + access::required("edit", $photo); + print photo::get_edit_form($photo); + } +} diff --git a/core/controllers/simple_uploader.php b/core/controllers/simple_uploader.php index dca56201..e163a023 100644 --- a/core/controllers/simple_uploader.php +++ b/core/controllers/simple_uploader.php @@ -46,16 +46,18 @@ class Simple_Uploader_Controller extends Controller { access::verify_csrf(); $file_validation = new Validation($_FILES); - $file_validation->add_rules("file", "upload::valid", "upload::type[gif,jpg,png]"); + $file_validation->add_rules("file", "upload::valid", "upload::type[gif,jpg,png,flv]"); if ($file_validation->validate()) { $temp_filename = upload::save("file"); $title = substr(basename($temp_filename), 10); // Skip unique identifier Kohana adds - $photo = photo::create( - $album, - $temp_filename, - $title, - $title); - log::success("content", "Added a photo", html::anchor("photos/$photo->id", "view photo")); + $path_info = pathinfo($temp_filename); + if ($path_info["extension"] == "flv") { + $movie = movie::create($album, $temp_filename, $title, $title); + log::success("content", "Added a movie", html::anchor("movies/$movie->id", "view movie")); + } else { + $photo = photo::create($album, $temp_filename, $title, $title); + log::success("content", "Added a photo", html::anchor("photos/$photo->id", "view photo")); + } } } -- cgit v1.2.3