Bug 8378 - show all items columns and new items.fine
[koha.git] / tools / upload-cover-image.pl
index f70aefc..b85a81a 100755 (executable)
 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 #
-# You should have received a copy of the GNU General Public License along with
-# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
-# Suite 330, Boston, MA  02111-1307 USA
+# You should have received a copy of the GNU General Public License along
+# with Koha; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 #
 #
 #
+
 =head1 NAME
 
 upload-cover-image.pl - Script for handling uploading of both single and bulk coverimages and importing them into the database.
@@ -36,7 +37,6 @@ resized, maintaining aspect ratio.
 
 =cut
 
-
 use strict;
 use warnings;
 
@@ -48,112 +48,138 @@ use C4::Auth;
 use C4::Output;
 use C4::Images;
 use C4::UploadedFile;
+use C4::Log;
 
 my $debug = 1;
 
 my $input = new CGI;
 
-my $fileID=$input->param('uploadedfileid');
-my ($template, $loggedinuser, $cookie)
-       = get_template_and_user({template_name => "tools/upload-images.tmpl",
-                                       query => $input,
-                                       type => "intranet",
-                                       authnotrequired => 0,
-                                       flagsrequired => { tools => 'upload_cover_images'},
-                                       debug => 0,
-                                       });
-
-my $filetype            = $input->param('filetype');
-my $biblionumber        = $input->param('biblionumber');
-my $uploadfilename      = $input->param('uploadfile');
-my $replace             = !C4::Context->preference("AllowMultipleCovers") || $input->param('replace');
-my $op                  = $input->param('op');
-my %cookies             = parse CGI::Cookie($cookie);
-my $sessionID           = $cookies{'CGISESSID'}->value;
+my $fileID = $input->param('uploadedfileid');
+my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
+    {
+        template_name   => "tools/upload-images.tmpl",
+        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 $uploadfilename = $input->param('uploadfile');
+my $replace        = !C4::Context->preference("AllowMultipleCovers")
+  || $input->param('replace');
+my $op        = $input->param('op');
+my %cookies   = parse CGI::Cookie($cookie);
+my $sessionID = $cookies{'CGISESSID'}->value;
 
 my $error;
 
-$template->{VARS}->{'filetype'} = $filetype;
+$template->{VARS}->{'filetype'}     = $filetype;
 $template->{VARS}->{'biblionumber'} = $biblionumber;
 
 my $total = 0;
 
-
 if ($fileID) {
-    my $uploaded_file = C4::UploadedFile->fetch($sessionID, $fileID);
-    if ($filetype eq 'image') {
-        my $fh = $uploaded_file->fh();
+    my $uploaded_file = C4::UploadedFile->fetch( $sessionID, $fileID );
+    if ( $filetype eq 'image' ) {
+        my $fh       = $uploaded_file->fh();
         my $srcimage = GD::Image->new($fh);
-        if (defined $srcimage) {
-            my $dberror = PutImage($biblionumber, $srcimage, $replace);
+        if ( defined $srcimage ) {
+            my $dberror = PutImage( $biblionumber, $srcimage, $replace );
             if ($dberror) {
                 $error = 'DBERR';
-            } else {
+            }
+            else {
                 $total = 1;
             }
-        } else {
+        }
+        else {
             $error = 'OPNIMG';
         }
         undef $srcimage;
-    } else {
+    }
+    else {
         my $filename = $uploaded_file->filename();
-        my $dirname = File::Temp::tempdir( CLEANUP => 1);
-        unless (system("unzip", $filename,  '-d', $dirname) == 0) {
+        my $dirname = File::Temp::tempdir( CLEANUP => 1 );
+        unless ( system( "unzip", $filename, '-d', $dirname ) == 0 ) {
             $error = 'UZIPFAIL';
-        } else {
+        }
+        else {
             my @directories;
             push @directories, "$dirname";
-            foreach my $recursive_dir ( @directories ) {
+            foreach my $recursive_dir (@directories) {
                 my $dir;
                 opendir $dir, $recursive_dir;
                 while ( my $entry = readdir $dir ) {
-                    push @directories, "$recursive_dir/$entry" if ( -d "$recursive_dir/$entry" and $entry !~ /^[._]/ );
+                    push @directories, "$recursive_dir/$entry"
+                      if ( -d "$recursive_dir/$entry" and $entry !~ /^[._]/ );
                 }
                 closedir $dir;
             }
-            foreach my $dir ( @directories ) {
+            foreach my $dir (@directories) {
                 my $file;
                 if ( -e "$dir/idlink.txt" ) {
                     $file = "$dir/idlink.txt";
-                } elsif ( -e "$dir/datalink.txt" ) {
+                }
+                elsif ( -e "$dir/datalink.txt" ) {
                     $file = "$dir/datalink.txt";
-                } else {
+                }
+                else {
                     next;
                 }
-                if (open (FILE, $file)) {
-                    while (my $line = <FILE>) {
-                        my $delim = ($line =~ /\t/) ? "\t" : ($line =~ /,/) ? "," : "";
+                if ( open( FILE, $file ) ) {
+                    while ( my $line = <FILE> ) {
+                        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'";
+                            warn
+"Unrecognized or missing field delimeter. Please verify that you are using either a ',' or a 'tab'";
                             $error = 'DELERR';
-                        } else {
-                            ($biblionumber, $filename) = split $delim, $line;
-                            $biblionumber =~ s/[\"\r\n]//g;  # remove offensive characters
-                            $filename   =~ s/[\"\r\n\s]//g;
+                        }
+                        else {
+                            ( $biblionumber, $filename ) = split $delim, $line, 2;
+                            $biblionumber =~
+                              s/[\"\r\n]//g;    # remove offensive characters
+                            $filename =~ s/[\"\r\n]//g;
+                            $filename =~ s/^\s+//;
+                            $filename =~ s/\s+$//;
+                            if (C4::Context->preference("CataloguingLog")) {
+                                logaction('CATALOGUING', 'MODIFY', $biblionumber, "cover image: $filename");
+                            }
                             my $srcimage = GD::Image->new("$dir/$filename");
-                            if (defined $srcimage) {
+                            if ( defined $srcimage ) {
                                 $total++;
-                                my $dberror = PutImage($biblionumber, $srcimage, $replace);
+                                my $dberror =
+                                  PutImage( $biblionumber, $srcimage,
+                                    $replace );
                                 if ($dberror) {
                                     $error = 'DBERR';
                                 }
-                            } else {
+                            }
+                            else {
                                 $error = 'OPNIMG';
                             }
                             undef $srcimage;
                         }
                     }
                     close(FILE);
-                } else {
+                }
+                else {
                     $error = 'OPNLINK';
                 }
             }
         }
     }
-    $template->{VARS}->{'total'} = $total;
-    $template->{VARS}->{'uploadimage'} = 1;
-    $template->{VARS}->{'error'} = $error;
+    $template->{VARS}->{'total'}        = $total;
+    $template->{VARS}->{'uploadimage'}  = 1;
+    $template->{VARS}->{'error'}        = $error;
     $template->{VARS}->{'biblionumber'} = $biblionumber;
 }