Koha-Contrib-ARK

 view release on metacpan or  search on metacpan

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

package Koha::Contrib::ARK::Check;
# ABSTRACT: Check Koha ARK field
$Koha::Contrib::ARK::Check::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});

    # Searching ARK everywhere
    my $ark_value = $current->{ark};
    my $found = 0;

    # Is a bad ARK found in the correct field?
    if (my $field = $record->field($tag)) {
        my $value = $letter ? $field->subfield($letter) : $field->value;
        $self->ark->what_append('found_bad_ark', "Found $value")
            if $value ne $ark_value;
    }

    # Is the correct ARK somewhere, good/wrong field?
    for my $field ( @{$record->fields} ) {
        if ( ref $field eq 'MARC::Moose::Field::Std' ) {
            for ( @{$field->subf} ) {
                my ($let, $value) = @$_;
                if ( $value eq $ark_value ) {
                    if ( $field->tag eq $tag && $let eq $letter ) {
                        $self->ark->what_append('found_right_field');
                        $found = 1;
                    }
                    else {
                        $self->ark->what_append('found_wrong_field',
                            'Found in ' . $field->tag . '$' . $letter);

                    }
                }
            }
        }
        else {
            if ( $field->value eq $ark_value ) {
                if ($field->tag eq $tag) {
                    $self->ark->what_append('found_right_field');
                    $found = 1;
                }
                else {
                    $self->ark->what_append('found_wrong_field',
                        'Found in ' . $field->tag);
                }
            }
        }
    }
    $self->ark->what_append('not_found')  unless $found;
}



( run in 3.311 seconds using v1.01-cache-2.11-cpan-c221a9de4ec )