1 package Koha::UploadedFile;
3 # Copyright Rijksmuseum 2016
5 # This file is part of Koha.
7 # Koha is free software; you can redistribute it and/or modify it under the
8 # terms of the GNU General Public License as published by the Free Software
9 # Foundation; either version 3 of the License, or (at your option) any later
12 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
13 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14 # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License along
17 # with Koha; if not, write to the Free Software Foundation, Inc.,
18 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
23 use parent qw(Koha::Object);
27 Koha::UploadedFile - Koha::Object class for single uploaded file
31 use Koha::UploadedFile;
33 # store record in uploaded_files
34 my $upload = Koha::UploadedFile->new({ [columns and values] });
36 # get a file handle on an uploaded_file
37 my $fh = $upload->file_handle;
40 my $path = $upload->full_path;
42 # delete uploaded file
47 Allows regular CRUD operations on uploaded_files via Koha::Object / DBIx.
49 The delete method also takes care of deleting files. The full_path method
50 returns a fully qualified path for an upload.
52 Additional methods include: file_handle, httpheaders.
56 =head2 INSTANCE METHODS
61 It deletes not only the record, but also the actual file (unless you pass
62 the keep_file parameter).
64 Returns filename on successful delete or undef.
69 my ( $self, $params ) = @_;
71 my $name = $self->filename;
72 my $file = $self->full_path;
74 if( $params->{keep_file} ) {
75 return $name if $self->SUPER::delete;
76 } elsif( !-e $file ) { # we will just delete the record
77 warn "Removing record for $name within category ".
78 $self->uploadcategorycode. ", but file was missing.";
79 return $name if $self->SUPER::delete;
80 } elsif( unlink($file) ) {
81 return $name if $self->SUPER::delete;
83 warn "Problem while deleting: $file";
85 return; # something went wrong
90 Returns the fully qualified path name for an uploaded file.
96 my $path = File::Spec->catfile(
98 $self->permanent_directory: $self->temporary_directory,
100 $self->hashvalue. '_'. $self->filename,
107 Returns a file handle for an uploaded file.
113 $self->{_file_handle} = IO::File->new( $self->full_path, "r" );
114 return if !$self->{_file_handle};
115 $self->{_file_handle}->binmode;
116 return $self->{_file_handle};
121 httpheaders returns http headers for a retrievable upload.
123 Will be extended by report 14282
130 '-type' => 'application/octet-stream',
131 '-attachment' => $self->filename,
137 =head3 permanent_directory
139 Returns root directory for permanent storage
143 sub permanent_directory {
145 return C4::Context->config('upload_path');
150 Returns root directory for temporary storage
154 sub temporary_directory {
156 return File::Spec->tmpdir;
161 getCategories returns a list of upload category codes and names
167 my $cats = C4::Koha::GetAuthorisedValues('UPLOAD');
168 [ map {{ code => $_->{authorised_value}, name => $_->{lib} }} @$cats ];
173 Returns name of corresponding DBIC resultset
178 return 'UploadedFile';
183 Marcel de Rooy (Rijksmuseum)
185 Koha Development Team