X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=tools%2Fupload-cover-image.pl;h=ed1fc5ef985c24c581cde732b4e7ea5968a71810;hb=84f53799d7574693e1dd520230a2bba9ab439703;hp=ac9661ed6ba86a30ce32f98a4b032c36533e0ca4;hpb=b4fb5d4095665f1543da7bd714584524e6311f8b;p=koha_gimpoz diff --git a/tools/upload-cover-image.pl b/tools/upload-cover-image.pl index ac9661ed6b..ed1fc5ef98 100755 --- a/tools/upload-cover-image.pl +++ b/tools/upload-cover-image.pl @@ -13,12 +13,13 @@ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR # A PARTICULAR PURPOSE. See the GNU General Public License for more details. # -# You should have received a copy of the GNU General Public License along with -# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place, -# Suite 330, Boston, MA 02111-1307 USA +# You should have received a copy of the GNU General Public License along +# with Koha; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # # # + =head1 NAME upload-cover-image.pl - Script for handling uploading of both single and bulk coverimages and importing them into the database. @@ -36,7 +37,6 @@ resized, maintaining aspect ratio. =cut - use strict; use warnings; @@ -53,106 +53,130 @@ my $debug = 1; my $input = new CGI; -my $fileID=$input->param('uploadedfileid'); -my ($template, $loggedinuser, $cookie) - = get_template_and_user({template_name => "tools/upload-images.tmpl", - query => $input, - type => "intranet", - authnotrequired => 0, - flagsrequired => { tools => 'upload_cover_images'}, - debug => 0, - }); - -my $filetype = $input->param('filetype'); -my $biblionumber = $input->param('biblionumber'); -my $uploadfilename = $input->param('uploadfile'); -my $replace = $input->param('replace'); -my $op = $input->param('op'); -my %cookies = parse CGI::Cookie($cookie); -my $sessionID = $cookies{'CGISESSID'}->value; +my $fileID = $input->param('uploadedfileid'); +my ( $template, $loggedinuser, $cookie ) = get_template_and_user( + { + template_name => "tools/upload-images.tmpl", + query => $input, + type => "intranet", + authnotrequired => 0, + flagsrequired => { tools => 'upload_cover_images' }, + debug => 0, + } +); + +my $filetype = $input->param('filetype'); +my $biblionumber = $input->param('biblionumber'); +my $uploadfilename = $input->param('uploadfile'); +my $replace = !C4::Context->preference("AllowMultipleCovers") + || $input->param('replace'); +my $op = $input->param('op'); +my %cookies = parse CGI::Cookie($cookie); +my $sessionID = $cookies{'CGISESSID'}->value; my $error; -$template->{VARS}->{'filetype'} = $filetype; +$template->{VARS}->{'filetype'} = $filetype; $template->{VARS}->{'biblionumber'} = $biblionumber; my $total = 0; if ($fileID) { - my $uploaded_file = C4::UploadedFile->fetch($sessionID, $fileID); - if ($filetype eq 'image') { - my $fh = $uploaded_file->fh(); + my $uploaded_file = C4::UploadedFile->fetch( $sessionID, $fileID ); + if ( $filetype eq 'image' ) { + my $fh = $uploaded_file->fh(); my $srcimage = GD::Image->new($fh); - if (defined $srcimage) { - my $dberror = PutImage($biblionumber, $srcimage, $replace); + if ( defined $srcimage ) { + my $dberror = PutImage( $biblionumber, $srcimage, $replace ); if ($dberror) { $error = 'DBERR'; - } else { + } + else { $total = 1; } - } else { + } + else { $error = 'OPNIMG'; } undef $srcimage; - } else { + } + else { my $filename = $uploaded_file->filename(); - my $dirname = File::Temp::tempdir( CLEANUP => 1); - unless (system("unzip", $filename, '-d', $dirname) == 0) { + my $dirname = File::Temp::tempdir( CLEANUP => 1 ); + unless ( system( "unzip", $filename, '-d', $dirname ) == 0 ) { $error = 'UZIPFAIL'; - } else { + } + else { my @directories; push @directories, "$dirname"; - foreach my $recursive_dir ( @directories ) { + foreach my $recursive_dir (@directories) { my $dir; opendir $dir, $recursive_dir; while ( my $entry = readdir $dir ) { - push @directories, "$recursive_dir/$entry" if ( -d "$recursive_dir/$entry" and $entry !~ /^[._]/ ); + push @directories, "$recursive_dir/$entry" + if ( -d "$recursive_dir/$entry" and $entry !~ /^[._]/ ); } closedir $dir; } - foreach my $dir ( @directories ) { + foreach my $dir (@directories) { my $file; if ( -e "$dir/idlink.txt" ) { $file = "$dir/idlink.txt"; - } elsif ( -e "$dir/datalink.txt" ) { + } + elsif ( -e "$dir/datalink.txt" ) { $file = "$dir/datalink.txt"; - } else { + } + else { next; } - if (open (FILE, $file)) { - while (my $line = ) { - my $delim = ($line =~ /\t/) ? "\t" : ($line =~ /,/) ? "," : ""; + if ( open( FILE, $file ) ) { + while ( my $line = ) { + my $delim = + ( $line =~ /\t/ ) ? "\t" + : ( $line =~ /,/ ) ? "," + : ""; + #$debug and warn "Delimeter is \'$delim\'"; unless ( $delim eq "," || $delim eq "\t" ) { - warn "Unrecognized or missing field delimeter. Please verify that you are using either a ',' or a 'tab'"; + warn +"Unrecognized or missing field delimeter. Please verify that you are using either a ',' or a 'tab'"; $error = 'DELERR'; - } else { - ($biblionumber, $filename) = split $delim, $line; - $biblionumber =~ s/[\"\r\n]//g; # remove offensive characters - $filename =~ s/[\"\r\n\s]//g; + } + else { + ( $biblionumber, $filename ) = split $delim, $line, 2; + $biblionumber =~ + s/[\"\r\n]//g; # remove offensive characters + $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) { + if ( defined $srcimage ) { $total++; - my $dberror = PutImage($biblionumber, $srcimage, $replace); + my $dberror = + PutImage( $biblionumber, $srcimage, + $replace ); if ($dberror) { $error = 'DBERR'; } - } else { + } + else { $error = 'OPNIMG'; } undef $srcimage; } } close(FILE); - } else { + } + else { $error = 'OPNLINK'; } } } } - $template->{VARS}->{'total'} = $total; - $template->{VARS}->{'uploadimage'} = 1; - $template->{VARS}->{'error'} = $error; + $template->{VARS}->{'total'} = $total; + $template->{VARS}->{'uploadimage'} = 1; + $template->{VARS}->{'error'} = $error; $template->{VARS}->{'biblionumber'} = $biblionumber; }