X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=acqui%2Fz3950_search.pl;h=9dc8b6e2ae6030eaa499754f35d5b6fcad0fbb9c;hb=44cd5e058bca8bc1fc35cf29a04c47e8b84dccec;hp=47dbe5265ef0b979639002d646d98f3055355cc3;hpb=aef1dd15fbe37a8a9c30ba4b38f7ecd6c1fea54d;p=koha_fer diff --git a/acqui/z3950_search.pl b/acqui/z3950_search.pl index 47dbe5265e..9dc8b6e2ae 100755 --- a/acqui/z3950_search.pl +++ b/acqui/z3950_search.pl @@ -64,7 +64,6 @@ my $op = $input->param('op'); my $booksellerid = $input->param('booksellerid'); my $basketno = $input->param('basketno'); my $noconnection; -my $numberpending; my $attr = ''; my $term; my $host; @@ -88,7 +87,7 @@ unless ($random) $random = rand(1000000000); } -my $DEBUG = 0; # if set to 1, many debug message are send on syslog. +my $DEBUG = $ENV{DEBUG} || 0; # if set to 1, many debug message are send on syslog. # get framework list my $frameworks = getframeworks; @@ -131,11 +130,21 @@ if ( $op ne "do_search" ) { biblionumber => $biblionumber, ); output_html_with_http_headers $input, $cookie, $template->output; + exit; } -else { + my @id = $input->param('id'); + + if ( not @id ) { + # empty server list -> report and exit + $template->param( emptyserverlist => 1 ); + output_html_with_http_headers $input, $cookie, $template->output; + exit; + } + my @oConnection; my @oResult; + my @errconn; my $s = 0; my $query; my $nterms; @@ -164,7 +173,7 @@ else { $query .= " \@attr 1=21 \"$subject\" "; $nterms++; } - if ($lccn) { + if ($lccn) { $query .= " \@attr 1=9 $lccn "; $nterms++; } @@ -186,7 +195,6 @@ warn "query ".$query if $DEBUG; $sth->execute($servid); while ( $server = $sth->fetchrow_hashref ) { warn "serverinfo ".join(':',%$server) if $DEBUG; - my $noconnection = 0; my $option1 = new ZOOM::Options(); $option1->option( 'async' => 1 ); $option1->option( 'elementSetName', 'F' ); @@ -220,7 +228,10 @@ warn "query ".$query if $DEBUG; # $oResult[$z] = $oConnection[$z]->search_pqf($query); } -sub displayresults { + warn "# nremaining = $nremaining\n" if $DEBUG; + + while ( $nremaining-- ) { + my $k; my $event; while ( ( $k = ZOOM::event( \@oConnection ) ) != 0 ) { @@ -233,16 +244,18 @@ sub displayresults { if ( $k != 0 ) { $k--; - warn $serverhost[$k] if $DEBUG; + warn "event from $k server = ",$serverhost[$k] if $DEBUG; my ( $error, $errmsg, $addinfo, $diagset ) = $oConnection[$k]->error_x(); if ($error) { - warn "$k $serverhost[$k] error $query: $errmsg ($error) $addinfo\n" - if $DEBUG; - + if ($error =~ m/^(10000|10007)$/ ) { + push(@errconn, {'server' => $serverhost[$k]}); + } + $DEBUG and warn "$k $serverhost[$k] error $query: $errmsg ($error) $addinfo\n"; } else { my $numresults = $oResult[$k]->size(); + warn "numresults = $numresults" if $DEBUG; my $i; my $result = ''; if ( $numresults > 0 ) { @@ -280,13 +293,6 @@ sub displayresults { ) = ImportBreeding( $marcdata, 2, $serverhost[$k], $encoding[$k], $random, 'z3950' ); my %row_data; - if ( $i % 2 ) { - $toggle = 1; - } - else { - $toggle = 0; - } - $row_data{toggle} = $toggle; $row_data{server} = $servername[$k]; $row_data{isbn} = $oldbiblio->{isbn}; $row_data{lccn} = $oldbiblio->{lccn}; @@ -295,27 +301,23 @@ sub displayresults { $row_data{breedingid} = $breedingid; $row_data{biblionumber} = $biblionumber; push( @breeding_loop, \%row_data ); - + } else { - push(@breeding_loop,{'toggle'=>($i % 2)?1:0,'server'=>$servername[$k],'title'=>join(': ',$oConnection[$k]->error_x()),'breedingid'=>-1,'biblionumber'=>-1}); + push(@breeding_loop,{'server'=>$servername[$k],'title'=>join(': ',$oConnection[$k]->error_x()),'breedingid'=>-1,'biblionumber'=>-1}); } # $rec } # upto 5 results } #$numresults } } # if $k !=0 - $numberpending = $nremaining - 1; - $template->param( - breeding_loop => \@breeding_loop, - server => $servername[$k], - numberpending => $numberpending, - ); - output_html_with_http_headers $input, $cookie, $template->output if $numberpending == 0; - - # print $template->output if $firstresult !=1; + # print $template->output if $firstresult !=1; $firstresult++; -} -displayresults(); -while ( --$nremaining > 0 ) { - displayresults(); - } -} ## if op=search + + } # while nremaining + +$template->param( +breeding_loop => \@breeding_loop, +#server => $servername[$k], +numberpending => $nremaining > 0 ? $nremaining : 0, +errconn => \@errconn +); +output_html_with_http_headers $input, $cookie, $template->output;