Bug 16522: (follow-up) MARC display templates and get_marc_host fixes
[koha.git] / opac / opac-modrequest.pl
1 #!/usr/bin/perl
2
3 #script to modify reserves/requests
4 #written 2/1/00 by chris@katipo.oc.nz
5 #last update 27/1/2000 by chris@katipo.co.nz
6
7
8 # Copyright 2000-2002 Katipo Communications
9 #
10 # This file is part of Koha.
11 #
12 # Koha is free software; you can redistribute it and/or modify it
13 # under the terms of the GNU General Public License as published by
14 # the Free Software Foundation; either version 3 of the License, or
15 # (at your option) any later version.
16 #
17 # Koha is distributed in the hope that it will be useful, but
18 # WITHOUT ANY WARRANTY; without even the implied warranty of
19 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 # GNU General Public License for more details.
21 #
22 # You should have received a copy of the GNU General Public License
23 # along with Koha; if not, see <http://www.gnu.org/licenses>.
24
25 use Modern::Perl;
26
27 use CGI qw ( -utf8 );
28 use C4::Output;
29 use C4::Auth qw( get_template_and_user );
30 use Koha::Holds;
31
32 my $query = CGI->new;
33
34 my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
35     {   
36         template_name   => "opac-account.tt",
37         query           => $query,
38         type            => "opac",
39     }
40 );
41
42 my $reserve_id = $query->param('reserve_id');
43 my $cancellation_request = $query->param('cancellation_request');
44 my $new_pickup_location  = $query->param('new_pickup_location');
45
46 if ( $reserve_id && $borrowernumber ) {
47
48     my $hold = Koha::Holds->find($reserve_id);
49
50     unless ( $hold->borrowernumber == $borrowernumber ) {
51
52         # whatcha tryin to do?
53         print $query->redirect('/cgi-bin/koha/errors/403.pl');
54         exit;
55     }
56
57     if ( $cancellation_request ) {
58         $hold->add_cancellation_request
59           if $hold->cancellation_requestable_from_opac;
60     }
61     elsif ( $new_pickup_location ) {
62
63         if ($hold->can_update_pickup_location_opac) {
64             $hold->set_pickup_location({ library_id => $new_pickup_location });
65         }
66         else {
67             # whatcha tryin to do?
68             print $query->redirect('/cgi-bin/koha/errors/403.pl');
69             exit;
70         }
71     }
72     elsif ( $hold->is_cancelable_from_opac ) {
73         $hold->cancel;
74     }
75 }
76
77 print $query->redirect("/cgi-bin/koha/opac-user.pl#opac-user-holds");