Koha/Koha/MetadataRecord.pm
Jonathan Druart 7d8b96803f
Bug 24545: Fix license statements
Bug 9978 should have fixed them all, but some were missing.
We want all the license statements part of Koha to be identical, and
using the GPLv3 statement.

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
2020-02-24 13:31:26 +00:00

125 lines
3.1 KiB
Perl

package Koha::MetadataRecord;
# Copyright 2013 C & P Bibliography Services
#
# This file is part of Koha.
#
# Koha is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Koha is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Koha; if not, see <http://www.gnu.org/licenses>.
=head1 NAME
Koha::MetadataRecord - base class for metadata records
=head1 SYNOPSIS
my $record = new Koha::MetadataRecord({ 'record' => $record });
=head1 DESCRIPTION
Object-oriented class that encapsulates all metadata (i.e. bibliographic
and authority) records in Koha.
=cut
use Modern::Perl;
use Carp;
use C4::Biblio;
use Koha::Util::MARC;
use base qw(Class::Accessor);
__PACKAGE__->mk_accessors(qw( record schema format id ));
=head2 new
my $metadata_record = new Koha::MetadataRecord({
record => $record,
schema => $schema,
format => $format,
id => $id
});
Returns a Koha::MetadataRecord object encapsulating record metadata.
C<$record> is expected to be a deserialized object (for example
a MARC::Record or XML::LibXML::Document object or JSON).
C<$schema> is used to describe the metadata schema (for example
marc21, unimarc, dc, mods, etc).
C<$format> is used to specify the serialization format. It is important
for Koha::RecordProcessor because it will pick the right Koha::Filter
implementation based on this parameter. Valid values are:
MARC (for MARC::Record objects)
XML (for XML::LibXML::Document objects)
JSON (for JSON objects)
(optional) C<$id> is used so the record carries its own id and Koha doesn't
need to look for it inside the record.
=cut
sub new {
my $class = shift;
my $params = shift;
if (!defined $params->{ record }) {
carp 'No record passed';
return;
}
if (!defined $params->{ schema }) {
carp 'No schema passed';
return;
}
$params->{format} //= 'MARC';
my $self = $class->SUPER::new($params);
bless $self, $class;
return $self;
}
=head2 createMergeHash
Create a hash for use when merging records. At the moment the only
metadata schema supported is MARC.
=cut
sub createMergeHash {
my ($self, $tagslib) = @_;
if ($self->schema =~ m/marc/) {
return Koha::Util::MARC::createMergeHash($self->record, $tagslib);
}
}
=head2 getKohaField
$metadata->{$key} = $record->getKohaField($kohafield);
=cut
sub getKohaField {
my ($self, $kohafield) = @_;
if ($self->schema =~ m/marc/) {
return C4::Biblio::TransformMarcToKohaOneField($kohafield, $self->record);
}
}
1;