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) {