From 4d900218b683637f0aa566c521172a787462f3bb Mon Sep 17 00:00:00 2001
From: Gregor Gawol <gawol@ub.uni-leipzig.de>
Date: Thu, 29 Sep 2016 14:16:30 +0200
Subject: [PATCH] refs #8055: * add setting to suppress generic URLs for EBL
 records

---
 local/config/vufind/config.ini                |  9 +++++++-
 local/dev/config/vufind/config.ini.sample     |  1 +
 .../finc/RecordDriver/SolrMarcFincTrait.php   | 23 ++++++++++++++++++-
 3 files changed, 31 insertions(+), 2 deletions(-)

diff --git a/local/config/vufind/config.ini b/local/config/vufind/config.ini
index 9e12d592142..48e79522906 100644
--- a/local/config/vufind/config.ini
+++ b/local/config/vufind/config.ini
@@ -1523,11 +1523,18 @@ remove[] = "gndmusic"
 ; Please note: Service if only available with configuration of [LinksRewrite]
 ; section. Use equal defined pattern below for ebl[pattern] and ebl[method] =
 ; resolveEblLink to call specific link resolver of EBL with authentication and
-; persmision logic.
+; permission logic.
 ;[Ebl]
 ;pattern = "namespace of uri"
 ;secret_key = "secret key provided by supplier"
 
+; This setting defines a string that is used to identify Ebl-records by checking Marc
+; 912a against it (see also https://intern.finc.info/issues/8055). This allows to
+; suppress generic URLs found in Marc of Ebl records.
+; Note: this requires to fully enable the [LinksRewrite] and [Ebl] sections including
+; all settings otherwise the Ebl plugin might throw exceptions.
+;product_sigel = "ZDB-89-EBL"
+
 ; Section of rewriting of urls of marc field $856 using regular expression or
 ; through injection of self-declared method. Rewrite options here are not really
 ; fit to resolve by bare linkresolver logic or openurl processing.
diff --git a/local/dev/config/vufind/config.ini.sample b/local/dev/config/vufind/config.ini.sample
index c15aeaac4a8..48798f4e39c 100644
--- a/local/dev/config/vufind/config.ini.sample
+++ b/local/dev/config/vufind/config.ini.sample
@@ -67,6 +67,7 @@ showStyleBasedIcons = true
 [Ebl]
 pattern = "leip.eblib.com"
 secret_key = "SecretKey"
+product_sigel = "ZDB-89-EBL"
 
 [LinksRewrite]
 ; Personalized rewriting of Open Urls.
diff --git a/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php b/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php
index 027c4d88fc9..48eda402438 100644
--- a/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php
+++ b/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php
@@ -122,7 +122,7 @@ trait SolrMarcFincTrait
                         if (true === in_array($isil, $this->isil)) {
                             $isISIL = true;
                         }
-                    } else {
+                    } else if (!$this->_isEBLRecord()) {
                         $isISIL = true;
                     }
 
@@ -160,6 +160,27 @@ trait SolrMarcFincTrait
         return $retVal;
     }
 
+    /**
+     * Checks if the record is an EBL record (as defined in config.ini section
+     * [Ebl]->product_sigel)
+     *
+     * @return bool
+     * @link https://intern.finc.info/issues/8055
+     */
+    private function _isEBLRecord()
+    {
+        $value = $this->getFirstFieldValue('912', ['a']);
+
+        if (isset($this->mainConfig->Ebl->product_sigel)) {
+            if (preg_match(
+                '/'.addslashes($this->mainConfig->Ebl->product_sigel).'/', $value
+            )) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     /**
      * Method to return the order information stored in fullrecord
      * LocalMarcFieldOfLibrary $m
-- 
GitLab