From 64acae4412ed65a64f82448648055291c311a0fd Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Thu, 13 Aug 2020 14:50:16 -0300 Subject: [PATCH] Bug 26195: Add a way to specify authorised values should be expanded [OAI] This patch introduces a new configuration entry for OAI so the resulting records include authorised value descriptions instead of codes. This is off by default. To test: 1. Create a yaml file with the extended OAI configuration 2. Visit http://kohadev.myDNSname.org:8080/cgi-bin/koha/oai.pl 3. Browse some records => SUCCESS: The fields tied to AV show codes. 4. Update your configuration with 'expanded_avs: 1' for one of the defined format like in: --- format: marc21: metadataPrefix: marc21 metadataNamespace: http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim schema: http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd include_items: 0 marcxml: metadataPrefix: marcxml metadataNamespace: http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim schema: http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd include_items: 1 expanded_avs: 1 5. restart_all 6. Repead 3 => SUCCESS: AV descriptions are returned! 7. Sign off :-D Signed-off-by: Nick Clemens --- C4/XSLT.pm | 1 + Koha/OAI/Server/Repository.pm | 29 ++++++++++++++++++++--------- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/C4/XSLT.pm b/C4/XSLT.pm index 12c97db41e..162d273405 100644 --- a/C4/XSLT.pm +++ b/C4/XSLT.pm @@ -48,6 +48,7 @@ BEGIN { @ISA = qw(Exporter); @EXPORT = qw( &XSLTParse4Display + &transformMARCXML4XSLT ); $engine=Koha::XSLT::Base->new( { do_not_return_source => 1 } ); } diff --git a/Koha/OAI/Server/Repository.pm b/Koha/OAI/Server/Repository.pm index ad18c2dc13..f8307a18a3 100644 --- a/Koha/OAI/Server/Repository.pm +++ b/Koha/OAI/Server/Repository.pm @@ -36,6 +36,7 @@ use YAML::XS; use CGI qw/:standard -oldstyle_urls/; use C4::Context; use C4::Biblio; +use C4::XSLT qw( transformMARCXML4XSLT ); use Koha::XSLT::Base; =head1 NAME @@ -82,10 +83,11 @@ mode. A configuration file koha-oai.conf can look like that: schema: http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd include_items: 1 marcxml: - metadataPrefix: marxml + metadataPrefix: marcxml metadataNamespace: http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim schema: http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd include_items: 1 + expanded_avs: 1 oai_dc: metadataPrefix: oai_dc metadataNamespace: http://www.openarchives.org/OAI/2.0/oai_dc/ @@ -166,16 +168,25 @@ sub DESTROY { sub get_biblio_marcxml { - my ($self, $biblionumber, $format) = @_; - my $with_items = 0; + my ( $self, $biblionumber, $format ) = @_; + my $with_items = 0; + my $expanded_avs = 0; if ( my $conf = $self->{conf} ) { - $with_items = $conf->{format}->{$format}->{include_items}; + $with_items = $conf->{format}->{$format}->{include_items }; + $expanded_avs = $conf->{format}->{$format}->{expanded_avs}; } - my $record = GetMarcBiblio({ - biblionumber => $biblionumber, - embed_items => $with_items, - opac => 1 }); - $record ? $record->as_xml_record() : undef; + + my $record = GetMarcBiblio( + { + biblionumber => $biblionumber, + embed_items => $with_items, + opac => 1 + } + ); + $record = transformMARCXML4XSLT( $biblionumber, $record ) + if $expanded_avs; + + return $record ? $record->as_xml_record() : undef; } -- 2.11.0