X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=opac%2Fopac-detail.pl;h=d81a2a1bd3990d227a8744f095122c5f55c2f52b;hb=4a060e18f994d98e6212c8578ab358c54820a97b;hp=ea7d04594b4800134be57ff216e9ead7b2d5c531;hpb=a3c922c2a1b8f24f0348480869904eccb2160079;p=koha.git diff --git a/opac/opac-detail.pl b/opac/opac-detail.pl index ea7d04594b..d81a2a1bd3 100755 --- a/opac/opac-detail.pl +++ b/opac/opac-detail.pl @@ -32,7 +32,7 @@ use C4::Biblio; use C4::Items; use C4::Circulation; use C4::Tags qw(get_tags); -use C4::XISBN qw(get_xisbns get_biblionumber_from_isbn); +use C4::XISBN qw(get_xisbns); use C4::External::Amazon; use C4::External::Syndetics qw(get_syndetics_index get_syndetics_summary get_syndetics_toc get_syndetics_excerpt get_syndetics_reviews get_syndetics_anotes ); use C4::Members; @@ -52,6 +52,8 @@ use C4::CourseReserves qw(GetItemCourseReservesInfo); use Koha::Biblios; use Koha::RecordProcessor; use Koha::AuthorisedValues; +use Koha::IssuingRules; +use Koha::Items; use Koha::ItemTypes; use Koha::Acquisition::Orders; use Koha::Virtualshelves; @@ -66,7 +68,11 @@ BEGIN { } } -my $query = new CGI; +my $query = CGI->new(); + +my $biblionumber = $query->param('biblionumber') || $query->param('bib') || 0; +$biblionumber = int($biblionumber); + my ( $template, $borrowernumber, $cookie ) = get_template_and_user( { template_name => "opac-detail.tt", @@ -76,28 +82,34 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user( } ); -my $biblionumber = $query->param('biblionumber') || $query->param('bib') || 0; -$biblionumber = int($biblionumber); - my @all_items = GetItemsInfo($biblionumber); my @hiddenitems; -if (scalar @all_items >= 1) { - push @hiddenitems, GetHiddenItemnumbers(@all_items); - - if (scalar @hiddenitems == scalar @all_items ) { - print $query->redirect("/cgi-bin/koha/errors/404.pl"); # escape early - exit; - } +my $patron = Koha::Patrons->find( $borrowernumber ); +our $borcat= q{}; +if ( C4::Context->preference('OpacHiddenItemsExceptions') ) { + $borcat = $patron ? $patron->categorycode : q{}; } -my $record = GetMarcBiblio({ biblionumber => $biblionumber }); +my $record = GetMarcBiblio({ + biblionumber => $biblionumber, + opac => 1 }); if ( ! $record ) { print $query->redirect("/cgi-bin/koha/errors/404.pl"); # escape early exit; } +if ( scalar @all_items >= 1 ) { + push @hiddenitems, + GetHiddenItemnumbers( { items => \@all_items, borcat => $borcat } ); + + if (scalar @hiddenitems == scalar @all_items ) { + print $query->redirect("/cgi-bin/koha/errors/404.pl"); # escape early + exit; + } +} + my $biblio = Koha::Biblios->find( $biblionumber ); -my $framework = &GetFrameworkCode( $biblionumber ); +my $framework = $biblio ? $biblio->frameworkcode : q{}; my $record_processor = Koha::RecordProcessor->new({ filters => 'ViewPolicy', options => { @@ -171,7 +183,6 @@ if ( $xslfile ) { } my $OpacBrowseResults = C4::Context->preference("OpacBrowseResults"); -$template->{VARS}->{'OpacBrowseResults'} = $OpacBrowseResults; # We look for the busc param to build the simple paging from the search if ($OpacBrowseResults) { @@ -198,6 +209,7 @@ if ($session->param('busc')) { } } else { for my $value (@{$arrParamsBusc->{$_}}) { + next if !defined($value); $pasarParams .= '&' if ($j); $pasarParams .= $_ . '=' . Encode::decode('UTF-8', uri_escape_utf8($value)); $j++; @@ -228,10 +240,14 @@ if ($session->param('busc')) { }; my $hits; my @newresults; + my $search_context = { + 'interface' => 'opac', + 'category' => $borcat + }; for (my $i=0;$i<@servers;$i++) { my $server = $servers[$i]; $hits = $results_hashref->{$server}->{"hits"}; - @newresults = searchResults('opac', '', $hits, $results_per_page, $offset, $arrParamsBusc->{'scan'}, $results_hashref->{$server}->{"RECORDS"}); + @newresults = searchResults( $search_context, '', $hits, $results_per_page, $offset, $arrParamsBusc->{'scan'}, $results_hashref->{$server}->{"RECORDS"}); } return \@newresults; }#searchAgain @@ -457,6 +473,7 @@ if ($session->param('busc')) { } $template->param('listResults' => \@listResults) if (@listResults); $template->param('indexPag' => 1 + $offset, 'totalPag' => $arrParamsBusc{'total'}, 'indexPagEnd' => scalar(@arrBiblios) + $offset); + $template->param( 'offset' => $offset ); } } @@ -586,10 +603,9 @@ foreach my $subscription (@subscriptions) { $cell{latestserials} = GetLatestSerials( $subscription->{subscriptionid}, $serials_to_display ); if ( $borrowernumber ) { - my $sub = getalert($borrowernumber,'issue',$subscription->{subscriptionid}); - if (@$sub[0]) { - $cell{hasalert} = 1; - } + my $subscription_object = Koha::Subscriptions->find( $subscription->{subscriptionid} ); + my $subscriber = $subscription_object->subscribers->find( $borrowernumber ); + $cell{hasalert} = 1 if $subscriber; } push @subs, \%cell; } @@ -659,8 +675,8 @@ if ( not $viewallitems and @items > $max_items_to_display ) { items_count => scalar( @items ), ); } else { - my $patron = Koha::Patrons->find( $borrowernumber ); for my $itm (@items) { + my $item = Koha::Items->find( $itm->{itemnumber} ); $itm->{holds_count} = $item_reserves{ $itm->{itemnumber} }; $itm->{priority} = $priority{ $itm->{itemnumber} }; $norequests = 0 @@ -671,7 +687,7 @@ if ( not $viewallitems and @items > $max_items_to_display ) { && !$itemtypes->{$itm->{'itype'}}->{notforloan} && $itm->{'itemnumber'}; - $allow_onshelf_holds = C4::Reserves::OnShelfHoldsAllowed( $itm, ( $patron ? $patron->unblessed : {} ) ) + $allow_onshelf_holds = Koha::IssuingRules->get_onshelfholds_policy( { item => $item, patron => $patron } ) unless $allow_onshelf_holds; # get collection code description, too @@ -753,6 +769,17 @@ if (!C4::Context->preference("OPACXSLTDetailsDisplay") ) { my $marcnotesarray = GetMarcNotes ($record,$marcflavour); my $subtitle = GetRecordValue('subtitle', $record, GetFrameworkCode($biblionumber)); +if( C4::Context->preference('ArticleRequests') ) { + my $patron = $borrowernumber ? Koha::Patrons->find($borrowernumber) : undef; + my $itemtype = Koha::ItemTypes->find($biblio->itemtype); + my $artreqpossible = $patron + ? $biblio->can_article_request( $patron ) + : $itemtype + ? $itemtype->may_article_request + : q{}; + $template->param( artreqpossible => $artreqpossible ); +} + $template->param( MARCNOTES => $marcnotesarray, norequests => $norequests, @@ -845,16 +872,16 @@ if ( C4::Context->preference('reviewson') ) { } } for my $review (@$reviews) { - my $patron = Koha::Patrons->find( $review->{borrowernumber} ); + my $review_patron = Koha::Patrons->find( $review->{borrowernumber} ); # FIXME Should be Koha::Review->reviewer or similar # setting some borrower info into this hash - if ( $patron ) { - $review->{patron} = $patron; - if ( $libravatar_enabled and $patron->email ) { - $review->{avatarurl} = libravatar_url( email => $patron->email, https => $ENV{HTTPS} ); + if ( $review_patron ) { + $review->{patron} = $review_patron; + if ( $libravatar_enabled and $review_patron->email ) { + $review->{avatarurl} = libravatar_url( email => $review_patron->email, https => $ENV{HTTPS} ); } - if ( $patron->borrowernumber eq $borrowernumber ) { + if ( $review_patron->borrowernumber eq $borrowernumber ) { $loggedincommenter = 1; } } @@ -1078,7 +1105,7 @@ if (C4::Context->preference("BakerTaylorEnabled")) { { $template->param( BakerTaylorContentURL => - sprintf("http://contentcafe2.btol.com/ContentCafeClient/ContentCafe.aspx?UserID=%s&Password=%s&ItemKey=%s&Options=Y", + sprintf("https://contentcafe2.btol.com/ContentCafeClient/ContentCafe.aspx?UserID=%s&Password=%s&ItemKey=%s&Options=Y", $bt_user,$bt_pass,$isbn) ); }