Koha-Contrib-ARK
view release on metacpan or search on metacpan
lib/Koha/Contrib/ARK/Fix.pm view on Meta::CPAN
package Koha::Contrib::ARK::Fix;
# ABSTRACT: Fix Koha ARK field
$Koha::Contrib::ARK::Fix::VERSION = '1.1.2';
use Moose;
use Modern::Perl;
with 'Koha::Contrib::ARK::Action';
sub action {
my $self = shift;
my $ark = $self->ark;
my $current = $ark->current;
my $biblio = $current->{biblio};
my $record = $biblio->{record};
return unless $record;
my $ka = $ark->c->{ark}->{koha}->{ark};
my ($tag, $letter) = ($ka->{tag}, $ka->{letter});
# Is a bad ARK found in the correct field?
my $ark_value = $current->{ark};
my $field = $record->field($tag);
return unless $field;
my $current_ark = $letter ? $field->subfield($letter) : $field->value;
return if $current_ark eq $ark_value;
my $more = "Replace $current_ark with $ark_value";
$self->ark->what_append('fix', $more);
$self->ark->current_modified();
if ($letter) {
my $done = 0;
$field->subf( [ map {
if (!$done && $_->[0] eq $letter) {
$_->[1] = $ark_value;
$done = 1;
}
$_;
} @{$field->subf} ]);
}
else {
$field->value($ark_value);
}
}
__PACKAGE__->meta->make_immutable;
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
Koha::Contrib::ARK::Fix - Fix Koha ARK field
=head1 VERSION
version 1.1.2
( run in 2.366 seconds using v1.01-cache-2.11-cpan-4ac696b4eb4 )