X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=acqui%2Fz3950_search.pl;h=80503e0d82dbd9afa34c5d76bf69f6c17ddbaeab;hb=0a2b32675f9672c02d2a9c1ab47b5ae88f41e363;hp=444c893dc40bfaf69af143b5c11f56ef8ded7149;hpb=fe8e5fdf39f9e8ac90714a892618e3cc045e496b;p=koha.git diff --git a/acqui/z3950_search.pl b/acqui/z3950_search.pl index 444c893dc4..80503e0d82 100755 --- a/acqui/z3950_search.pl +++ b/acqui/z3950_search.pl @@ -30,6 +30,7 @@ use C4::Context; use C4::Breeding; use C4::Koha; use C4::Charset; +use C4::Bookseller qw/ GetBookSellerFromId /; use ZOOM; my $input = new CGI; @@ -44,6 +45,7 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( } ); + my $dbh = C4::Context->dbh; my $error = $input->param('error'); my $biblionumber = $input->param('biblionumber'); @@ -54,8 +56,10 @@ my $author = $input->param('author'); my $isbn = $input->param('isbn'); my $issn = $input->param('issn'); my $lccn = $input->param('lccn'); +my $lccall = $input->param('lccall'); my $subject= $input->param('subject'); my $dewey = $input->param('dewey'); +my $controlnumber = $input->param('controlnumber'); my $op = $input->param('op'); my $booksellerid = $input->param('booksellerid'); my $basketno = $input->param('basketno'); @@ -100,10 +104,14 @@ foreach my $thisframeworkcode ( keys %$frameworks ) { push @frameworkcodeloop, \%row; } +my $vendor = GetBookSellerFromId($booksellerid); $template->param( frameworkcode => $frameworkcode, frameworkcodeloop => \@frameworkcodeloop, booksellerid => $booksellerid, - basketno => $basketno); + basketno => $basketno, + name => $vendor->{'name'} + ); + if ( $op ne "do_search" ) { @@ -114,8 +122,10 @@ if ( $op ne "do_search" ) { isbn => $isbn, issn => $issn, lccn => $lccn, + lccall => $lccall, title => $title, author => $author, + controlnumber=> $controlnumber, serverloop => $serverloop, opsearch => "search", biblionumber => $biblionumber, @@ -124,8 +134,17 @@ if ( $op ne "do_search" ) { } else { my @id = $input->param('id'); + + if ( not defined @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; @@ -154,10 +173,18 @@ else { $query .= " \@attr 1=21 \"$subject\" "; $nterms++; } - if ($lccn) { + if ($lccn) { $query .= " \@attr 1=9 $lccn "; $nterms++; } + if ($lccall) { + $query .= " \@attr 1=16 \@attr 2=3 \@attr 3=1 \@attr 4=1 \@attr 5=1 \@attr 6=1 \"$lccall\" "; + $nterms++; + } + if ($controlnumber) { + $query .= " \@attr 1=12 \"$controlnumber\" "; + $nterms++; + } for my $i (1..$nterms-1) { $query = "\@and " . $query; } @@ -168,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' ); @@ -219,9 +245,10 @@ sub displayresults { 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(); @@ -248,20 +275,20 @@ sub displayresults { ##Add necessary encoding changes to here -TG my $oldbiblio = TransformMarcToKoha( $dbh, $marcrecord, "" ); $oldbiblio->{isbn} =~ s/ |-|\.//g if $oldbiblio->{isbn}; - $oldbiblio->{issn} =~ s/ |-|\.//g if $oldbiblio->{issn}; + # pad | and ( with spaces to allow line breaks in the HTML + $oldbiblio->{isbn} =~ s/\|/ \| /g if $oldbiblio->{isbn}; + $oldbiblio->{isbn} =~ s/\(/ \(/g if $oldbiblio->{isbn}; + + $oldbiblio->{issn} =~ s/ |-|\.//g if $oldbiblio->{issn}; + # pad | and ( with spaces to allow line breaks in the HTML + $oldbiblio->{issn} =~ s/\|/ \| /g if $oldbiblio->{issn}; + $oldbiblio->{issn} =~ s/\(/ \(/g if $oldbiblio->{issn}; my ( $notmarcrecord, $alreadyindb, $alreadyinfarm, $imported, $breedingid ) = 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}; @@ -270,9 +297,9 @@ 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 @@ -283,10 +310,11 @@ sub displayresults { breeding_loop => \@breeding_loop, server => $servername[$k], numberpending => $numberpending, + errconn => \@errconn ); 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();