@@ -, +, @@ against selected library group value in advanced search --- catalogue/search.pl | 16 +++++++++++++--- ...bug_21249-Branch_to_limit_advanced_search_results.sql | 2 ++ .../prog/en/modules/admin/preferences/searching.pref | 8 ++++++++ opac/opac-search.pl | 12 +++++++++++- 4 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 installer/data/mysql/atomicupdate/bug_21249-Branch_to_limit_advanced_search_results.sql --- a/catalogue/search.pl +++ a/catalogue/search.pl @@ -397,12 +397,22 @@ my @nolimits = map uri_unescape($_), $cgi->multi_param('nolimit'); my %is_nolimit = map { $_ => 1 } @nolimits; @limits = grep { not $is_nolimit{$_} } @limits; +my $branchfield = C4::Context->preference('AdvancedSearchBranchFieldToUse'); + if($params->{'multibranchlimit'}) { my $search_group = Koha::Library::Groups->find( $params->{multibranchlimit} ); my @libraries = $search_group->all_libraries; - my $multihomebranch = '('.join( " or ", map { 'homebranch: ' . $_->id } @libraries ) .')'; - my $multiholdingbranch = '('.join( " or ", map { 'holdingbranch: ' . $_->id } @libraries ) .')'; - push @limits, $multihomebranch . " or " . $multiholdingbranch if ($multihomebranch && $multiholdingbranch ne '()'); + my $multihomebranch = '('.join( " or ", map { 'homebranch: ' . $_->id } @libraries ) .')'; + my $multiholdingbranch = '('.join( " or ", map { 'holdingbranch: ' . $_->id } @libraries ) .')'; + + if ( $branchfield eq "homebranch") { + push @limits, $multihomebranch if ( $multihomebranch ne '()'); + } elsif ( $branchfield eq "holdingbranch") { + push @limits, $multiholdingbranch if ( $multiholdingbranch ne '()'); + } else { + my $multihomeandholdingbranch = '('.join( " or ", map { 'homebranch: ' . $_->id, 'holdingbranch: ' . $_->id} @libraries ) .')'; + push @limits, $multihomeandholdingbranch if ($multihomeandholdingbranch ne '()'); + } } my $available; --- a/installer/data/mysql/atomicupdate/bug_21249-Branch_to_limit_advanced_search_results.sql +++ a/installer/data/mysql/atomicupdate/bug_21249-Branch_to_limit_advanced_search_results.sql @@ -0,0 +1,2 @@ +INSERT INTO systempreferences (variable, value, options, explanation, type) VALUES ('AdvancedSearchBranchToLimit', 'Homebranch AND holdingbranch', 'Homebranch|holdingbranch|Homebranch AND holdingbranch', 'When a library or group of libraries is selected from the advanced search compare the selected branch value against this branch field(s) selected', 'choice'); + --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/searching.pref +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/searching.pref @@ -151,6 +151,14 @@ Searching: az: from A to Z. za: from Z to A. - + - pref: AdvancedSearchBranchFieldToUse + default: homebranch and holdingbranch + choices: + homebranch: homebranch + holdingbranch: holdingbranch + homebranch and holdingbranch: homebranch and holdingbranch + - When a library or group of libraries is selected from the advanced search compare the selected branch value against this branch field(s) selected + - - pref: displayFacetCount type: boolean default: no --- a/opac/opac-search.pl +++ a/opac/opac-search.pl @@ -490,12 +490,22 @@ if (@searchCategories > 0) { @limits = map { uri_unescape($_) } @limits; +my $branchfield = C4::Context->preference('AdvancedSearchBranchFieldToUse'); + if($params->{'multibranchlimit'}) { my $search_group = Koha::Library::Groups->find( $params->{multibranchlimit} ); my @libraries = $search_group->all_libraries; my $multihomebranch = '('.join( " or ", map { 'homebranch: ' . $_->id } @libraries ) .')'; my $multiholdingbranch = '('.join( " or ", map { 'holdingbranch: ' . $_->id } @libraries ) .')'; - push @limits, $multihomebranch . " or " . $multiholdingbranch if ($multihomebranch && $multiholdingbranch ne '()'); + + if ( $branchfield eq "homebranch" ) { + push @limits, $multihomebranch if ( $multihomebranch ne '()'); + } elsif ( $branchfield eq "holdingbranch") { + push @limits, $multiholdingbranch if ( $multiholdingbranch ne '()'); + } else { + my $multihomeandholdingbranch = '('.join( " or ", map { 'homebranch: ' . $_->id, 'holdingbranch: ' . $_->id} @libraries ) .')'; + push @limits, $multihomeandholdingbranch if ($multihomeandholdingbranch ne '()'); + } } my $available; --