action = url::site("local_import/add/$id"); $view->hidden = array("csrf" => access::csrf_token(), "base_url" => url::base(true)); $view->parents = $item->parents(); $view->album_title = $item->title; $tree = new View("local_import_tree.html"); $tree->data = array(); $tree->uid = "tree_$id"; foreach (array_keys($paths) as $path) { $tree->data[$path] = array("path" => $path, "is_dir" => true); } $view->tree = $tree->__toString(); print $view; } public function children() { access::verify_csrf(); $path = $this->input->post("path"); if (!is_readable($path)) { kohana::show_404(); } $tree = new View("local_import_tree.html"); $tree->data = $this->_get_children($path); $tree->uid = "tree_" . md5($path); print $tree; } function add($id) { access::verify_csrf(); $parent = ORM::factory("item", $id); access::can("local_import", $item); if (!$parent->loaded) { throw new Exception("@todo BAD_ALBUM"); } $path = $this->input->post("path"); $pathinfo = pathinfo($path); set_time_limit(30); if ($pathinfo["extension"] == "flv") { $movie = movie::create($parent, $path, basename($path), basename($path)); log::success("content", t("Added a movie"), html::anchor("movies/{$movie->id}", t("view movie"))); message::success(t("Added movie %movie_title", array("movie_title" => $movie->title))); } else { $photo = photo::create($parent, $path, basename($path), basename($path)); log::success("content", t("Added a photo"), html::anchor("photos/{$photo->id}", t("view photo"))); message::success(t("Added photo %photo_title", array("photo_title" => $photo->title))); } } private function _get_children($path) { $file_list = array(); $files = scandir($path); foreach ($files as $file) { if ($file[0] != ".") { $full_path = "$path/$file"; if (is_dir($full_path)) { $file_list[$file] = array("path" => $full_path, "is_dir" => true); } else { $extension = strtolower(substr(strrchr($file, '.'), 1)); // Make sure the file is readable if (is_readable($full_path) && in_array($extension, array(IMAGETYPE_GIF, IMAGETYPE_JPEG, "jpg", IMAGETYPE_PNG, "flv"))) { $file_list[$file] = array("path" => $full_path); } } } } return $file_list; } }