From 4d3519dffdb54dd6e9d9d701cb0edb0cc724f8dd Mon Sep 17 00:00:00 2001 From: Joshua Ferraro Date: Tue, 8 Apr 2008 09:15:24 -0400 Subject: [PATCH] Partial fixes to enable unapi for non-zebra and non-public-facing sru Signed-off-by: Joshua Ferraro --- C4/Search.pm | 2 +- C4/XSLT.pm | 3 +-- .../prog/en/xslt/MARC21slim2OPACDetail.xsl | 7 +++++-- .../prog/en/xslt/MARC21slim2OPACResults.xsl | 1 + opac/opac-detail.pl | 2 +- opac/unapi | 21 ++++++++++++++++++- 6 files changed, 29 insertions(+), 7 deletions(-) diff --git a/C4/Search.pm b/C4/Search.pm index cbff21f32d..e72222598e 100644 --- a/C4/Search.pm +++ b/C4/Search.pm @@ -1490,7 +1490,7 @@ s/\[(.?.?.?.?)$tagsubf(.*?)]/$1$subfieldvalue$2\[$1$tagsubf$2]/g; # XSLT processing of some stuff if (C4::Context->preference("XSLTResultsDisplay") ) { - my $newxmlrecord = XSLTParse4Display($oldbiblio->{biblionumber},'Results'); + my $newxmlrecord = XSLTParse4Display($oldbiblio->{biblionumber},C4::Context->config('opachtdocs')."/prog/en/xslt/MARC21slim2OPACResults.xsl"); $oldbiblio->{XSLTResultsRecord} = $newxmlrecord; } diff --git a/C4/XSLT.pm b/C4/XSLT.pm index d6cdcfaef1..4a383fbdbf 100644 --- a/C4/XSLT.pm +++ b/C4/XSLT.pm @@ -101,13 +101,12 @@ sub getAuthorisedValues4MARCSubfields { } sub XSLTParse4Display { - my ($biblionumber,$type) = @_; + my ($biblionumber,$xslfile) = @_; # grab the XML, run it through our stylesheet, push it out to the browser my $record = transformMARCXML4XSLT($biblionumber); my $itemsxml = buildKohaItemsNamespace($biblionumber); my $xmlrecord = $record->as_xml(); $xmlrecord =~ s/\<\/record\>/$itemsxml\<\/record\>/; - my $xslfile = C4::Context->config('opachtdocs')."/prog/en/xslt/MARC21slim2OPAC$type.xsl"; my $parser = XML::LibXML->new(); # don't die when you find &, >, etc $parser->recover_silently(1); diff --git a/koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACDetail.xsl b/koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACDetail.xsl index dbeffa6918..72182ed25e 100644 --- a/koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACDetail.xsl +++ b/koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACDetail.xsl @@ -54,6 +54,7 @@ ab + .; @@ -139,7 +140,7 @@

- +

Library of Congress Classification:

@@ -185,8 +186,10 @@

ISBN: + - + + .;

diff --git a/koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACResults.xsl b/koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACResults.xsl index ee98035455..d8ba11b59e 100644 --- a/koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACResults.xsl +++ b/koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACResults.xsl @@ -377,6 +377,7 @@ ab + .; diff --git a/opac/opac-detail.pl b/opac/opac-detail.pl index f017bcc035..40564726f0 100755 --- a/opac/opac-detail.pl +++ b/opac/opac-detail.pl @@ -51,7 +51,7 @@ my $biblionumber = $query->param('biblionumber') || $query->param('bib'); $template->param( biblionumber => $biblionumber ); # XSLT processing of some stuff if (C4::Context->preference("XSLTResultsDisplay") ) { - my $newxmlrecord = XSLTParse4Display($biblionumber,'Detail'); + my $newxmlrecord = XSLTParse4Display($biblionumber,C4::Context->config('opachtdocs')."/prog/en/xslt/MARC21slim2OPACDetail.xsl"); $template->param('XSLTBloc' => $newxmlrecord); } diff --git a/opac/unapi b/opac/unapi index 1197be5422..b6d03b3369 100755 --- a/opac/unapi +++ b/opac/unapi @@ -17,11 +17,30 @@ warn "Warning: OPACBaseURL not set in system preferences" unless $baseurl; my $id = $cgi->param('id'); my $format = $cgi->param('format'); if ($id && $format) { + # koha:isbn:0152018484 if ($id =~ /isbn/) { $id =~ s/koha:isbn://; + + # two ways to do this, one via the SRU Zebra server (fast) my $url = "http://$baseurl:9998/biblios?version=1.1&operation=searchRetrieve&query=$id&startRecord=1&maximumRecords=20&recordSchema=$format"; - my $content = get($url); + my $content= get($url); + + # the other via XSL parsing (not as fast) + unless ($content) { + + eval { + my $conn = C4::Context->Zconn('biblioserver'); + $conn->option(preferredRecordSyntax => $format); + my $rs = $conn->search_pqf('@attr 1=7 '.$id); + my $n = $rs->size(); + $content = $rs->record(0)->raw(); + }; + if ($@) { + print "Error ", $@->code(), ": ", $@->message(), "\n"; + } + + } print $cgi->header( -type =>'application/xml' ); print $content; } -- 2.39.2