142 lines
3.3 KiB
Perl
142 lines
3.3 KiB
Perl
package Koha::Authority::MergeRequest;
|
|
|
|
# Copyright Rijksmuseum 2017
|
|
#
|
|
# 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, write to the Free Software Foundation, Inc.,
|
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
use Modern::Perl;
|
|
|
|
use parent qw(Koha::Object);
|
|
|
|
use Koha::Authorities;
|
|
use Koha::Authority::Types;
|
|
|
|
=head1 NAME
|
|
|
|
Koha::Authority::MergeRequest - Koha::Object class for single need_merge_authorities record
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
use Koha::Authority::MergeRequest;
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
Description
|
|
|
|
=head1 METHODS
|
|
|
|
=head2 INSTANCE METHODS
|
|
|
|
=head3 new
|
|
|
|
$self->new({
|
|
authid => $id,
|
|
[ authid_new => $new, ]
|
|
[ oldrecord => $marc, ]
|
|
});
|
|
|
|
authid refers to the old authority id,
|
|
authid_new optionally refers to a new different authority id
|
|
|
|
oldrecord is the MARC record belonging to the original authority record
|
|
|
|
This method returns an object and initializes the reportxml property.
|
|
|
|
=cut
|
|
|
|
sub new {
|
|
my ( $class, $params ) = @_;
|
|
my $oldrecord = delete $params->{oldrecord};
|
|
delete $params->{reportxml}; # just making sure it is empty
|
|
my $self = $class->SUPER::new( $params );
|
|
|
|
if( $self->authid && $oldrecord ) {
|
|
my $auth = Koha::Authorities->find( $self->authid );
|
|
my $type = $auth ? Koha::Authority::Types->find($auth->authtypecode) : undef;
|
|
$self->reportxml( $self->reporting_tag_xml({ record => $oldrecord, tag => $type->auth_tag_to_report })) if $type;
|
|
}
|
|
return $self;
|
|
}
|
|
|
|
=head3 oldmarc
|
|
|
|
my $record = $self->oldmarc;
|
|
|
|
Convert reportxml back to MARC::Record.
|
|
|
|
=cut
|
|
|
|
sub oldmarc {
|
|
my ( $self ) = @_;
|
|
return if !$self->reportxml;
|
|
return MARC::Record->new_from_xml( $self->reportxml, 'UTF-8' );
|
|
}
|
|
|
|
=head2 CLASS METHODS
|
|
|
|
=head3 reporting_tag_xml
|
|
|
|
my $xml = Koha::Authority::MergeRequest->reporting_tag_xml({
|
|
record => $record, tag => $tag,
|
|
});
|
|
|
|
=cut
|
|
|
|
sub reporting_tag_xml {
|
|
my ( $class, $params ) = @_;
|
|
return if !$params->{record} || !$params->{tag};
|
|
|
|
my $newrecord = MARC::Record->new;
|
|
$newrecord->encoding( 'UTF-8' );
|
|
my $reportfield = $params->{record}->field( $params->{tag} );
|
|
return if !$reportfield;
|
|
|
|
# For UNIMARC we need a field 100 that includes the encoding
|
|
# at position 13 and 14
|
|
if( C4::Context->preference('marcflavour') eq 'UNIMARC' ) {
|
|
$newrecord->append_fields(
|
|
MARC::Field->new( '100', '', '', a => ' 'x13 . '50' ),
|
|
);
|
|
}
|
|
|
|
$newrecord->append_fields( $reportfield );
|
|
return $newrecord->as_xml(
|
|
C4::Context->preference('marcflavour') eq 'UNIMARC' ?
|
|
'UNIMARCAUTH' :
|
|
'MARC21'
|
|
);
|
|
}
|
|
|
|
=head3 _type
|
|
|
|
Returns name of corresponding DBIC resultset
|
|
|
|
=cut
|
|
|
|
sub _type {
|
|
return 'NeedMergeAuthority';
|
|
}
|
|
|
|
=head1 AUTHOR
|
|
|
|
Marcel de Rooy (Rijksmuseum)
|
|
|
|
Koha Development Team
|
|
|
|
=cut
|
|
|
|
1;
|