Bug 21404: Refactor _build_query subroutines
authorJosef Moravec <josef.moravec@gmail.com>
Tue, 25 Sep 2018 07:04:03 +0000 (07:04 +0000)
committerNick Clemens <nick@bywatersolutions.com>
Mon, 1 Oct 2018 11:11:39 +0000 (11:11 +0000)
Test plan:
1) Apply the patch
2) prove t/db_dependent/Breeding.t
3) Try to search using Z39.50, both, authority and biblio should still
work

Signed-off-by: Owen Leonard <oleonard@myacpl.org>

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>

C4/Breeding.pm

index db8a3a4..fc539d0 100644 (file)
@@ -147,7 +147,7 @@ sub Z3950Search {
     my $s = 0;
     my $imported=0;
 
-    my ( $zquery, $squery ) = _build_query( $pars );
+    my ( $zquery, $squery ) = _bib_build_query( $pars );
 
     my $schema = Koha::Database->new()->schema();
     my $rs = $schema->resultset('Z3950server')->search(
@@ -244,26 +244,11 @@ sub _auth_build_query {
         controlnumber     => '@attr 1=12 "#term" ',
     };
 
-    my $zquery='';
-    my $squery='';
-    my $nterms=0;
-    foreach my $k ( sort keys %$pars ) {
-    #note that the sort keys forces an identical result under Perl 5.18
-    #one of the unit tests is based on that assumption
-        if( ( my $val=$pars->{$k} ) && $qry_build->{$k} ) {
-            $qry_build->{$k} =~ s/#term/$val/g;
-            $zquery .= $qry_build->{$k};
-            $squery .= "[$k]=\"$val\" and ";
-            $nterms++;
-        }
-    }
-    $zquery = "\@and " . $zquery for 2..$nterms;
-    $squery =~ s/ and $//;
-    return ( $zquery, $squery );
-
+    return _build_query( $pars, $qry_build );
 }
 
-sub _build_query {
+sub _bib_build_query {
+
     my ( $pars ) = @_;
 
     my $qry_build = {
@@ -280,6 +265,13 @@ sub _build_query {
         stdid   => '@attr 1=1007 "#term" ',
     };
 
+    return _build_query( $pars, $qry_build );
+}
+
+sub _build_query {
+
+    my ( $pars, $qry_build ) = @_;
+
     my $zquery='';
     my $squery='';
     my $nterms=0;