From b6399e62c11b8ffb5e9e7a7f662f5b02de9e02e1 Mon Sep 17 00:00:00 2001 From: Joshua Ferraro Date: Sat, 24 Nov 2007 19:17:24 -0600 Subject: [PATCH] adding back patron images upload, no idea why it was removed Signed-off-by: Joshua Ferraro --- .../prog/en/modules/tools/picture-upload.tmpl | 78 ++++++++++++ .../prog/en/modules/tools/tools-home.tmpl | 6 +- tools/picture-upload.pl | 113 ++++++++++++++++++ 3 files changed, 194 insertions(+), 3 deletions(-) create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/tools/picture-upload.tmpl create mode 100755 tools/picture-upload.pl diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/picture-upload.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/picture-upload.tmpl new file mode 100644 index 0000000000..575c580464 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/picture-upload.tmpl @@ -0,0 +1,78 @@ + +Koha › Tools › Upload Patron Images + + + + + + + + +
+ +
+
+
+
+
+

Upload Patron Images

+ + +
    +
  • Unpacking completed
  • +
+ Scanned + Processed + + Images moved from to + + To + + + + + + +
    + +
  • The upload file does not appear to be a zip file. The extention is not '.zip'.
  • + + +
  • This script is not able to create/write to the necessary temporary directory.
  • + + +
  • This script is not able to write to the patronpictures holding directory.
  • + + +
  • The upload file appears to be empty.
  • + + + +
    +
      +
    • Select a file to upload to the server. Each .jpg file contained therein will be copied to the appropriate place on the server for patron pictures.
    • +
    • You can include multiple pictures in a .zip file.
    • +
    • There should be a DATALINK.TXT or IDLINK.TXT file for each group of pictures that has the cardnumber of the patron and the file containing that patrons picture. One patron per line seperated by either ,'s or tabs. Quotes around the fields are ignored.
    • +
    + + + + + +
    +
    +
    + +
    + + + +
+
+
+
+
+ +
+
+ diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/tools-home.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/tools-home.tmpl index f02eabe94b..85117638a8 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/tools-home.tmpl +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/tools-home.tmpl @@ -61,12 +61,12 @@
Patrons (anonomize, bulk-delete)
Delete old borrowers and anonymize circulation history (deletes borrower reading history)
+
Upload patron images
+
Upload patron images in batch or one at a time
+
Task Scheduler
Schedule tasks to run
-
Moderate reviews
-
Moderate reviews submitted by patrons
-
diff --git a/tools/picture-upload.pl b/tools/picture-upload.pl new file mode 100755 index 0000000000..c1834cad65 --- /dev/null +++ b/tools/picture-upload.pl @@ -0,0 +1,113 @@ +#!/usr/bin/perl + +use File::Temp; +use File::Copy; +use CGI; +use C4::Context; +use C4::Auth; +use C4::Output; + +#my $destdir = "/usr/local/koha/intranet/htdocs/intranet-tmpl/images/patronpictures"; +#my $uploadfile = shift @ARGV; +my $input = new CGI; +my $destdir = C4::Context->config('intrahtdocs') . "/patronimages"; + +warn "DEST : $destdir"; +my ($template, $loggedinuser, $cookie) + = get_template_and_user({template_name => "tools/picture-upload.tmpl", + query => $input, + type => "intranet", + authnotrequired => 0, + flagsrequired => {management => 1, tools => 1}, + debug => 0, + }); + +my $uploadfilename = $input->param( 'uploadfile' ); +my $uploadfile = $input->upload( 'uploadfile' ); +my ( $total, $handled, @counts ); + +if ( $uploadfile ) { + my $dirname = File::Temp::tempdir( CLEANUP => 1); + my ( $tfh, $tempfile ) = File::Temp::tempfile( SUFFIX => '.zip', UNLINK => 1 ); + my ( @directories, %errors ); + + $errors{'NOTZIP'} = 1 unless ( $uploadfilename =~ /\.zip$/i ); + $errors{'NOWRITETEMP'} = 1 unless ( -w "$dirname" ); + $errors{'NOWRITEDEST'} = 1 unless ( -w "$destdir" ); + $errors{'EMPTYUPLOAD'} = 1 unless ( length( $uploadfile ) > 0 ); + + if ( %errors ) { + $template->param( ERRORS => [ \%errors ] ); + } else { + while ( <$uploadfile> ) { + print $tfh $_; + } + + close $tfh; + + `unzip $tempfile -d $dirname`; + + push @directories, "$dirname"; + foreach $recursive_dir ( @directories ) { + opendir $dir, $recursive_dir; + while ( my $entry = readdir $dir ) { + push @directories, "$recursive_dir/$entry" if ( -d "$recursive_dir/$entry" and $entry !~ /^\./ ); + } + closedir $dir; + } + + foreach my $dir ( @directories ) { + $handled += handle_dir( $dir ); + } + + $total = scalar @directories; + + $template->param( + TOTAL => $total, + HANDLED => $handled, + COUNTS => \@counts, + ); + } +} + +output_html_with_http_headers $input, $cookie, $template->output; + + +sub handle_dir { + my ( $dir ) = @_; + my ( %count ); + $count{filenames} = (); + + return 0 unless ( -r "$dir/IDLINK.TXT" or -r "$dir/DATALINK.TXT" ); + + my $file = ( -r "$dir/IDLINK.TXT" ) ? "$dir/IDLINK.TXT" : "$dir/DATALINK.TXT"; + + open $fh, $file or { print "Openning $dir/$filename failed!\n" and return 0 }; + + while (my $line = <$fh>) { + chomp $line; + + my ( $filename, $cardnumber ); + + my $delim = ($line =~ /\t/) ? "\t" : ","; + + ($cardnumber, $filename) = split $delim, $line; + $cardnumber =~ s/[\"\r\n]//g; # remove offensive characters + $filename =~ s/[\"\r\n]//g; + + if ($cardnumber && $filename) { + my $result = move ( "$dir/$filename", "$destdir/$cardnumber.jpg" ); + if ( $result ) { + $count{count}++; + push @{ $count{filenames} }, { source => $filename, dest => $cardnumber .".jpg" }; + } + } + } + $count{source} = $dir; + $count{dest} = $destdir; + push @counts, \%count; + + close $fh; + + return 1; +}