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

(-)a/Koha/REST/V1/Biblio.pm (-3 / +48 lines)
Lines 19-26 use Modern::Perl; Link Here
19
19
20
use Mojo::Base 'Mojolicious::Controller';
20
use Mojo::Base 'Mojolicious::Controller';
21
21
22
use C4::Auth qw( haspermission );
23
use C4::Context;
24
22
use C4::Biblio qw( GetBiblioData AddBiblio ModBiblio DelBiblio );
25
use C4::Biblio qw( GetBiblioData AddBiblio ModBiblio DelBiblio );
23
use C4::Items qw ( AddItemBatchFromMarc );
26
use C4::Items qw ( AddItemBatchFromMarc GetHiddenItemnumbers );
24
use Koha::Biblios;
27
use Koha::Biblios;
25
use MARC::Record;
28
use MARC::Record;
26
use MARC::Batch;
29
use MARC::Batch;
Lines 46-52 sub getitems { Link Here
46
    unless ($biblio) {
49
    unless ($biblio) {
47
        return $c->$cb({error => "Biblio not found"}, 404);
50
        return $c->$cb({error => "Biblio not found"}, 404);
48
    }
51
    }
49
    return $c->$cb({ biblio => $biblio->unblessed, items => $biblio->items->unblessed }, 200);
52
53
    my $items = $biblio->items->unblessed;
54
    my $user = $c->stash('koha.user');
55
56
    if (_hide_opac_hidden_items($user)) {
57
        $items = _filter_hidden_items($items);
58
    }
59
60
    return $c->$cb({ biblio => $biblio->unblessed, items => $items }, 200);
50
}
61
}
51
62
52
sub getexpanded {
63
sub getexpanded {
Lines 56-62 sub getexpanded { Link Here
56
    unless ($biblio) {
67
    unless ($biblio) {
57
        return $c->$cb({error => "Biblio not found"}, 404);
68
        return $c->$cb({error => "Biblio not found"}, 404);
58
    }
69
    }
70
59
    my $expanded = $biblio->items->unblessed;
71
    my $expanded = $biblio->items->unblessed;
72
    my $user = $c->stash('koha.user');
73
74
    if (_hide_opac_hidden_items($user)) {
75
        $expanded = _filter_hidden_items($expanded);
76
    }
77
60
    for my $item (@{$expanded}) {
78
    for my $item (@{$expanded}) {
61
79
62
        # we assume item is available by default
80
        # we assume item is available by default
Lines 170-173 sub delete { Link Here
170
    }
188
    }
171
}
189
}
172
190
191
sub _hide_opac_hidden_items {
192
    my ($user) = @_;
193
194
    my $isStaff = haspermission($user->userid, {borrowers => 1});
195
196
    # Hide the hidden items from all but staff
197
    my $hide_items = ! $isStaff && ( C4::Context->preference('OpacHiddenItems') !~ /^\s*$/ );
198
199
    return $hide_items;
200
}
201
202
sub _filter_hidden_items {
203
    my ($items) = @_;
204
205
    my @hiddenitems = C4::Items::GetHiddenItemnumbers( @{$items} );
206
207
    my @filteredItems = ();
208
209
    # Convert to a hash for quick searching
210
    my %hiddenitems = map { $_ => 1 } @hiddenitems;
211
    for my $item (@{$items}) {
212
        next if $hiddenitems{$item->{itemnumber}};
213
        push @filteredItems, $item;
214
    }
215
216
    return \@filteredItems;
217
}
218
173
1;
219
1;
174
- 

Return to bug 17371