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 )