X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=cataloguing%2Fz3950_search.pl;h=a44b5ea50c67e50c0108f7def69975042426bd3b;hb=a29a5df175f4112302de71456d4f21d0dd7f48cf;hp=cd312a18f83ba82371a6d15b75760c2810a97d8e;hpb=5c42b6512e7ee74811f6d78eaf0c1d5ed55f9d8a;p=koha_fer diff --git a/cataloguing/z3950_search.pl b/cataloguing/z3950_search.pl index cd312a18f8..a44b5ea50c 100755 --- a/cataloguing/z3950_search.pl +++ b/cataloguing/z3950_search.pl @@ -19,6 +19,7 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. use strict; +#use warnings; FIXME - Bug 2505 use CGI; use C4::Auth; @@ -40,6 +41,7 @@ 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'); @@ -80,13 +82,14 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user({ $template->param( frameworkcode => $frameworkcode, ); if ( $op ne "do_search" ) { - my $sth = $dbh->prepare("select id,host,name,checked from z3950servers order by host"); + my $sth = $dbh->prepare("SELECT id,host,name,checked FROM z3950servers ORDER BY rank, name"); $sth->execute(); my $serverloop = $sth->fetchall_arrayref( {} ); $template->param( isbn => $isbn, issn => $issn, lccn => $lccn, + lccall => $lccall, title => $title, author => $author, controlnumber=> $controlnumber, @@ -100,11 +103,19 @@ 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 $query = ''; my $nterms; if ($isbn || $issn) { $term=$isbn if ($isbn); @@ -135,6 +146,10 @@ else { $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++; @@ -153,7 +168,7 @@ for my $i (1..$nterms-1) { warn "query ".$query if $DEBUG; foreach my $servid (@id) { - my $sth = $dbh->prepare("select * from z3950servers where id=?"); + my $sth = $dbh->prepare("SELECT * FROM z3950servers WHERE id=? ORDER BY rank, name"); $sth->execute($servid); while ( $server = $sth->fetchrow_hashref ) { warn "serverinfo ".join(':',%$server) if $DEBUG; @@ -164,6 +179,7 @@ warn "query ".$query if $DEBUG; $option1->option('user', $server->{userid} ) if $server->{userid}; $option1->option('password', $server->{password}) if $server->{password}; $option1->option('preferredRecordSyntax', $server->{syntax}); + $option1->option( 'timeout', $server->{timeout} ) if ($server->{timeout}); $oConnection[$s] = create ZOOM::Connection($option1) || $DEBUG && warn( "" . $oConnection[$s]->errmsg() ); @@ -207,7 +223,7 @@ warn "query ".$query if $DEBUG; $oConnection[$k]->error_x(); if ($error) { if ($error =~ m/^(10000|10007)$/ ) { - push(@errconn, {'server' => $serverhost[$k]}); + push(@errconn, {'server' => $serverhost[$k], 'error' => $error}); } $DEBUG and warn "$k $serverhost[$k] error $query: $errmsg ($error) $addinfo\n"; } @@ -230,8 +246,15 @@ warn "query ".$query if $DEBUG; # In rel2_2 i am not sure what encoding is so no character conversion is done here ##Add necessary encoding changes to here -TG my $oldbiblio = TransformMarcToKoha( $dbh, $marcrecord, "" ); - $oldbiblio->{isbn} =~ s/ |-|\.//g, - $oldbiblio->{issn} =~ s/ |-|\.//g, + $oldbiblio->{isbn} =~ s/ |-|\.//g if $oldbiblio->{isbn}; + # 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