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(
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');
my $error;
-$template->{VARS}->{'filetype'} = $filetype;
-$template->{VARS}->{'biblionumber'} = $biblionumber;
+$template->param(
+ filetype => $filetype,
+ biblionumber => $biblionumber,
+ itemnumber => $itemnumber,
+);
my $total = 0;
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 {
else {
next;
}
- if ( open( FILE, $file ) ) {
- while ( my $line = <FILE> ) {
+ 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'";
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';
}
}
undef $srcimage;
}
}
- close(FILE);
+ close($fh);
}
else {
$error = 'OPNLINK';
}
}
}
- $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;