From 1830d8c26d4e45f8c781ca993be0b5554d73b3d5 Mon Sep 17 00:00:00 2001 From: Dorian Merz <merz@ub.uni-leipzig.de> Date: Mon, 30 Sep 2019 13:55:21 +0200 Subject: [PATCH] refs #16117 [master] fix in parsing of VD-numbers * adds IND1 = 7 --- .../src/finc/RecordDriver/SolrMarcFincTrait.php | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php b/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php index de44b307092..fa4375a70a1 100644 --- a/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php +++ b/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php @@ -295,8 +295,10 @@ trait SolrMarcFincTrait */ public function getIndexOfGermanPrints() { - // define a false indicator - $lookfor_indicator = '8'; + // if IND1 === 8 we have an unspecified type of number + // if IND1 === 7 the "Source of number or code" is specified in subfield $2 + // however, we don't need to check that since we have a begins-with check on the field's data + $lookfor_indicators = ['7','8']; $retval = []; $fields = $this->getMarcRecord()->getFields('024'); @@ -305,11 +307,11 @@ trait SolrMarcFincTrait } foreach ($fields as $field) { // ->getIndicator(position) - $subjectrow = $field->getIndicator('1'); - if ($subjectrow == $lookfor_indicator) { + if (in_array($field->getIndicator('1'),$lookfor_indicators)) { if ($subfield = $field->getSubfield('a')) { - if (preg_match('/^VD/i', $subfield->getData()) > 0) { - $retval[] = $subfield->getData(); + $data = $subfield->getData(); + if (stripos($data,'VD') === 0) { + $retval[] = $data; } } } -- GitLab