First installment on moving patronimages into the database.
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
This commit is contained in:
parent
9d7a6c4c40
commit
1c1cb10e5e
5 changed files with 86 additions and 19 deletions
|
@ -58,6 +58,7 @@ BEGIN {
|
|||
&GetSortDetails
|
||||
&GetTitles
|
||||
&GetPatronImage
|
||||
&PutPatronImage
|
||||
|
||||
&GetMemberAccountRecords
|
||||
&GetBorNotifyAcctRecord
|
||||
|
@ -1699,23 +1700,45 @@ sub GetTitles {
|
|||
|
||||
=head2 GetPatronImage
|
||||
|
||||
$patronimage = &GetPatronImage('cardnumber');
|
||||
my ($imagedata, $dberror) = GetPatronImage($cardnumber);
|
||||
|
||||
Returns the path/filename.jpg of the image for the patron with the supplied cardnumber.
|
||||
Returns the mimetype and binary image data of the image for the patron with the supplied cardnumber.
|
||||
|
||||
=cut
|
||||
|
||||
sub GetPatronImage {
|
||||
my $cardnumber = shift;
|
||||
warn "Cardnumber passed to GetPatronImage is $cardnumber" if $debug;
|
||||
my $htdocs = C4::Context->config('intrahtdocs');
|
||||
my $picture = "patronimages/" . $cardnumber . ".jpg";
|
||||
if ( -e "$htdocs/$picture" ) {
|
||||
return ( "/intranet-tmpl/$picture" ); # FIXME: This is a real hack and should be handled better, but I'm in a hurry... -fbcit
|
||||
}
|
||||
else {
|
||||
return ();
|
||||
}
|
||||
my ($cardnumber) = @_;
|
||||
warn "Cardnumber passed to GetPatronImage is $cardnumber"; # if $debug;
|
||||
my $dbh = C4::Context->dbh;
|
||||
my $query = "SELECT mimetype, imagefile FROM patronimage WHERE cardnumber = ?;";
|
||||
my $sth = $dbh->prepare($query);
|
||||
$sth->execute($cardnumber);
|
||||
my $imagedata = $sth->fetchrow_hashref;
|
||||
my $dberror = $sth->errstr;
|
||||
warn "Database error!" if $sth->errstr;
|
||||
$sth->finish;
|
||||
return $imagedata, $dberror;
|
||||
}
|
||||
|
||||
=head2 PutPatronImage
|
||||
|
||||
PutPatronImage($cardnumber, $mimetype, $imgfile);
|
||||
|
||||
Stores patron binary image data and mimetype in 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 (cardnumber, mimetype, imagefile) VALUES (?,?,?) ON DUPLICATE KEY UPDATE cardnumber = ?;";
|
||||
my $sth = $dbh->prepare($query);
|
||||
$sth->execute($cardnumber,$mimetype,$imgfile,$cardnumber);
|
||||
warn "Error returned inserting $cardnumber.$mimetype." if $sth->errstr;
|
||||
my $dberror = $sth->errstr;
|
||||
$sth->finish;
|
||||
return $dberror;
|
||||
}
|
||||
|
||||
=head2 GetRoadTypeDetails (OUEST-PROVENCE)
|
||||
|
|
|
@ -1389,6 +1389,19 @@ CREATE TABLE `overduerules` (
|
|||
PRIMARY KEY (`branchcode`,`categorycode`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
--
|
||||
-- Table structure for table `patronimage`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `patronimage`;
|
||||
CREATE TABLE `patronimage` (
|
||||
`cardnumber` varchar(16) NOT NULL,
|
||||
`mimetype` varchar(15) NOT NULL,
|
||||
`imagefile` mediumblob NOT NULL,
|
||||
PRIMARY KEY (`cardnumber`),
|
||||
CONSTRAINT `patronimage_fk1` FOREIGN KEY (`cardnumber`) REFERENCES `borrowers` (`cardnumber`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
--
|
||||
-- Table structure for table `printers`
|
||||
--
|
||||
|
|
|
@ -1037,6 +1037,19 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
|
|||
SetVersion ($DBversion);
|
||||
}
|
||||
|
||||
$DBversion = "3.00.00.057";
|
||||
if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
|
||||
$dbh->do("CREATE TABLE `patronimage` (
|
||||
`cardnumber` varchar(16) NOT NULL,
|
||||
`mimetype` varchar(15) NOT NULL,
|
||||
`imagefile` mediumblob NOT NULL,
|
||||
PRIMARY KEY (`cardnumber`),
|
||||
CONSTRAINT `patronimage_fk1` FOREIGN KEY (`cardnumber`) REFERENCES `borrowers` (`cardnumber`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
|
||||
print "Upgrade to $DBversion done ( Added patronimage table. )\n";
|
||||
SetVersion ($DBversion);
|
||||
}
|
||||
|
||||
|
||||
=item DropAllForeignKeys($table)
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<!-- TMPL_IF NAME="borrowernumber" -->
|
||||
<div class="patroninfo"><h5><!-- TMPL_VAR name="firstname" --> <!-- TMPL_VAR name="surname" --> (<!-- TMPL_VAR NAME="cardnumber" -->)</h5>
|
||||
<ul>
|
||||
<!-- TMPL_IF NAME="picture" --><li><img src="<!-- TMPL_VAR NAME="picture" -->" alt="<!-- TMPL_VAR name="firstname" --> <!-- TMPL_VAR name="surname" --> (<!-- TMPL_VAR NAME="cardnumber" -->)" border="0" style="margin: .3em 0 .3em .3em; padding: .2em; border: 1px solid #CCCCCC;" width="100" /></li><!-- /TMPL_IF -->
|
||||
<li><img src="patronimage.pl?crdnum=<!-- TMPL_VAR NAME="cardnumber" -->" alt="<!-- TMPL_VAR name="firstname" --> <!-- TMPL_VAR name="surname" --> (<!-- TMPL_VAR NAME="cardnumber" -->)" border="0" style="margin: .3em 0 .3em .3em; padding: .2em; border: 1px solid #CCCCCC;" width="100" /></li>
|
||||
<li><!-- TMPL_IF NAME="address"-->
|
||||
<!-- TMPL_VAR NAME="address" -->
|
||||
<!-- TMPL_ELSE -->
|
||||
|
|
|
@ -6,6 +6,7 @@ use CGI;
|
|||
use C4::Context;
|
||||
use C4::Auth;
|
||||
use C4::Output;
|
||||
use C4::Members;
|
||||
|
||||
my $DEBUG = ($ENV{DEBUG}) ? 1 : 0;
|
||||
|
||||
|
@ -91,6 +92,13 @@ sub handle_dir {
|
|||
my ( %count );
|
||||
my $file;
|
||||
$count{filenames} = ();
|
||||
|
||||
my $mimemap = {
|
||||
"gif" => "image/gif",
|
||||
"jpg" => "image/jpeg",
|
||||
"jpeg" => "image/jpeg",
|
||||
"png" => "image/png"
|
||||
};
|
||||
|
||||
opendir my $dirhandle, $dir;
|
||||
while ( my $filename = readdir $dirhandle ) {
|
||||
|
@ -113,12 +121,22 @@ sub handle_dir {
|
|||
$filename =~ s/[\"\r\n\s]//g;
|
||||
warn "Cardnumber: $cardnumber Filename: $filename" if $DEBUG;
|
||||
if ($cardnumber && $filename) {
|
||||
warn "Source: $dir/$filename Target: $destdir/$cardnumber.jpg" if $DEBUG;
|
||||
my $result = move ( "$dir/$filename", "$destdir/$cardnumber.jpg" );
|
||||
if ( $result ) {
|
||||
$count{count}++;
|
||||
push @{ $count{filenames} }, { source => $filename, dest => $cardnumber .".jpg" };
|
||||
}
|
||||
warn "Source: $dir/$filename" if $DEBUG;
|
||||
open (IMG, "$dir/$filename") or warn "Could not open $dir/$filename";
|
||||
#binmode (IMG); # Not sure if we need this or not -fbcit
|
||||
my $imgfile;
|
||||
while (<IMG>) {
|
||||
$imgfile .= $_;
|
||||
}
|
||||
my $mimetype = $mimemap->{lc ($1)} if $filename =~ m/\.([^.]+)$/i;
|
||||
warn "$filename is mimetype \"$mimetype\"" if $DEBUG;
|
||||
my $dberror = PutPatronImage($cardnumber,$mimetype, $imgfile) if $mimetype;
|
||||
# warn "Database says: $dberror" if $dberror;
|
||||
close (IMG);
|
||||
unless ( $dberror || !$mimetype ) {
|
||||
$count{count}++;
|
||||
push @{ $count{filenames} }, { source => $filename, dest => $cardnumber };
|
||||
}
|
||||
}
|
||||
}
|
||||
$count{source} = $dir;
|
||||
|
|
Loading…
Reference in a new issue