From 98b5892c86b98cc8a8fedc2a8cc11299739e92dd Mon Sep 17 00:00:00 2001
From: Frank Morgner <morgnerf@ub.uni-leipzig.de>
Date: Wed, 12 Apr 2017 14:06:12 +0200
Subject: [PATCH] refs #9634: * extend check for multiple appearances of zdb
 isils at marc 912

---
 .../finc/RecordDriver/SolrMarcFincTrait.php   | 47 ++++++++++++-------
 1 file changed, 30 insertions(+), 17 deletions(-)

diff --git a/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php b/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php
index 33468d3bbd1..85f64782d47 100644
--- a/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php
+++ b/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php
@@ -137,7 +137,8 @@ trait SolrMarcFincTrait
                             $address = $address->getData();
 
                             $tmpArr = [];
-                            // Is there a description?  If not, just use the URL itself.
+                            // Is there a description?  If not, just use the URL
+                            // itself.
                             foreach (['y', '3', 'z', 'x'] as $current) {
                                 $desc = $url->getSubfield($current);
                                 if ($desc) {
@@ -149,17 +150,25 @@ trait SolrMarcFincTrait
                             $desc = implode(', ', $tmpArr);
 
                             // If no description take url as description
-                            // For 856[40] url denoting resource itself use "Online Access"/"Online-Zugang" #6109
+                            // For 856[40] url denoting resource itself
+                            // use "Online Access"/"Online-Zugang" #6109
                             if (empty($desc)) {
-                                if ($indicator1 == 4 && $indicator2 == 0 && preg_match('!https?://.*?doi.org/!', $address)) {
+                                if ($indicator1 == 4
+                                    && $indicator2 == 0
+                                    && preg_match('!https?://.*?doi.org/!', $address)
+                                ) {
                                     $desc = "Online Access";
                                 } else {
                                     $desc = $address;
                                 }
                             }
 
-                            // If url doesn't exist as key so far write to return variable.
-                            if (!in_array(['url' => $address, 'desc' => $desc], $retVal)) {
+                            // If url doesn't exist as key so far write
+                            // to return variable.
+                            if (!in_array(
+                                ['url' => $address, 'desc' => $desc], $retVal
+                            )
+                            ) {
                                 $retVal[] = ['url' => $address, 'desc' => $desc];
                             }
                         }
@@ -175,26 +184,30 @@ trait SolrMarcFincTrait
      * [Ebl]->product_sigel)
      *
      * @return bool
-     * @link https://intern.finc.info/issues/8055
-     * @link https://intern.finc.info/issues/9634
+     * @link   https://intern.finc.info/issues/8055
+     * @link   https://intern.finc.info/issues/9634
      */
     private function _isEBLRecord()
     {
-        $value = $this->getFirstFieldValue('912', ['a']);
-
+        $values = $this->getFieldArray('912', ['a']);
         if (isset($this->mainConfig->Ebl->product_sigel)) {
             if (is_object($this->mainConfig->Ebl->product_sigel)) {
                 // handle product_sigel array
-                return in_array(
-                    $value,
-                    $this->mainConfig->Ebl->product_sigel->toArray()
-                );
+                return (
+                    count(
+                        array_intersect(
+                            $values, $this->mainConfig->Ebl->product_sigel->toArray()
+                        )
+                    ) > 0
+                ) ? true : false;
             } else {
                 // handle single product_sigel (legacy support)
-                return preg_match(
-                    '/' . addslashes($this->mainConfig->Ebl->product_sigel) . '/',
-                    $value
-                );
+                return (
+                    0 < in_array(
+                        $this->mainConfig->Ebl->product_sigel,
+                        $values
+                    )
+                ) ? true : false;
             }
         }
         return false;
-- 
GitLab