unless ( $patron and $patron->category->override_hidden_items ) {
# only skip this check if there's a logged in user
# and its category overrides OpacHiddenItems
- if ( C4::Context->preference('OpacHiddenItemsHidesRecord') && $biblio->hidden_in_opac({ rules => $opachiddenitems_rules }) ) {
+ if ( $biblio->hidden_in_opac({ rules => $opachiddenitems_rules }) ) {
print $query->redirect('/cgi-bin/koha/errors/404.pl'); # escape early
exit;
}
exit;
}
-my @all_items = GetItemsInfo($biblionumber);
my $biblio = Koha::Biblios->find( $biblionumber );
-my $framework = $biblio ? $biblio->frameworkcode : q{};
-my $tagslib = &GetMarcStructure( 0, $framework );
-my ($tag_itemnumber,$subtag_itemnumber) = &GetMarcFromKohaField( 'items.itemnumber' );
-my @nonhiddenitems = $record->field($tag_itemnumber);
-if ( C4::Context->preference('OpacHiddenItemsHidesRecord') && scalar @all_items >= 1 && scalar @nonhiddenitems == 0 ) {
- print $query->redirect("/cgi-bin/koha/errors/404.pl");
- exit;
+unless ( $patron and $patron->category->override_hidden_items ) {
+ # only skip this check if there's a logged in user
+ # and its category overrides OpacHiddenItems
+ if ( $biblio->hidden_in_opac({ rules => C4::Context->yaml_preference('OpacHiddenItems') }) ) {
+ print $query->redirect('/cgi-bin/koha/errors/404.pl'); # escape early
+ exit;
+ }
}
+my $framework = $biblio ? $biblio->frameworkcode : q{};
+my $tagslib = &GetMarcStructure( 0, $framework );
+
my $record_processor = Koha::RecordProcessor->new({
filters => 'ViewPolicy',
options => {
$tagslib->{$bt_tag}->{$bt_subtag}->{hidden} > -8; # except -8;
my $allow_onshelf_holds;
-for my $itm (@all_items) {
- my $item = Koha::Items->find( $itm->{itemnumber} );
+my $items = $biblio->items;
+while ( my $item = $items->next ) {
$allow_onshelf_holds = Koha::CirculationRules->get_onshelfholds_policy( { item => $item, patron => $patron } );
last if $allow_onshelf_holds;
}
}
my $record_processor = Koha::RecordProcessor->new({ filters => 'ViewPolicy' });
+my $rules = C4::Context->yaml_preference('OpacHiddenItems');
+
foreach my $biblionumber ( @bibs ) {
$template->param( biblionumber => $biblionumber );
my @hidden_items = GetHiddenItemnumbers({ items => \@all_items, borcat => $borcat });
# If every item is hidden, then the biblio should be hidden too.
- next if ( C4::Context->preference('OpacHiddenItemsHidesRecord') && scalar @all_items >= 1 && scalar @hidden_items == scalar @all_items);
+ next
+ if $biblio->hidden_in_opac({ rules => $rules });
# copy the visible ones into the items array.
my @items;
}
my @hiddenitems;
my $patron = Koha::Patrons->find( $borrowernumber );
-our $borcat= q{};
-if ( C4::Context->preference('OpacHiddenItemsExceptions') ) {
- $borcat = $patron ? $patron->categorycode : q{};
-}
my $record = GetMarcBiblio({
biblionumber => $biblionumber,
exit;
}
-if ( scalar @all_items >= 1 ) {
- push @hiddenitems,
- GetHiddenItemnumbers( { items => \@all_items, borcat => $borcat } );
-
- if ( C4::Context->preference('OpacHiddenItemsHidesRecord') && scalar @hiddenitems == scalar @all_items ) {
- print $query->redirect("/cgi-bin/koha/errors/404.pl"); # escape early
+my $biblio = Koha::Biblios->find( $biblionumber );
+unless ( $patron and $patron->category->override_hidden_items ) {
+ # only skip this check if there's a logged in user
+ # and its category overrides OpacHiddenItems
+ if ( $biblio->hidden_in_opac({ rules => C4::Context->yaml_preference('OpacHiddenItems') }) ) {
+ print $query->redirect('/cgi-bin/koha/errors/404.pl'); # escape early
exit;
}
}
-my $biblio = Koha::Biblios->find( $biblionumber );
my $framework = $biblio ? $biblio->frameworkcode : q{};
my $record_processor = Koha::RecordProcessor->new({
filters => 'ViewPolicy',
my @newresults;
my $search_context = {
'interface' => 'opac',
- 'category' => $borcat
+ 'category' => ($patron) ? $patron->categorycode : q{}
};
for (my $i=0;$i<@servers;$i++) {
my $server = $servers[$i];
if ($loggedinuser) {
my $patron = Koha::Patrons->find( { borrowernumber => $loggedinuser } );
$borcat = $patron ? $patron->categorycode : $borcat;
- my $should_hide = C4::Context->preference('OpacHiddenItems') // q{};
- $should_hide = ( $should_hide =~ /\S/ ) ? 1 : 0;
+ my $rules = C4::Context->yaml_preference('OpacHiddenItems');
+ my $should_hide = ( $rules ) ? 1 : 0;
$my_tags = get_tag_rows({borrowernumber=>$loggedinuser});
my $my_approved_tags = get_approval_rows({ approved => 1 });
borcat => $borcat });
$hidden_items = \@hidden_itemnumbers;
}
- next if ( C4::Context->preference('OpacHiddenItemsHidesRecord') && $should_hide && scalar @all_items == scalar @hidden_itemnumbers );
+ next
+ if (
+ (
+ !$patron
+ or ( $patron and !$patron->category->override_hidden_items )
+ )
+ and $biblio->hidden_in_opac( { rules => $rules } )
+ );
$tag->{title} = $biblio->title;
$tag->{subtitle} = $biblio->subtitle;
$tag->{medium} = $biblio->medium;