Bug 35468: (follow-up) Test only the specific permission needed
[koha.git] / opac / opac-main.pl
1 #!/usr/bin/perl
2
3 # This file is part of Koha.
4 #
5 # Parts Copyright (C) 2013  Mark Tompsett
6 #
7 # Koha is free software; you can redistribute it and/or modify it
8 # under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 3 of the License, or
10 # (at your option) any later version.
11 #
12 # Koha is distributed in the hope that it will be useful, but
13 # WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
16 #
17 # You should have received a copy of the GNU General Public License
18 # along with Koha; if not, see <http://www.gnu.org/licenses>.
19
20
21 use Modern::Perl;
22 use CGI qw ( -utf8 );
23 use C4::Auth qw( get_template_and_user );
24 use C4::Output qw( output_html_with_http_headers );
25 use Koha::Quotes;
26 use C4::Members;
27 use C4::Overdues qw( checkoverdues );
28 use Koha::Checkouts;
29 use Koha::Holds;
30 use Koha::Patron::Messages;
31
32 my $input = CGI->new;
33 my $dbh   = C4::Context->dbh;
34
35 my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
36     {
37         template_name   => "opac-main.tt",
38         type            => "opac",
39         query           => $input,
40         authnotrequired => ( C4::Context->preference("OpacPublic") ? 1 : 0 ),
41     }
42 );
43
44 my $casAuthentication = C4::Context->preference('casAuthentication');
45 $template->param(
46     casAuthentication   => $casAuthentication,
47 );
48
49 my $homebranch = $ENV{OPAC_BRANCH_DEFAULT};
50 if (C4::Context->userenv) {
51     $homebranch = C4::Context->userenv->{'branch'};
52 }
53 if (defined $input->param('branch') and length $input->param('branch')) {
54     $homebranch = $input->param('branch');
55 }
56 elsif (C4::Context->userenv and defined $input->param('branch') and length $input->param('branch') == 0 ){
57    $homebranch = "";
58 }
59
60
61 my $news_id = $input->param('news_id');
62 $template->param( news_id => $news_id );
63
64 # For dashboard
65 my $patron = Koha::Patrons->find( $borrowernumber );
66
67 if ( $patron ) {
68     my $checkouts = Koha::Checkouts->search({ borrowernumber => $borrowernumber })->count;
69     my ( $overdues_count, $overdues ) = checkoverdues($borrowernumber);
70     my $holds_pending = Koha::Holds->search({ borrowernumber => $borrowernumber, found => undef })->count;
71     my $holds_waiting = Koha::Holds->search({ borrowernumber => $borrowernumber })->waiting->count;
72     my $patron_messages = Koha::Patron::Messages->search(
73             {
74                 borrowernumber => $borrowernumber,
75                 message_type => 'B',
76             });
77     my $patron_note = $patron->opacnote;
78     my $total = $patron->account->balance;
79     my $saving_display = C4::Context->preference('OPACShowSavings');
80     my $savings = 0;
81     if ( $saving_display =~ /summary/ ) {
82         $savings = $patron->get_savings;
83     }
84     if  ( $checkouts > 0 || $overdues_count > 0 || $holds_pending > 0 || $holds_waiting > 0 || $total > 0 || $patron_note || $patron_messages->count || $savings > 0 ) {
85         $template->param(
86             dashboard_info => 1,
87             checkouts           => $checkouts,
88             overdues            => $overdues_count,
89             holds_pending       => $holds_pending,
90             holds_waiting       => $holds_waiting,
91             total_owing         => $total,
92             patron_messages     => $patron_messages,
93             opacnote            => $patron_note,
94             savings             => $savings,
95         );
96     }
97 }
98
99 $template->param( branchcode => $homebranch ) if $homebranch;
100 $template->param(
101     daily_quote         => Koha::Quotes->get_daily_quote(),
102 );
103
104 output_html_with_http_headers $input, $cookie, $template->output;