From: Dobrica Pavlinusic Date: Sat, 14 Apr 2012 09:39:20 +0000 (+0200) Subject: Bug 7961 - Local cover images should support CSV link files X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=commitdiff_plain;h=84f53799d7574693e1dd520230a2bba9ab439703;hp=5c32a9f811d8506f9230be60e2410320141f786e;p=koha_gimpoz Bug 7961 - Local cover images should support CSV link files Corrent code doesn't have support for filenames which contain spaces or commans which breaks CSV files saved from spreadsheet similar to: 12345, "conver image, with spaces.jpg" This patch tweaks file parsing a bit. We are always splitting line to only two values (to support commas as part of filename) and removing spaces only on beginning and end of filename (to cover space after comma in CSV example above while preserving spaces in filename). With this change only invalid character in picture filename left are quotes (") which are commonly used to quote strings with spaces. Also added is simple debug warn which displays number of cover image uploaded, biblionumber and filename which is very useful when uploading huge zip files with covers, because progress can be monitored in log. Test scenario: 1. collect pictures with spaces and commas in name 2. dump file list into CSV file and add biblio number as first column 3. create zip with CSV file and pictures 4. verify that all pictures got uploaded and linked to biblio records --- diff --git a/tools/upload-cover-image.pl b/tools/upload-cover-image.pl index 7552e2813a..ed1fc5ef98 100755 --- a/tools/upload-cover-image.pl +++ b/tools/upload-cover-image.pl @@ -143,10 +143,13 @@ if ($fileID) { $error = 'DELERR'; } else { - ( $biblionumber, $filename ) = split $delim, $line; + ( $biblionumber, $filename ) = split $delim, $line, 2; $biblionumber =~ s/[\"\r\n]//g; # remove offensive characters - $filename =~ s/[\"\r\n\s]//g; + $filename =~ s/[\"\r\n]//g; + $filename =~ s/^\s+//; + $filename =~ s/\s+$//; + warn "## $total cover image biblionumber: $biblionumber file: $filename\n"; my $srcimage = GD::Image->new("$dir/$filename"); if ( defined $srcimage ) { $total++;