&GetTitles
&GetPatronImage
- &PutPatronImage
&RmPatronImage
&GetHideLostItemsPreference
return $imagedata, $sth->errstr;
}
-=head2 PutPatronImage
-
- PutPatronImage($cardnumber, $mimetype, $imgfile);
-
-Stores patron binary image data and mimetype in database.
-NOTE: This function is good for updating images as well as inserting new images in the database.
-
-=cut
-
-sub PutPatronImage {
- my ($cardnumber, $mimetype, $imgfile) = @_;
- warn "Parameters passed in: Cardnumber=$cardnumber, Mimetype=$mimetype, " . ($imgfile ? "Imagefile" : "No Imagefile") if $debug;
- my $dbh = C4::Context->dbh;
- my $query = "INSERT INTO patronimage (borrowernumber, mimetype, imagefile) VALUES ( ( SELECT borrowernumber from borrowers WHERE cardnumber = ? ),?,?) ON DUPLICATE KEY UPDATE imagefile = ?;";
- my $sth = $dbh->prepare($query);
- $sth->execute($cardnumber,$mimetype,$imgfile,$imgfile);
- warn "Error returned inserting $cardnumber.$mimetype." if $sth->errstr;
- return $sth->errstr;
-}
-
=head2 RmPatronImage
my ($dberror) = RmPatronImage($borrowernumber);
$debug and warn "Image is of mimetype $mimetype";
my $dberror;
if ($mimetype) {
- $dberror =
- PutPatronImage( $cardnumber, $mimetype, $imgfile );
- }
- if ( !$dberror && $mimetype ) {
- # Errors from here on are fatal only to the import of a particular image
- #so don't bail, just note the error and keep going
- $count{count}++;
- push @{ $count{filenames} },
- { source => $filename, cardnumber => $cardnumber };
- }
- elsif ($dberror) {
- warn "Database returned error: $dberror";
- ( $dberror =~ /patronimage_fk1/ )
- ? $filerrors{'IMGEXISTS'} = 1
- : $filerrors{'DBERR'} = 1;
- push my @filerrors, \%filerrors;
- push @{ $count{filenames} },
- {
- filerrors => \@filerrors,
- source => $filename,
- cardnumber => $cardnumber
- };
- $template->param( ERRORS => 1 );
+ my $patron = Koha::Patrons->find({ cardnumber => $cardnumber });
+ if ( $patron ) {
+ my $image = $patron->image;
+ $image ||= Koha::Patron::Image->new({ borrowernumber => $patron->borrowernumber });
+ $image->set({
+ mimetype => $mimetype,
+ imagefile => $imgfile,
+ });
+ eval { $image->store };
+ if ( $@ ) {
+ # Errors from here on are fatal only to the import of a particular image
+ #so don't bail, just note the error and keep going
+ warn "Database returned error: $@";
+ $filerrors{'DBERR'} = 1;
+ push my @filerrors, \%filerrors;
+ push @{ $count{filenames} },
+ {
+ filerrors => \@filerrors,
+ source => $filename,
+ cardnumber => $cardnumber
+ };
+ $template->param( ERRORS => 1 );
+ } else {
+ $count{count}++;
+ push @{ $count{filenames} },
+ { source => $filename, cardnumber => $cardnumber };
+ }
+ } else {
+ warn "Patron with the cardnumber '$cardnumber' does not exist";
+ $filerrors{'CARDNUMBER_DOES_NOT_EXIST'} = 1;
+ push my @filerrors, \%filerrors;
+ push @{ $count{filenames} },
+ {
+ filerrors => \@filerrors,
+ source => $filename,
+ cardnumber => $cardnumber
+ };
+ $template->param( ERRORS => 1 );
+ }
}
- elsif ( !$mimetype ) {
+ else {
warn "Unable to determine mime type of $filename. Please verify mimetype.";
$filerrors{'MIMERR'} = 1;
push my @filerrors, \%filerrors;