Koha/opac/opac-retrieve-file.pl
Marcel de Rooy ba5cd24553 Bug 17501: Move getCategories and httpheaders from Upload.pm
Class method getCategories has no strict binding to Upload.pm. While
Upload.pm is now restricted to the actual uploading process with CGI
hook, this routine fits better in the UploadedFile package.

Class method httpheaders can be moved as well for the same reason. Note
that it actually is an instance method. The parameter $name is dropped.

Test plan:
[1] Run t/db_dependent/Upload.t.
[2] Check the categories in the combo box of tools/upload.
[3] Check a download via tools/upload and opac-retrieve-file.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
2017-01-20 14:20:05 +00:00

53 lines
1.6 KiB
Prolog
Executable file

#!/usr/bin/perl
# This file is part of Koha.
#
# Copyright (C) 2011-2012 BibLibre
#
# Koha is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Koha is distributed in the hope that it will be useful, but
# WITHOUT ANY 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, see <http://www.gnu.org/licenses>.
use Modern::Perl;
use CGI;
use Encode;
use C4::Auth;
use C4::Context;
use C4::Output;
use Koha::UploadedFiles;
my $input = CGI::->new;
my $hash = $input->param('id'); # historically called id (used in URLs?)
my $rec = Koha::UploadedFiles->search({
hashvalue => $hash, public => 1,
# DO NOT REMOVE the public flag: this is an opac script !
})->next;
my $fh = $rec? $rec->file_handle: undef;
if( !$rec || !$fh ) {
my ( $template, $user, $cookie ) = get_template_and_user({
query => $input,
template_name => 'opac-retrieve-file.tt',
type => 'opac',
authnotrequired => 1,
});
$template->param( hash => $hash );
output_html_with_http_headers $input, $cookie, $template->output;
} else {
print Encode::encode_utf8( $input->header( $rec->httpheaders ) );
while( <$fh> ) {
print $_;
}
$fh->close;
}