Koha/opac/opac-ISBDdetail.pl
Jonathan Druart ba8f552ab6 Bug 15839: Koha::Reviews - Remove getreviews
The C4::Reviews::getreviews subroutine retrieved the reviews for a given
record, depending on their status.
This can be achieve with a call to Koha::Reviews->search.
There were 2 calls to this subroutine. The one from opac-ISBDdetail.pl
does not look in used: the reviews are not display on this page. It
certainly comes from an old copy/paste from opac-detail.pl.
The one from opac-detail only asked for the approved reviews. So the
logged in user does not see its own review if it is pending approval.
Actually this pending approval review is only displayed when the user
submits it (because of a unecessary complex text replacement done in
JS).
With this patch, the approved reviews AND the unaproved review from the
logged in user will be displayed.
It will allow a future enhancement to add a way to delete our own
reviews.

Moreover, the reviews were retrieved even if they were not displayed (if
reviewson is off), it's now fixed.

Signed-off-by: Marc Veron <veron@veron.ch>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
2016-09-09 10:29:53 +00:00

210 lines
6.2 KiB
Perl
Executable file

#!/usr/bin/perl
# Copyright 2000-2002 Katipo Communications
# parts copyright 2010 BibLibre
#
# 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 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>.
=head1 NAME
opac-ISBDdetail.pl - script to show a biblio in ISBD format
=head1 DESCRIPTION
This script needs a biblionumber as parameter
It shows the biblio
The template is in <templates_dir>/catalogue/ISBDdetail.tt.
this template must be divided into 11 "tabs".
The first 10 tabs present the biblio, the 11th one presents
the items attached to the biblio
=head1 FUNCTIONS
=cut
use Modern::Perl;
use C4::Auth;
use C4::Context;
use C4::Output;
use CGI qw ( -utf8 );
use MARC::Record;
use C4::Biblio;
use C4::Items;
use C4::Reserves;
use C4::Acquisition;
use C4::Serials; # uses getsubscriptionfrom biblionumber
use C4::Koha;
use C4::Members; # GetMember
use Koha::RecordProcessor;
my $query = CGI->new();
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
{
template_name => "opac-ISBDdetail.tt",
query => $query,
type => "opac",
authnotrequired => ( C4::Context->preference("OpacPublic") ? 1 : 0 ),
debug => 1,
}
);
my $biblionumber = $query->param('biblionumber');
$biblionumber = int($biblionumber);
# get biblionumbers stored in the cart
if(my $cart_list = $query->cookie("bib_list")){
my @cart_list = split(/\//, $cart_list);
if ( grep {$_ eq $biblionumber} @cart_list) {
$template->param( incart => 1 );
}
}
$template->param( 'ItemsIssued' => CountItemsIssued( $biblionumber ) );
my $marcflavour = C4::Context->preference("marcflavour");
my @items = GetItemsInfo($biblionumber);
if (scalar @items >= 1) {
my @hiddenitems = GetHiddenItemnumbers(@items);
if (scalar @hiddenitems == scalar @items ) {
print $query->redirect("/cgi-bin/koha/errors/404.pl"); # escape early
exit;
}
}
my $record = GetMarcBiblio($biblionumber,1);
if ( ! $record ) {
print $query->redirect("/cgi-bin/koha/errors/404.pl");
exit;
}
my $framework = GetFrameworkCode( $biblionumber );
my $record_processor = Koha::RecordProcessor->new({
filters => 'ViewPolicy',
options => {
interface => 'opac',
frameworkcode => $framework
}
});
$record_processor->process($record);
# some useful variables for enhanced content;
# in each case, we're grabbing the first value we find in
# the record and normalizing it
my $upc = GetNormalizedUPC($record,$marcflavour);
my $ean = GetNormalizedEAN($record,$marcflavour);
my $oclc = GetNormalizedOCLCNumber($record,$marcflavour);
my $isbn = GetNormalizedISBN(undef,$record,$marcflavour);
my $content_identifier_exists;
if ( $isbn or $ean or $oclc or $upc ) {
$content_identifier_exists = 1;
}
$template->param(
normalized_upc => $upc,
normalized_ean => $ean,
normalized_oclc => $oclc,
normalized_isbn => $isbn,
content_identifier_exists => $content_identifier_exists,
);
#coping with subscriptions
my $subscriptionsnumber = CountSubscriptionFromBiblionumber($biblionumber);
my $dbh = C4::Context->dbh;
my $dat = TransformMarcToKoha( $record );
my @subscriptions = SearchSubscriptions({ biblionumber => $biblionumber, orderby => 'title' });
my @subs;
foreach my $subscription (@subscriptions) {
my %cell;
my $serials_to_display;
$cell{subscriptionid} = $subscription->{subscriptionid};
$cell{subscriptionnotes} = $subscription->{notes};
$cell{branchcode} = $subscription->{branchcode};
#get the three latest serials.
$serials_to_display = $subscription->{opacdisplaycount};
$serials_to_display = C4::Context->preference('OPACSerialIssueDisplayCount') unless $serials_to_display;
$cell{opacdisplaycount} = $serials_to_display;
$cell{latestserials} =
GetLatestSerials( $subscription->{subscriptionid}, $serials_to_display );
push @subs, \%cell;
}
$template->param(
subscriptions => \@subs,
subscriptionsnumber => $subscriptionsnumber,
);
my $norequests = 1;
my $allow_onshelf_holds;
my $res = GetISBDView({
'record' => $record,
'template' => 'opac',
'framework' => $framework
});
my $itemtypes = GetItemTypes();
my $borrower = GetMember( 'borrowernumber' => $loggedinuser );
for my $itm (@items) {
$norequests = 0
if $norequests
&& !$itm->{'withdrawn'}
&& !$itm->{'itemlost'}
&& ($itm->{'itemnotforloan'}<0 || not $itm->{'itemnotforloan'})
&& !$itemtypes->{$itm->{'itype'}}->{notforloan}
&& $itm->{'itemnumber'};
$allow_onshelf_holds = C4::Reserves::OnShelfHoldsAllowed($itm, $borrower)
unless $allow_onshelf_holds;
}
$template->param(
RequestOnOpac => C4::Context->preference("RequestOnOpac"),
AllowOnShelfHolds => $allow_onshelf_holds,
norequests => $norequests,
ISBD => $res,
biblionumber => $biblionumber,
);
#Search for title in links
my $marccontrolnumber = GetMarcControlnumber ($record, $marcflavour);
my $marcissns = GetMarcISSN ( $record, $marcflavour );
my $issn = $marcissns->[0] || '';
if (my $search_for_title = C4::Context->preference('OPACSearchForTitleIn')){
$dat->{title} =~ s/\/+$//; # remove trailing slash
$dat->{title} =~ s/\s+$//; # remove trailing space
$search_for_title = parametrized_url(
$search_for_title,
{
TITLE => $dat->{title},
AUTHOR => $dat->{author},
ISBN => $isbn,
ISSN => $issn,
CONTROLNUMBER => $marccontrolnumber,
BIBLIONUMBER => $biblionumber,
}
);
$template->param('OPACSearchForTitleIn' => $search_for_title);
}
output_html_with_http_headers $query, $cookie, $template->output;