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 )