From 2acb54f6840ebff4e9e8eafffe6a6efebe10f941 Mon Sep 17 00:00:00 2001
From: Viola Elsenhans <elsenhans@ub.uni-leipzig.de>
Date: Thu, 15 Sep 2016 16:58:37 +0200
Subject: [PATCH] refs #7924: * add config setting marc local field for gfzk *
 add LocalSubject by marc subfield q

---
 local/config/vufind/config.ini                |  3 ++-
 .../finc/RecordDriver/SolrMarcFincTrait.php   | 25 +++++++++++++++++++
 .../RecordDriver/SolrMarc/core.phtml          | 13 ++++++++++
 3 files changed, 40 insertions(+), 1 deletion(-)

diff --git a/local/config/vufind/config.ini b/local/config/vufind/config.ini
index d3d88eb97e5..9e12d592142 100644
--- a/local/config/vufind/config.ini
+++ b/local/config/vufind/config.ini
@@ -1504,10 +1504,11 @@ localMarcFieldOfLibraryMapping[] = "hgb:979"
 localMarcFieldOfLibraryMapping[] = "skd:983"
 localMarcFieldOfLibraryMapping[] = "slub:984"
 localMarcFieldOfLibraryMapping[] = "bas:985"
+localMarcFieldOfLibraryMapping[] = "gfzk:986"
 
 ; Namespace to select the correct library specific Marc field from the
 ; localMarcFieldOfLibraryMapping
-;localMarcFieldOfLibraryNamespace = "ubl"
+localMarcFieldOfLibraryNamespace = "gfzk"
 
 ; In this section you can define strings to be used as filter for removing certain
 ; subjects from Marc records (used in getAllSubjectHeadings()).
diff --git a/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php b/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php
index e99a9141928..0bb43b286bb 100644
--- a/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php
+++ b/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php
@@ -842,6 +842,31 @@ trait SolrMarcFincTrait
         }
         return [];
     }
+    
+     /**
+     * Return a local access number for call number.
+     * Marc field depends on library e.g. 986 for GfzK.
+     * Seems to be very extraordinary special case.
+     *
+     * @return array
+     * @access protected
+     * @link   https://intern.finc.info/issues/7924
+     */
+    public function getLocalSubject()
+    {
+        $retval = [];
+
+        $fields = $this->getMarcRecord()->getFields($this->getLocalMarcFieldOfLibrary());
+        if (!$fields) {
+            return null;
+        }
+        foreach ($fields as $key => $field) {
+            if ($q = $field->getSubfield('q')) {
+                $retval[$key] = $q->getData();
+            }
+        }
+        return $retval;
+    }
 
     /**
      * Get all local class subjects. First realization for HGB.
diff --git a/themes/finc/templates/RecordDriver/SolrMarc/core.phtml b/themes/finc/templates/RecordDriver/SolrMarc/core.phtml
index ce2a86f7511..687c5131607 100644
--- a/themes/finc/templates/RecordDriver/SolrMarc/core.phtml
+++ b/themes/finc/templates/RecordDriver/SolrMarc/core.phtml
@@ -323,6 +323,19 @@ if($loggedin = $this->auth()->isLoggedIn()) {
           </td>
         </tr>
       <? endif; ?>
+
+      <? $subjects = $this->driver->getLocalSubject(); if (!empty($subjects)): ?>
+      <tr>
+        <th><?=$this->transEsc('Subjects')?>: </th>
+        <td>
+          <? $i = 0; foreach ($subjects as $field): ?>
+              <?=($i++ == 0) ? '' : ', '?>
+              <a title="<?=$this->escapeHtmlAttr($field)?>" href="<?=$this->record($this->driver)->getLink('subject', $field)?>" rel="nofollow"><?=trim($this->escapeHtml($field))?></a>
+          <? endforeach; ?>
+        </td>
+      </tr>
+      <? endif; ?>
+      
     </table>
     <?/* End Main Details */?>
   </div>
-- 
GitLab