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

(-)a/Koha/REST/V1/Biblios.pm (-17 / +48 lines)
Lines 161-197 sub get_biblios_public { Link Here
161
161
162
    my ( $error, $results, $total_hits ) = $searcher->simple_search_compat( $query, 0, undef );
162
    my ( $error, $results, $total_hits ) = $searcher->simple_search_compat( $query, 0, undef );
163
163
164
    if ( !$total_hits ) {
165
        return $c->render(
166
            status  => 404,
167
            openapi => { error => 'Nothing found.' }
168
        );
169
    }
170
171
    return try {
164
    return try {
172
165
173
        my $patron                = $c->stash('koha.user');
166
        my $patron                = $c->stash('koha.user');
174
        my $is_public             = $c->stash('is_public');
167
        my $is_public             = $c->stash('is_public');
175
        my $opachiddenitems_rules = C4::Context->yaml_preference('OpacHiddenItems');
168
        my $opachiddenitems_rules = C4::Context->yaml_preference('OpacHiddenItems');
176
	    my $searchengine          = C4::Context->preference('SearchEngine');
169
        my @biblionumbers;
177
170
        foreach my $res ( @$results ) {
178
	    my @biblionumbers
171
            my $bibno = $searcher->extract_biblionumber( $res );
179
            = $searchengine eq 'Zebra'
172
            push @biblionumbers, $bibno if $bibno;
180
            ? map { MARC::Record->new_from_xml( $_, 'UTF-8' )->field('999')->subfield('c') } $results->@*
173
        }
181
            : map { $_->field('999')->subfield('c') } $results->@*;
182
        my @biblios               = map { Koha::Biblios->find( { biblionumber => $_ } ) } @biblionumbers;
174
        my @biblios               = map { Koha::Biblios->find( { biblionumber => $_ } ) } @biblionumbers;
183
        my @records               = map {
175
        my @records;
176
        foreach( @biblios ) {
177
            next if ( $is_public
178
            && !( $patron && $patron->category->override_hidden_items )
179
                && $_->hidden_in_opac( { rules => $opachiddenitems_rules } ) );
180
            push @records => $_->metadata->record;
181
        }
182
183
        # Extract reserved params
184
        my ( $filtered_params, $reserved_params, $path_params ) = $c->extract_reserved_params( $c->validation->output );
185
        $reserved_params->{_per_page} //= C4::Context->preference('RESTdefaultPageSize');
186
        $reserved_params->{_page}     //= 1;
187
        my $offset = $reserved_params->{_per_page} * ($reserved_params->{_page} - 1);
188
        $offset = 0 if $offset < 0;
189
190
        my $total = scalar @records;
191
        my @paged_records;
192
        for ( my $i = $offset ; $i < ( $offset + $reserved_params->{_per_page} < $total ? $offset + $reserved_params->{_per_page} : $total ) ; $i++ ) {
193
            push @paged_records, $records[$i];
194
        }
195
196
        #Calculate the total record by removing the record hidden in opac
197
        my $biblios = Koha::Biblios->search();
198
        @biblionumbers = ();
199
        while ( my $biblio = $biblios->next ) {
200
            push @biblionumbers, $biblio->biblionumber if $biblio->biblionumber;
201
        }
202
        @biblios                        = map { Koha::Biblios->find( { biblionumber => $_ } ) } @biblionumbers;
203
        my $base_total = 0;
204
        foreach( @biblios ) {
184
            next if ( $is_public
205
            next if ( $is_public
185
            && !( $patron && $patron->category->override_hidden_items )
206
            && !( $patron && $patron->category->override_hidden_items )
186
                && $_->hidden_in_opac( { rules => $opachiddenitems_rules } ) );
207
                && $_->hidden_in_opac( { rules => $opachiddenitems_rules } ) );
187
            $_->metadata->record;
208
            $base_total++;
188
        } @biblios;
209
        }
210
211
        $c->add_pagination_headers(
212
            {
213
                base_total   => $base_total,
214
                page         => $reserved_params->{_page},
215
                per_page     => $reserved_params->{_per_page},
216
                query_params => $reserved_params->{_q_params},
217
                total        => ( $reserved_params->{_page} ? $total : $reserved_params->{_per_page} ),
218
            }
219
        );
189
220
190
        $c->respond_to(
221
        $c->respond_to(
191
            mij => {
222
            mij => {
192
                status => 200,
223
                status => 200,
193
                format => 'mij',
224
                format => 'mij',
194
                data   => '[' . ( join ',', map { $_->to_mij } @records ) . ']',
225
                data   => '[' . ( join ',', map { $_->to_mij } @paged_records ) . ']',
195
            },
226
            },
196
            any => {
227
            any => {
197
                status  => 406,
228
                status  => 406,
(-)a/api/v1/swagger/paths/biblios.yaml (-1 / +3 lines)
Lines 463-468 Link Here
463
    summary: Get biblios (public)
463
    summary: Get biblios (public)
464
    parameters:
464
    parameters:
465
      - $ref: "../swagger.yaml#/parameters/q_ccl"
465
      - $ref: "../swagger.yaml#/parameters/q_ccl"
466
      - $ref: "../swagger.yaml#/parameters/page"
467
      - $ref: "../swagger.yaml#/parameters/per_page"
468
      - $ref: "../swagger.yaml#/parameters/q_param"
466
    produces:
469
    produces:
467
      - application/marc-in-json
470
      - application/marc-in-json
468
    responses:
471
    responses:
469
- 

Return to bug 25870