X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=opac%2Fopac-basket.pl;h=d66fd0127c54d1ee130c92250fee61be4ed2c893;hb=6d3136c7e893011bd7cdfd0b6415d20929b6a66b;hp=5e92d15a77a24de7e4725f33811e1d7513818750;hpb=88b3711ca918877796d8577c54efe3f0aba96673;p=koha.git diff --git a/opac/opac-basket.pl b/opac/opac-basket.pl index 5e92d15a77..d66fd0127c 100755 --- a/opac/opac-basket.pl +++ b/opac/opac-basket.pl @@ -2,47 +2,49 @@ # 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 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. +# 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., 59 Temple Place, -# Suite 330, Boston, MA 02111-1307 USA +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . +use Modern::Perl; + +use CGI qw ( -utf8 ); +use List::Util qw/none/; # well just one :) -use strict; -use warnings; -use CGI; use C4::Koha; use C4::Biblio; use C4::Items; +use C4::Circulation; use C4::Auth; use C4::Output; +use Koha::RecordProcessor; + +use Koha::AuthorisedValues; my $query = new CGI; my ( $template, $borrowernumber, $cookie ) = get_template_and_user ( { - template_name => "opac-basket.tmpl", + template_name => "opac-basket.tt", query => $query, type => "opac", authnotrequired => ( C4::Context->preference("OpacPublic") ? 1 : 0 ), - flagsrequired => { borrow => 1 }, } ); my $bib_list = $query->param('bib_list'); -my $print_basket = $query->param('print'); my $verbose = $query->param('verbose'); if ($verbose) { $template->param( verbose => 1 ); } -if ($print_basket) { $template->param( print_basket => 1 ); } my @bibs = split( /\//, $bib_list ); my @results; @@ -56,26 +58,63 @@ if (C4::Context->preference('TagsEnabled')) { } } +my $borcat = q{}; +if ( C4::Context->preference('OpacHiddenItemsExceptions') ) { + # we need to fetch the borrower info here, so we can pass the category + my $patron = Koha::Patrons->find($borrowernumber); + $borcat = $patron ? $patron->categorycode : $borcat; +} +my $record_processor = Koha::RecordProcessor->new({ filters => 'ViewPolicy' }); foreach my $biblionumber ( @bibs ) { $template->param( biblionumber => $biblionumber ); my $dat = &GetBiblioData($biblionumber); - my $record = &GetMarcBiblio($biblionumber); + next unless $dat; + + # No filtering on the item records needed for the record itself + # since the only reason item information is grabbed is because of branchcodes. + my $record = &GetMarcBiblio({ biblionumber => $biblionumber }); + my $framework = &GetFrameworkCode( $biblionumber ); + $record_processor->options({ + interface => 'opac', + frameworkcode => $framework + }); + $record_processor->process($record); next unless $record; my $marcnotesarray = GetMarcNotes( $record, $marcflavour ); my $marcauthorsarray = GetMarcAuthors( $record, $marcflavour ); my $marcsubjctsarray = GetMarcSubjects( $record, $marcflavour ); my $marcseriesarray = GetMarcSeries ($record,$marcflavour); my $marcurlsarray = GetMarcUrls ($record,$marcflavour); - my @items = &GetItemsLocationInfo( $biblionumber ); + + # grab all the items... + my @all_items = &GetItemsInfo( $biblionumber ); + + # determine which ones should be hidden / visible + my @hidden_items = GetHiddenItemnumbers({ items => \@all_items, borcat => $borcat }); + + # If every item is hidden, then the biblio should be hidden too. + next if (scalar @all_items >= 1 && scalar @hidden_items == scalar @all_items); + + # copy the visible ones into the items array. + my @items; + foreach my $item (@all_items) { + if ( none { $item->{itemnumber} ne $_ } @hidden_items ) { + push @items, $item; + } + } + my $subtitle = GetRecordValue('subtitle', $record, GetFrameworkCode($biblionumber)); my $hasauthors = 0; if($dat->{'author'} || @$marcauthorsarray) { $hasauthors = 1; } - my $collections = GetKohaAuthorisedValues('items.ccode',$dat->{'frameworkcode'}, 'opac'); + my $collections = + { map { $_->{authorised_value} => $_->{opac_description} } Koha::AuthorisedValues->get_descriptions_by_koha_field( { frameworkcode => $dat->{frameworkcode}, kohafield => 'items.ccode' } ) }; + my $shelflocations = + { map { $_->{authorised_value} => $_->{opac_description} } Koha::AuthorisedValues->get_descriptions_by_koha_field( { frameworkcode => $dat->{frameworkcode}, kohafield => 'items.location' } ) }; # COinS format FIXME: for books Only my $coins_format; @@ -88,6 +127,17 @@ foreach my $biblionumber ( @bibs ) { $dat->{'even'} = 1; } + for my $itm (@items) { + if ($itm->{'location'}){ + $itm->{'location_opac'} = $shelflocations->{$itm->{'location'} }; + } + my ( $transfertwhen, $transfertfrom, $transfertto ) = GetTransfers($itm->{itemnumber}); + if ( defined( $transfertwhen ) && $transfertwhen ne '' ) { + $itm->{transfertwhen} = $transfertwhen; + $itm->{transfertfrom} = $transfertfrom; + $itm->{transfertto} = $transfertto; + } + } $num++; $dat->{biblionumber} = $biblionumber; $dat->{ITEM_RESULTS} = \@items; @@ -120,4 +170,4 @@ $template->param( BIBLIO_RESULTS => $resultsarray, ); -output_html_with_http_headers $query, $cookie, $template->output; +output_html_with_http_headers $query, $cookie, $template->output, undef, { force_no_caching => 1 };