From 0f784f0a8d6f337f5ebd8b90b58f437398114854 Mon Sep 17 00:00:00 2001 From: Shish Date: Mon, 3 Aug 2009 10:19:33 +0100 Subject: [PATCH] bulk upload / zip upload betterness --- contrib/bulk_add/main.php | 51 ++++++++++++++++----------------- contrib/handle_archive/main.php | 27 +++++++++-------- 2 files changed, 40 insertions(+), 38 deletions(-) diff --git a/contrib/bulk_add/main.php b/contrib/bulk_add/main.php index 0d9b94f6..3eb33d03 100644 --- a/contrib/bulk_add/main.php +++ b/contrib/bulk_add/main.php @@ -33,21 +33,21 @@ class BulkAdd extends SimpleExtension { private function add_image($tmpname, $filename, $tags) { - if(file_exists($tmpname)) { - global $user; - $pathinfo = pathinfo($filename); - if(!array_key_exists('extension', $pathinfo)) return; - $metadata['filename'] = $pathinfo['basename']; - $metadata['extension'] = $pathinfo['extension']; - $metadata['tags'] = $tags; - $metadata['source'] = null; - try { - $event = new DataUploadEvent($user, $tmpname, $metadata); - send_event($event); - } - catch(Exception $ex) { - return $ex->getMessage(); - } + assert(file_exists($tmpname)); + + global $user; + $pathinfo = pathinfo($filename); + if(!array_key_exists('extension', $pathinfo)) { + throw new UploadException("File has no extension"); + } + $metadata['filename'] = $pathinfo['basename']; + $metadata['extension'] = $pathinfo['extension']; + $metadata['tags'] = $tags; + $metadata['source'] = null; + $event = new DataUploadEvent($user, $tmpname, $metadata); + send_event($event); + if($event->image_id == -1) { + throw new UploadException("File type not recognised"); } } @@ -61,30 +61,29 @@ class BulkAdd extends SimpleExtension { $list = ""; - foreach(glob("$base/$subdir/*") as $filename) { - $fullpath = "$base/$subdir/$filename"; + foreach(glob("$base/$subdir/*") as $fullpath) { + $fullpath = str_replace("//", "/", $fullpath); + $shortpath = str_replace($base, "", $fullpath); if(is_link($fullpath)) { // ignore } else if(is_dir($fullpath)) { - if($filename[0] != ".") { - $this->add_dir($base, "$subdir/$filename"); - } + $this->add_dir($base, str_replace($base, "", $fullpath)); } else { - $tmpfile = $fullpath; + $pathinfo = pathinfo($fullpath); $tags = $subdir; $tags = str_replace("/", " ", $tags); $tags = str_replace("__", " ", $tags); $tags = trim($tags); - $list .= "
".html_escape("$subdir/$filename (".str_replace(" ", ", ", $tags).")... "); - $error = $this->add_image($tmpfile, $filename, $tags); - if(is_null($error)) { + $list .= "
".html_escape("$shortpath (".str_replace(" ", ", ", $tags).")... "); + try{ + $this->add_image($fullpath, $pathinfo["basename"], $tags); $list .= "ok\n"; } - else { - $list .= "failed:
$error\n"; + catch(Exception $ex) { + $list .= "failed:
". $ex->getMessage(); } } } diff --git a/contrib/handle_archive/main.php b/contrib/handle_archive/main.php index 0d5b1b81..c3725a6b 100644 --- a/contrib/handle_archive/main.php +++ b/contrib/handle_archive/main.php @@ -30,11 +30,11 @@ class ArchiveFileHandler extends SimpleExtension { $tmp = sys_get_temp_dir(); $tmpdir = "$tmp/shimmie-archive-{$event->hash}"; $cmd = $config->get_string('archive_extract_command'); - $cmd = str_replace('%f', $event->tmpfile); - $cmd = str_replace('%d', $tmpdir); - system($cmd); + $cmd = str_replace('%f', $event->tmpname, $cmd); + $cmd = str_replace('%d', $tmpdir, $cmd); + exec($cmd); $this->add_dir($tmpdir); - unlink($tmpdir); + deltree($tmpdir); } } @@ -46,20 +46,23 @@ class ArchiveFileHandler extends SimpleExtension { // copied from bulk add extension private function add_image($tmpname, $filename, $tags) { - if(file_exists($tmpname)) { + assert(file_exists($tmpname)); + + try { global $user; $pathinfo = pathinfo($filename); + if(!array_key_exists('extension', $pathinfo)) { + throw new UploadException("File has no extension"); + } $metadata['filename'] = $pathinfo['basename']; $metadata['extension'] = $pathinfo['extension']; $metadata['tags'] = $tags; $metadata['source'] = null; - try { - $event = new DataUploadEvent($user, $tmpname, $metadata); - send_event($event); - } - catch(UploadException $ex) { - return $ex->getMessage(); - } + $event = new DataUploadEvent($user, $tmpname, $metadata); + send_event($event); + } + catch(UploadException $ex) { + return $ex->getMessage(); } }