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 <nick@bywatersolutions.com>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
This commit is contained in:
Tomas Cohen Arazi 2020-08-13 14:50:16 -03:00 committed by Jonathan Druart
parent 57e95681d4
commit a4d285a9c4
1 changed files with 20 additions and 9 deletions

View File

@ -36,6 +36,7 @@ use YAML::XS;
use CGI qw/:standard -oldstyle_urls/;
use C4::Context;
use C4::Biblio qw( GetMarcBiblio );
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;
}