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"); set_time_limit(30); $photo = photo::create($parent, $path, basename($path), basename($path)); log::success("content", t("Added photo"), html::anchor("photos/{$photo->id}", "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, Image::$allowed_types)) { $file_list[$file] = array("path" => $full_path); } } } } return $file_list; } }