X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=tools%2Fupload-cover-image.pl;h=f55d8f128d9c8c12b020d2b26a80d29117cf1876;hb=0b66310580e71223bc66168a8ee3b2c8e7299b5d;hp=ff89afb1d6fe0a4a87e4a7c28df32db305322efe;hpb=8b806227c130e86712e3e5bda61520447c60671d;p=koha-ffzg.git diff --git a/tools/upload-cover-image.pl b/tools/upload-cover-image.pl index ff89afb1d6..f55d8f128d 100755 --- a/tools/upload-cover-image.pl +++ b/tools/upload-cover-image.pl @@ -43,15 +43,15 @@ use File::Temp; use CGI qw ( -utf8 ); use GD; use C4::Context; -use C4::Auth; -use C4::Output; -use C4::Images; +use C4::Auth qw( get_template_and_user ); +use C4::Output qw( output_html_with_http_headers ); +use Koha::Biblios; +use Koha::CoverImages; +use Koha::Items; use Koha::UploadedFiles; -use C4::Log; +use C4::Log qw( logaction ); -my $debug = 1; - -my $input = new CGI; +my $input = CGI->new; my $fileID = $input->param('uploadedfileid'); my ( $template, $loggedinuser, $cookie ) = get_template_and_user( @@ -59,14 +59,13 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( template_name => "tools/upload-images.tt", query => $input, type => "intranet", - authnotrequired => 0, flagsrequired => { tools => 'upload_local_cover_images' }, - debug => 0, } ); my $filetype = $input->param('filetype'); my $biblionumber = $input->param('biblionumber'); +my $itemnumber = $input->param('itemnumber'); #my $uploadfilename = $input->param('uploadfile'); # obsolete? my $replace = !C4::Context->preference("AllowMultipleCovers") || $input->param('replace'); @@ -76,8 +75,11 @@ my $sessionID = $cookies{'CGISESSID'}->value; my $error; -$template->{VARS}->{'filetype'} = $filetype; -$template->{VARS}->{'biblionumber'} = $biblionumber; +$template->param( + filetype => $filetype, + biblionumber => $biblionumber, + itemnumber => $itemnumber, +); my $total = 0; @@ -88,8 +90,26 @@ if ($fileID) { my $srcimage = GD::Image->new($fh); $fh->close if $fh; if ( defined $srcimage ) { - my $dberror = PutImage( $biblionumber, $srcimage, $replace ); - if ($dberror) { + eval { + if ( $replace ) { + if ( $biblionumber ) { + Koha::Biblios->find($biblionumber)->cover_images->delete; + } elsif ( $itemnumber ) { + Koha::Items->find($itemnumber)->cover_images->delete; + } + } + + Koha::CoverImage->new( + { + biblionumber => $biblionumber, + itemnumber => $itemnumber, + src_image => $srcimage + } + )->store; + }; + + if ($@) { + warn $@; $error = 'DBERR'; } else { @@ -132,14 +152,13 @@ if ($fileID) { else { next; } - if ( open( FILE, $file ) ) { - while ( my $line = ) { + if ( open( my $fh, '<', $file ) ) { + while ( my $line = <$fh> ) { 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'"; @@ -158,10 +177,25 @@ if ($fileID) { my $srcimage = GD::Image->new("$dir/$filename"); if ( defined $srcimage ) { $total++; - my $dberror = - PutImage( $biblionumber, $srcimage, - $replace ); - if ($dberror) { + eval { + if ( $replace ) { + if ( $biblionumber ) { + Koha::Biblios->find($biblionumber)->cover_images->delete; + } elsif ( $itemnumber ) { + Koha::Items->find($itemnumber)->cover_images->delete; + } + } + + Koha::CoverImage->new( + { + biblionumber => $biblionumber, + itemnumber => $itemnumber, + src_image => $srcimage + } + )->store; + }; + + if ($@) { $error = 'DBERR'; } } @@ -171,7 +205,7 @@ if ($fileID) { undef $srcimage; } } - close(FILE); + close($fh); } else { $error = 'OPNLINK'; @@ -179,10 +213,14 @@ if ($fileID) { } } } - $template->{VARS}->{'total'} = $total; - $template->{VARS}->{'uploadimage'} = 1; - $template->{VARS}->{'error'} = $error; - $template->{VARS}->{'biblionumber'} = $biblionumber; + + $template->param( + total => $total, + uploadimage => 1, + error => $error, + biblionumber => $biblionumber || Koha::Items->find($itemnumber)->biblionumber, + itemnumber => $itemnumber, + ); } output_html_with_http_headers $input, $cookie, $template->output;