From 3dc1824da5ae908d1fe5ed75ec5390f365e51242 Mon Sep 17 00:00:00 2001
From: Frank Morgner <morgnerf@ub.uni-leipzig.de>
Date: Thu, 18 May 2017 09:17:23 +0200
Subject: [PATCH] refs #10543 restrict ppn config of external access links to
 source_id:0 and 112 by call of getRID() method

---
 local/cache/.gitignore                        |  2 --
 .../finc/src/finc/View/Helper/Root/Record.php | 24 ++++++++++---------
 2 files changed, 13 insertions(+), 13 deletions(-)
 delete mode 100644 local/cache/.gitignore

diff --git a/local/cache/.gitignore b/local/cache/.gitignore
deleted file mode 100644
index d6b7ef32c84..00000000000
--- a/local/cache/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*
-!.gitignore
diff --git a/module/finc/src/finc/View/Helper/Root/Record.php b/module/finc/src/finc/View/Helper/Root/Record.php
index 92b0d27f079..41f4f5ec9f4 100644
--- a/module/finc/src/finc/View/Helper/Root/Record.php
+++ b/module/finc/src/finc/View/Helper/Root/Record.php
@@ -158,19 +158,21 @@ class Record extends \VuFind\View\Helper\Root\Record
 
         foreach ($this->config->ExternalAccess as $recordType => $accessUrl) {
             switch ($recordType) {
-                case "id":
-                    $replaceId = $this->driver->getUniqueID();
-                    break;
-                case "ppn":
-                    $replaceId = $this->driver->tryMethod('getRID');
-                    break;
-                default:
-                    $replaceId = null;
+            case "id":
+                $replaceId = $this->driver->getUniqueID();
+                break;
+            case "ppn":
+                $sourceID = $this->driver->tryMethod('getSourceID');
+                $replaceId = (isset($sourceID)
+                    && true === in_array($sourceID, ["0", "112"]))
+                    ? $this->driver->tryMethod('getRID') : null;
+                break;
+            default:
+                $replaceId = null;
             }
             foreach ($accessUrl as $institution => $urlPattern) {
-                if (
-                    true === in_array($institution, $institutions) &&
-                    !empty($replaceId)
+                if (true === in_array($institution, $institutions)
+                    && !empty($replaceId)
                 ) {
                     $extUrls[++$i]['desc'] = $institution;
                     $extUrls[$i]['url'] = sprintf($urlPattern, $replaceId);
-- 
GitLab