10 #my $destdir = "/usr/local/koha/intranet/htdocs/intranet-tmpl/images/patronpictures";
11 #my $uploadfile = shift @ARGV;
13 my $destdir = C4::Context->config('intrahtdocs') . "/patronimages";
15 warn "DEST : $destdir";
16 my ($template, $loggedinuser, $cookie)
17 = get_template_and_user({template_name => "tools/picture-upload.tmpl",
21 flagsrequired => {management => 1, tools => 1},
25 unless (-d $destdir) {
27 warn "patronimages directory not present";
30 $template->param( ERRORS => [ \%errors ] );
32 my $uploadfilename = $input->param( 'uploadfile' );
33 my $uploadfile = $input->upload( 'uploadfile' );
34 my ( $total, $handled, @counts );
37 my $dirname = File::Temp::tempdir( CLEANUP => 1);
38 my ( $tfh, $tempfile ) = File::Temp::tempfile( SUFFIX => '.zip', UNLINK => 1 );
39 my ( @directories, %errors );
41 $errors{'NOTZIP'} = 1 unless ( $uploadfilename =~ /\.zip$/i );
42 $errors{'NOWRITETEMP'} = 1 unless ( -w "$dirname" );
43 $errors{'NOWRITEDEST'} = 1 unless ( -w "$destdir" );
44 $errors{'EMPTYUPLOAD'} = 1 unless ( length( $uploadfile ) > 0 );
47 $template->param( ERRORS => [ \%errors ] );
49 while ( <$uploadfile> ) {
55 `unzip $tempfile -d $dirname`;
57 push @directories, "$dirname";
58 foreach $recursive_dir ( @directories ) {
59 opendir $dir, $recursive_dir;
60 while ( my $entry = readdir $dir ) {
61 push @directories, "$recursive_dir/$entry" if ( -d "$recursive_dir/$entry" and $entry !~ /^\./ );
66 foreach my $dir ( @directories ) {
67 $handled += handle_dir( $dir );
70 $total = scalar @directories;
80 output_html_with_http_headers $input, $cookie, $template->output;
86 $count{filenames} = ();
88 return 0 unless ( -r "$dir/IDLINK.TXT" or -r "$dir/DATALINK.TXT" );
90 my $file = ( -r "$dir/IDLINK.TXT" ) ? "$dir/IDLINK.TXT" : "$dir/DATALINK.TXT";
92 open $fh, $file or { print "Openning $dir/$filename failed!\n" and return 0 };
94 while (my $line = <$fh>) {
97 my ( $filename, $cardnumber );
99 my $delim = ($line =~ /\t/) ? "\t" : ",";
101 ($cardnumber, $filename) = split $delim, $line;
102 $cardnumber =~ s/[\"\r\n]//g; # remove offensive characters
103 $filename =~ s/[\"\r\n]//g;
105 if ($cardnumber && $filename) {
106 my $result = move ( "$dir/$filename", "$destdir/$cardnumber.jpg" );
109 push @{ $count{filenames} }, { source => $filename, dest => $cardnumber .".jpg" };
113 $count{source} = $dir;
114 $count{dest} = $destdir;
115 push @counts, \%count;