From c42cc57977a66c0a2f811880d935c68507cb3e62 Mon Sep 17 00:00:00 2001 From: velocity37 Date: Sun, 23 Sep 2012 14:33:23 -0700 Subject: [PATCH] Bulk_add_csv: add custom thumbnail support --- ext/bulk_add_csv/main.php | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/ext/bulk_add_csv/main.php b/ext/bulk_add_csv/main.php index cc5f4df7..d9516d74 100644 --- a/ext/bulk_add_csv/main.php +++ b/ext/bulk_add_csv/main.php @@ -6,11 +6,11 @@ * Description: Bulk add server-side images with metadata from CSV file * Documentation: * Modification of "Bulk Add" by Shish.

- * Adds images from a CSV with the four following values:
- * "/path/to/image.jpg","space separated tags","source","rating (s, q, or e)"
- * e.g. "/tmp/cat.png","shish oekaki","shimmie.shishnet.org/v2/post/view/3051","s"

- * Any value but the first may be omitted, but there must be four values per line.
- * e.g. "/why/not/try/bulk_add.jpg","","",""

+ * Adds images from a CSV with the five following values:
+ * "/path/to/image.jpg","spaced tags","source","rating s/q/e","/path/thumbnail.jpg"
+ * e.g. "/tmp/cat.png","shish oekaki","shimmie.shishnet.org","s","tmp/custom.jpg"

+ * Any value but the first may be omitted, but there must be five values per line.
+ * e.g. "/why/not/try/bulk_add.jpg","","","",""

* Useful for importing tagged images without having to do database manipulation.
*

Note: requires "Admin Controls" and optionally "Image Ratings" to be enabled

* @@ -53,7 +53,7 @@ class BulkAddCSV extends Extension { /** * Generate the necessary DataUploadEvent for a given image and tags. */ - private function add_image($tmpname, $filename, $tags, $source, $rating) { + private function add_image($tmpname, $filename, $tags, $source, $rating, $thumbfile) { assert(file_exists($tmpname)); $pathinfo = pathinfo($filename); @@ -68,9 +68,14 @@ class BulkAddCSV extends Extension { send_event($event); if($event->image_id == -1) { throw new UploadException("File type not recognised"); - } elseif(class_exists("RatingSetEvent") && in_array($rating, array("s", "q", "e"))) { - $ratingevent = new RatingSetEvent(Image::by_id($event->image_id), $rating); - send_event($ratingevent); + } else { + if(class_exists("RatingSetEvent") && in_array($rating, array("s", "q", "e"))) { + $ratingevent = new RatingSetEvent(Image::by_id($event->image_id), $rating); + send_event($ratingevent); + } + if (file_exists($thumbfile)) { + copy($thumbfile, warehouse_path("thumbs", $event->hash)); + } } } @@ -91,7 +96,7 @@ class BulkAddCSV extends Extension { $csvhandle = fopen($csvfile, "r"); while (($csvdata = fgetcsv($csvhandle, 0, ",")) !== FALSE) { - if(count($csvdata) != 4) { + if(count($csvdata) != 5) { if(strlen($list) > 0) { $this->theme->add_status("Error", "Encountered malformed data. Line $linenum $csvfile
".$list); fclose($csvhandle); @@ -106,12 +111,13 @@ class BulkAddCSV extends Extension { $tags = trim($csvdata[1]); $source = $csvdata[2]; $rating = $csvdata[3]; + $thumbfile = $csvdata[4]; $pathinfo = pathinfo($fullpath); $shortpath = $pathinfo["basename"]; $list .= "
".html_escape("$shortpath (".str_replace(" ", ", ", $tags).")... "); if (file_exists($csvdata[0]) && is_file($csvdata[0])) { try{ - $this->add_image($fullpath, $pathinfo["basename"], $tags, $source, $rating); + $this->add_image($fullpath, $pathinfo["basename"], $tags, $source, $rating, $thumbfile); $list .= "ok\n"; } catch(Exception $ex) {