Owen Leonard
5aabe570f4
The template for the OPAC's "most popular" page includes several variables which are not passed by the script, including biblioitems.size. This patch adds the right columns to the query and standardizes the output somewhat based on non-XSLT opac-detail. To test, apply the patch and view the "most popular" page in both prog and bootstrap. You should see correct publisher, copyright, pages, and size information. Signed-off-by: Nicole C. Engard <nengard@bywatersolutions.com> Tested in all three themes and works lovely Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de> Improves the bibliographic display on the 'Most popular' page in the OPAC. Passes all tests and QA script. Signed-off-by: Galen Charlton <gmc@esilibrary.com>
176 lines
6.4 KiB
Perl
Executable file
176 lines
6.4 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
|
|
|
|
# Copyright 2000-2002 Katipo Communications
|
|
# Parts Copyright Catalyst IT 2011
|
|
#
|
|
# This file is part of Koha.
|
|
#
|
|
# 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 2 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, write to the Free Software Foundation, Inc.,
|
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use CGI;
|
|
use C4::Auth;
|
|
use C4::Context;
|
|
use C4::Search;
|
|
use C4::Output;
|
|
use C4::Koha;
|
|
use C4::Branch;
|
|
use Date::Manip;
|
|
|
|
=head1 NAME
|
|
|
|
plugin that shows a stats on borrowers
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
=cut
|
|
|
|
my $input = new CGI;
|
|
|
|
# if OpacTopissue is disabled, leave immediately
|
|
if ( ! C4::Context->preference('OpacTopissue') ) {
|
|
print $input->redirect("/cgi-bin/koha/errors/404.pl");
|
|
exit;
|
|
}
|
|
|
|
my $branches = GetBranches();
|
|
my $itemtypes = GetItemTypes();
|
|
|
|
my ($template, $borrowernumber, $cookie)
|
|
= get_template_and_user({template_name => 'opac-topissues.tmpl',
|
|
query => $input,
|
|
type => "opac",
|
|
authnotrequired => ( C4::Context->preference("OpacPublic") ? 1 : 0 ),
|
|
debug => 1,
|
|
});
|
|
my $dbh = C4::Context->dbh;
|
|
# Displaying results
|
|
my $do_it = $input->param('do_it') || 0; # as form been posted
|
|
my $limit = $input->param('limit');
|
|
$limit = 10 unless ($limit && $limit =~ /^\d+$/); # control user input for SQL query
|
|
$limit = 100 if $limit > 100;
|
|
my $branch = $input->param('branch') || '';
|
|
if (!$do_it && C4::Context->userenv && C4::Context->userenv->{'branch'} ) {
|
|
$branch = C4::Context->userenv->{'branch'}; # select user branch by default
|
|
}
|
|
my $itemtype = $input->param('itemtype') || '';
|
|
my $timeLimit = $input->param('timeLimit') || 3;
|
|
my $advanced_search_types = C4::Context->preference('AdvancedSearchTypes');
|
|
|
|
my $whereclause = '';
|
|
$whereclause .= ' AND items.homebranch='.$dbh->quote($branch) if ($branch);
|
|
$whereclause .= ' AND TO_DAYS(NOW()) - TO_DAYS(biblio.datecreated) <= '.($timeLimit*30) if $timeLimit < 999;
|
|
$whereclause =~ s/ AND $// if $whereclause;
|
|
my $query;
|
|
|
|
if($advanced_search_types eq 'ccode'){
|
|
$whereclause .= ' AND authorised_values.authorised_value='.$dbh->quote($itemtype) if $itemtype;
|
|
$query = "SELECT datecreated, biblio.biblionumber, title,
|
|
author, sum( items.issues ) AS tot, biblioitems.itemtype,
|
|
biblioitems.publishercode, biblioitems.place, biblioitems.publicationyear, biblio.copyrightdate,
|
|
authorised_values.lib as description, biblioitems.pages, biblioitems.size
|
|
FROM biblio
|
|
LEFT JOIN items USING (biblionumber)
|
|
LEFT JOIN biblioitems USING (biblionumber)
|
|
LEFT JOIN authorised_values ON items.ccode = authorised_values.authorised_value
|
|
WHERE 1
|
|
$whereclause
|
|
AND authorised_values.category = 'ccode'
|
|
GROUP BY biblio.biblionumber
|
|
HAVING tot >0
|
|
ORDER BY tot DESC
|
|
LIMIT ?
|
|
";
|
|
$template->param(ccodesearch => 1);
|
|
}else{
|
|
if ($itemtype){
|
|
if (C4::Context->preference('item-level_itypes')){
|
|
$whereclause .= ' AND items.itype = ' . $dbh->quote($itemtype);
|
|
}
|
|
else {
|
|
$whereclause .= ' AND biblioitems.itemtype='.$dbh->quote($itemtype);
|
|
}
|
|
}
|
|
$query = "SELECT datecreated, biblio.biblionumber, title,
|
|
author, sum( items.issues ) AS tot, biblioitems.itemtype,
|
|
biblioitems.publishercode, biblioitems.place, biblioitems.publicationyear, biblio.copyrightdate,
|
|
itemtypes.description, biblioitems.pages, biblioitems.size
|
|
FROM biblio
|
|
LEFT JOIN items USING (biblionumber)
|
|
LEFT JOIN biblioitems USING (biblionumber)
|
|
LEFT JOIN itemtypes ON itemtypes.itemtype = biblioitems.itemtype
|
|
WHERE 1
|
|
$whereclause
|
|
GROUP BY biblio.biblionumber
|
|
HAVING tot >0
|
|
ORDER BY tot DESC
|
|
LIMIT ?
|
|
";
|
|
$template->param(itemtypesearch => 1);
|
|
}
|
|
|
|
my $sth = $dbh->prepare($query);
|
|
$sth->execute($limit);
|
|
my @results;
|
|
while (my $line= $sth->fetchrow_hashref) {
|
|
push @results, $line;
|
|
}
|
|
|
|
my $timeLimitFinite = $timeLimit;
|
|
if($timeLimit eq 999){ $timeLimitFinite = 0 };
|
|
|
|
$template->param(do_it => 1,
|
|
limit => $limit,
|
|
branch => $branches->{$branch}->{branchname},
|
|
itemtype => $itemtypes->{$itemtype}->{description},
|
|
timeLimit => $timeLimit,
|
|
timeLimitFinite => $timeLimitFinite,
|
|
results_loop => \@results,
|
|
);
|
|
|
|
$template->param( branchloop => GetBranchesLoop($branch));
|
|
|
|
# the index parameter is different for item-level itemtypes
|
|
my $itype_or_itemtype = (C4::Context->preference("item-level_itypes"))?'itype':'itemtype';
|
|
$itemtypes = GetItemTypes;
|
|
my @itemtypesloop;
|
|
if (!$advanced_search_types or $advanced_search_types eq 'itemtypes') {
|
|
foreach my $thisitemtype ( sort {$itemtypes->{$a}->{'description'} cmp $itemtypes->{$b}->{'description'} } keys %$itemtypes ) {
|
|
my %row =( value => $thisitemtype,
|
|
description => $itemtypes->{$thisitemtype}->{'description'},
|
|
selected => $thisitemtype eq $itemtype,
|
|
);
|
|
push @itemtypesloop, \%row;
|
|
}
|
|
} else {
|
|
my $advsearchtypes = GetAuthorisedValues($advanced_search_types, '', 'opac');
|
|
for my $thisitemtype (@$advsearchtypes) {
|
|
my $selected;
|
|
$selected = 1 if $thisitemtype->{authorised_value} eq $itemtype;
|
|
my %row =( value => $thisitemtype->{authorised_value},
|
|
selected => $thisitemtype eq $itemtype,
|
|
description => $thisitemtype->{'lib'},
|
|
);
|
|
push @itemtypesloop, \%row;
|
|
}
|
|
}
|
|
|
|
$template->param(
|
|
itemtypeloop =>\@itemtypesloop,
|
|
);
|
|
output_html_with_http_headers $input, $cookie, $template->output;
|
|
|