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

(-)a/C4/Search.pm (+30 lines)
Lines 1472-1477 sub buildQuery { Link Here
1472
            $limit_cgi       .= "&limit=" . uri_escape_utf8($this_limit);
1472
            $limit_cgi       .= "&limit=" . uri_escape_utf8($this_limit);
1473
            $limit_desc      .= " $this_limit";
1473
            $limit_desc      .= " $this_limit";
1474
        }
1474
        }
1475
        elsif ( $this_limit =~ 'multibranchlimit|^branch' ) {
1476
            $limit_cgi  .= "&limit=" . uri_escape_utf8($this_limit);
1477
            $limit .= " and " if $limit || $query;
1478
            my $branchfield  = C4::Context->preference('SearchLimitLibrary');
1479
            my @branchcodes;
1480
            if(  $this_limit =~ 'multibranchlimit' ){
1481
                my ($group_id) = ( $this_limit =~ /^multibranchlimit:(.*)$/ );
1482
                my $search_group = Koha::Library::Groups->find( $group_id );
1483
                @branchcodes  = map { $_->branchcode } $search_group->all_libraries;
1484
                @branchcodes = sort { $a cmp $b } @branchcodes;
1485
            } else {
1486
                @branchcodes = ( $this_limit =~ /^branch:(.*)$/ );
1487
            }
1488
1489
            if (@branchcodes) {
1490
                if ( $branchfield eq "homebranch" ) {
1491
                    $this_limit = sprintf "(%s)", join " or ", map { 'homebranch: ' . $_ } @branchcodes;
1492
                }
1493
                elsif ( $branchfield eq "holdingbranch" ) {
1494
                    $this_limit = sprintf "(%s)", join " or ", map { 'holdingbranch: ' . $_ } @branchcodes;
1495
                }
1496
                else {
1497
                    $this_limit =  sprintf "(%s or %s)",
1498
                      join( " or ", map { 'homebranch: ' . $_ } @branchcodes ),
1499
                      join( " or ", map { 'holdingbranch: ' . $_ } @branchcodes );
1500
                }
1501
            }
1502
            $limit .= "$this_limit";
1503
            $limit_desc .= " $this_limit";
1504
        }
1475
1505
1476
        # Regular old limits
1506
        # Regular old limits
