View | Details | Raw Unified | Return to bug 23247
Collapse All | Expand All

(-)a/opac/opac-MARCdetail.pl (-27 / +20 lines)
Lines 59-65 use C4::Koha; Link Here
59
use List::MoreUtils qw( any uniq );
59
use List::MoreUtils qw( any uniq );
60
use Koha::Biblios;
60
use Koha::Biblios;
61
use Koha::CirculationRules;
61
use Koha::CirculationRules;
62
use Koha::Items;
63
use Koha::ItemTypes;
62
use Koha::ItemTypes;
64
use Koha::Patrons;
63
use Koha::Patrons;
65
use Koha::RecordProcessor;
64
use Koha::RecordProcessor;
Lines 85-123 my ( $template, $loggedinuser, $cookie ) = get_template_and_user( Link Here
85
    }
84
    }
86
);
85
);
87
86
88
my $patron = Koha::Patrons->find( $loggedinuser );
87
my $biblio = Koha::Biblios->find( $biblionumber, { prefetch => [ 'metadata', 'items' ] } );
89
my $borcat = q{};
90
if ( C4::Context->preference('OpacHiddenItemsExceptions') ) {
91
    # we need to fetch the borrower info here, so we can pass the category
92
    $borcat = $patron ? $patron->categorycode : $borcat;
93
}
94
88
95
my $record = GetMarcBiblio({
89
unless ( $biblio ) {
96
    biblionumber => $biblionumber,
97
    embed_items  => 1,
98
    opac         => 1,
99
    borcat       => $borcat });
100
if ( ! $record ) {
101
    print $query->redirect("/cgi-bin/koha/errors/404.pl");
90
    print $query->redirect("/cgi-bin/koha/errors/404.pl");
102
    exit;
91
    exit;
103
}
92
}
104
93
105
my @all_items = GetItemsInfo($biblionumber);
94
my $patron = Koha::Patrons->find( $loggedinuser );
106
my $biblio = Koha::Biblios->find( $biblionumber );
95
107
my $framework = $biblio ? $biblio->frameworkcode : q{};
96
my $opachiddenitems_rules = C4::Context->yaml_preference('OpacHiddenItems');
108
my $tagslib = &GetMarcStructure( 0, $framework );
97
109
my ($tag_itemnumber,$subtag_itemnumber) = &GetMarcFromKohaField( 'items.itemnumber' );
98
unless ( $patron and $patron->category->override_hidden_items ) {
110
my @nonhiddenitems = $record->field($tag_itemnumber);
99
    # only skip this check if there's a logged in user
111
if (scalar @all_items >= 1 && scalar @nonhiddenitems == 0) {
100
    # and its category overrides OpacHiddenItems
112
    print $query->redirect("/cgi-bin/koha/errors/404.pl");
101
    if ( $biblio->hidden_in_opac({ rules => $opachiddenitems_rules }) ) {
113
    exit;
102
        print $query->redirect('/cgi-bin/koha/errors/404.pl'); # escape early
103
        exit;
104
    }
114
}
105
}
115
106
107
my $record      = $biblio->metadata->record;
108
my $marcflavour = C4::Context->preference("marcflavour");
109
116
my $record_processor = Koha::RecordProcessor->new({
110
my $record_processor = Koha::RecordProcessor->new({
117
    filters => 'ViewPolicy',
111
    filters => 'ViewPolicy',
118
    options => {
112
    options => {
119
        interface => 'opac',
113
        interface => 'opac',
120
        frameworkcode => $framework
114
        frameworkcode => $biblio->frameworkcode
121
    }
115
    }
122
});
116
});
123
$record_processor->process($record);
117
$record_processor->process($record);
Lines 130-135 if(my $cart_list = $query->cookie("bib_list")){ Link Here
130
    }
124
    }
131
}
125
}
132
126
127
my $tagslib = &GetMarcStructure( 0, $biblio->frameworkcode );
133
my ($bt_tag,$bt_subtag) = GetMarcFromKohaField( 'biblio.title' );
128
my ($bt_tag,$bt_subtag) = GetMarcFromKohaField( 'biblio.title' );
134
$template->param(
129
$template->param(
135
    bibliotitle => $biblio->title,
130
    bibliotitle => $biblio->title,
Lines 137-144 $template->param( Link Here
137
     $tagslib->{$bt_tag}->{$bt_subtag}->{hidden} > -8;   # except -8;
132
     $tagslib->{$bt_tag}->{$bt_subtag}->{hidden} > -8;   # except -8;
138
133
139
my $allow_onshelf_holds;
134
my $allow_onshelf_holds;
140
for my $itm (@all_items) {
135
my $items = $biblio->items;
141
    my $item = Koha::Items->find( $itm->{itemnumber} );
136
while ( my $item = $items->next ) {
142
    $allow_onshelf_holds = Koha::CirculationRules->get_onshelfholds_policy( { item => $item, patron => $patron } );
137
    $allow_onshelf_holds = Koha::CirculationRules->get_onshelfholds_policy( { item => $item, patron => $patron } );
143
    last if $allow_onshelf_holds;
138
    last if $allow_onshelf_holds;
144
}
139
}
Lines 341-347 if ( C4::Context->preference("OPACISBD") ) { Link Here
341
}
336
}
342
337
343
#Search for title in links
338
#Search for title in links
344
my $marcflavour  = C4::Context->preference("marcflavour");
345
my $dat = TransformMarcToKoha( $record );
339
my $dat = TransformMarcToKoha( $record );
346
my $isbn = GetNormalizedISBN(undef,$record,$marcflavour);
340
my $isbn = GetNormalizedISBN(undef,$record,$marcflavour);
347
my $marccontrolnumber   = GetMarcControlnumber ($record, $marcflavour);
341
my $marccontrolnumber   = GetMarcControlnumber ($record, $marcflavour);
348
- 

Return to bug 23247