From c2fa42cf6cf6a2742b2a40ef7fc46f95f7a734f3 Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Sat, 21 Feb 2009 02:28:19 +0000 Subject: Implementation of local import module. Still need work on better status messages. --- modules/local_import/controllers/local_import.php | 96 +++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 modules/local_import/controllers/local_import.php (limited to 'modules/local_import/controllers/local_import.php') diff --git a/modules/local_import/controllers/local_import.php b/modules/local_import/controllers/local_import.php new file mode 100644 index 00000000..a841434f --- /dev/null +++ b/modules/local_import/controllers/local_import.php @@ -0,0 +1,96 @@ +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; + } +} \ No newline at end of file -- cgit v1.2.3