- my @libraries = $search_group->all_libraries;
- my $multibranch = '('.join( " OR ", map { 'homebranch: ' . $_->branchcode } @libraries ) .')';
- push @limits, $multibranch if ($multibranch ne '()');
+
+ my @branchcodes = map { $_->branchcode } $search_group->all_libraries;
+
+ if (@branchcodes) {
+ if ( $branchfield eq "homebranch" ) {
+ push @limits, sprintf "(%s)", join " or ", map { 'homebranch: ' . $_ } @branchcodes;
+ }
+ elsif ( $branchfield eq "holdingbranch" ) {
+ push @limits, sprintf "(%s)", join " or ", map { 'holdingbranch: ' . $_ } @branchcodes;
+ }
+ else {
+ push @limits, sprintf "(%s or %s)",
+ join( " or ", map { 'homebranch: ' . $_ } @branchcodes ),
+ join( " or ", map { 'holdingbranch: ' . $_ } @branchcodes );
+ }
+ }
+}
+
+for ( my $i=0; $i<@limits; $i++ ) {
+ if ( $limits[$i] =~ /^branch:/ ) {
+ my $branchfield = C4::Context->preference('SearchLimitLibrary');
+ if ( $branchfield eq "homebranch" ) {
+ $limits[$i] =~ s/branch/homebranch/;
+ }
+ elsif ( $branchfield eq "holdingbranch" ) {
+ $limits[$i] =~ s/branch/holdingbranch/;
+ }
+ else {
+ my $homebranchlimit = $limits[$i];
+ my $holdingbranchlimit = $limits[$i];
+ $homebranchlimit =~ s/branch/homebranch/;
+ $holdingbranchlimit =~ s/branch/holdingbranch/;
+ $limits[$i] = "($homebranchlimit or $holdingbranchlimit)";
+ }
+ }