1477
        else {
1507
        else {
(-)a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm (+26 lines)
Lines 1011-1016 sub _fix_limit_special_cases { Link Here
1011
            $date = $self->_modify_string_by_type(type => 'st-year', operand => $date);
1011
            $date = $self->_modify_string_by_type(type => 'st-year', operand => $date);
1012
            push @new_lim, "date-of-publication:$date";
1012
            push @new_lim, "date-of-publication:$date";
1013
        }
1013
        }
1014
        elsif ( $l =~ 'multibranchlimit|^branch' ) {
1015
            my $branchfield  = C4::Context->preference('SearchLimitLibrary');
1016
            my @branchcodes;
1017
            if( $l =~ 'multibranchlimit' ) {
1018
                my ($group_id) = ( $l =~ /^multibranchlimit:(.*)$/ );
1019
                my $search_group = Koha::Library::Groups->find( $group_id );
1020
                @branchcodes = map { $_->branchcode } $search_group->all_libraries;
1021
                @branchcodes = sort { $a cmp $b } @branchcodes;
1022
            } else {
1023
                @branchcodes = ( $l =~ /^branch:(.*)$/ );
1024
            }
1025
1026
            if (@branchcodes) {
1027
                if ( $branchfield eq "homebranch" ) {
1028
                    push @new_lim, sprintf "(%s)", join " OR ", map { 'homebranch: ' . $_ } @branchcodes;
1029
                }
1030
                elsif ( $branchfield eq "holdingbranch" ) {
1031
                    push @new_lim, sprintf "(%s)", join " OR ", map { 'holdingbranch: ' . $_ } @branchcodes;
1032
                }
1033
                else {
1034
                    push @new_lim, sprintf "(%s OR %s)",
1035
                      join( " OR ", map { 'homebranch: ' . $_ } @branchcodes ),
1036
                      join( " OR ", map { 'holdingbranch: ' . $_ } @branchcodes );
1037
                }
1038
            }
1039
        }
1014
        elsif ( $l =~ /^available$/ ) {
1040
        elsif ( $l =~ /^available$/ ) {
1015
            push @new_lim, 'onloan:false';
1041
            push @new_lim, 'onloan:false';
1016
        }
1042
        }
(-)a/catalogue/search.pl (-39 lines)
Lines 378-422 my @nolimits = map uri_unescape($_), $cgi->multi_param('nolimit'); Link Here
378
my %is_nolimit = map { $_ => 1 } @nolimits;
378
my %is_nolimit = map { $_ => 1 } @nolimits;
379
@limits = grep { not $is_nolimit{$_} } @limits;
379
@limits = grep { not $is_nolimit{$_} } @limits;
380
380
381
if ( $params->{'multibranchlimit'} ) {
382
    my $branchfield  = C4::Context->preference('SearchLimitLibrary');
383
    my $search_group = Koha::Library::Groups->find( $params->{multibranchlimit} );
384
    my @branchcodes  = map { $_->branchcode } $search_group->all_libraries;
385
386
    if (@branchcodes) {
387
        if ( $branchfield eq "homebranch" ) {
388
            push @limits, sprintf "(%s)", join " or ", map { 'homebranch: ' . $_ } @branchcodes;
389
        }
390
        elsif ( $branchfield eq "holdingbranch" ) {
391
            push @limits, sprintf "(%s)", join " or ", map { 'holdingbranch: ' . $_ } @branchcodes;
392
        }
393
        else {
394
            push @limits, sprintf "(%s or %s)",
395
              join( " or ", map { 'homebranch: ' . $_ } @branchcodes ),
396
              join( " or ", map { 'holdingbranch: ' . $_ } @branchcodes );
397
        }
398
    }
399
}
400
401
for ( my $i=0; $i<@limits; $i++ ) {
402
    if ( $limits[$i] =~ /^branch:/ ) {
403
        my $branchfield  = C4::Context->preference('SearchLimitLibrary');
404
        if ( $branchfield eq "homebranch" ) {
405
            $limits[$i] =~ s/branch/homebranch/;
406
        }
407
        elsif ( $branchfield eq "holdingbranch" ) {
408
            $limits[$i] =~ s/branch/holdingbranch/;
409
        }
410
        else {
411
            my $homebranchlimit = $limits[$i];
412
            my $holdingbranchlimit = $limits[$i];
413
            $homebranchlimit =~ s/branch/homebranch/;
414
            $holdingbranchlimit =~ s/branch/holdingbranch/;
415
            $limits[$i] = "($homebranchlimit or $holdingbranchlimit)";
416
        }
417
    }
418
}
419
420
my $available;
381
my $available;
421
foreach my $limit(@limits) {
382
foreach my $limit(@limits) {
422
    if ($limit =~/available/) {
383
    if ($limit =~/available/) {
(-)a/opac/opac-search.pl (-40 lines)
Lines 446-490 if (@searchCategories > 0) { Link Here
446
446
447
@limits = map { uri_unescape($_) } @limits;
447
@limits = map { uri_unescape($_) } @limits;
448
448
449
if ( $params->{'multibranchlimit'} || ( $branch_group_limit && $branch_group_limit =~ /^multibranchlimit-/ ) ) {
450
    my $branchfield  = C4::Context->preference('SearchLimitLibrary');
451
    my $search_group = Koha::Library::Groups->find( $params->{multibranchlimit} );
452
453
    my @branchcodes  = map { $_->branchcode } $search_group->all_libraries;
454
455
    if (@branchcodes) {
456
        if ( $branchfield eq "homebranch" ) {
457
            push @limits, sprintf "(%s)", join " or ", map { 'homebranch: ' . $_ } @branchcodes;
458
        }
459
        elsif ( $branchfield eq "holdingbranch" ) {
460
            push @limits, sprintf "(%s)", join " or ", map { 'holdingbranch: ' . $_ } @branchcodes;
461
        }
462
        else {
463
            push @limits, sprintf "(%s or %s)",
464
              join( " or ", map { 'homebranch: ' . $_ } @branchcodes ),
465
              join( " or ", map { 'holdingbranch: ' . $_ } @branchcodes );
466
        }
467
    }
468
}
469
470
for ( my $i=0; $i<@limits; $i++ ) {
471
    if ( $limits[$i] =~ /^branch:/ ) {
472
        my $branchfield  = C4::Context->preference('SearchLimitLibrary');
473
        if ( $branchfield eq "homebranch" ) {
474
            $limits[$i] =~ s/branch/homebranch/;
475
        }
476
        elsif ( $branchfield eq "holdingbranch" ) {
477
            $limits[$i] =~ s/branch/holdingbranch/;
478
        }
479
        else {
480
            my $homebranchlimit = $limits[$i];
481
            my $holdingbranchlimit = $limits[$i];
482
            $homebranchlimit =~ s/branch/homebranch/;
483
            $holdingbranchlimit =~ s/branch/holdingbranch/;
484
            $limits[$i] = "($homebranchlimit or $holdingbranchlimit)";
485
        }
486
    }
487
}
488
449
489
my $available;
450
my $available;
490
foreach my $limit(@limits) {
451
foreach my $limit(@limits) {
491
- 

Return to bug 28847