Koha-Contrib-ARK

 view release on metacpan or  search on metacpan

lib/Koha/Contrib/ARK/Update.pm  view on Meta::CPAN

package Koha::Contrib::ARK::Update;
# ABSTRACT: Update Koha ARK fields
$Koha::Contrib::ARK::Update::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};

    my $a = $self->ark->c->{ark};
    my $ark_value = $current->{ark};
    my $kfield = $a->{koha}->{ark};
    if ( $kfield->{letter} ) { # datafield
        if ( my $field = $record->field($kfield->{tag}) ) {
            my @subf = grep {
                my $keep = $_->[0] ne $kfield->{letter};
                $self->ark->what_append('remove_existing') unless $keep;
                $keep;
            } @{$field->subf};
            push @subf, [ $kfield->{letter} => $ark_value ];
            $field->subf( \@subf );
        }
        else {
            $record->append( MARC::Moose::Field::Std->new(
                tag => $kfield->{tag}, subf => [ [ $kfield->{letter} => $ark_value ] ] ) );
        }
    }
    else {
        if ( $record->field($kfield->{tag}) ) {
            $record->delete($kfield->{tag});
            $self->ark->what_append('remove_existing');
        }
        $record->append( MARC::Moose::Field::Control->new(
            tag => $kfield->{tag}, value => $ark_value ) );
    }
    $self->ark->what_append('add');
    $self->ark->current_modified();
}


__PACKAGE__->meta->make_immutable;
1;

__END__

=pod

=encoding UTF-8

=head1 NAME

Koha::Contrib::ARK::Update - Update Koha ARK fields

=head1 VERSION

version 1.1.2

=head1 AUTHOR



( run in 0.811 second using v1.01-cache-2.11-cpan-5735350b133 )