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