From f92fea108c47a84316ca419ea01cb22ac58bfb6e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Lahmann?= <lahmann@ub.uni-leipzig.de>
Date: Tue, 23 Aug 2016 14:00:48 +0200
Subject: [PATCH] refs #7429: * added Marc264abc to getPublicationDetails in
 SolrMarcFincTrait

---
 .../finc/RecordDriver/SolrMarcFincTrait.php   | 66 +++++++++++--------
 1 file changed, 39 insertions(+), 27 deletions(-)

diff --git a/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php b/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php
index fcb2cf6f75d..87df0a6d5f2 100644
--- a/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php
+++ b/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php
@@ -481,33 +481,45 @@ trait SolrMarcFincTrait
     {
         $retval = [];
 
-        if ($fields = $this->getMarcRecord()->getFields('260')) {
-            foreach ($fields as $i => $current) {
-                $place = $current->getSubfield('a')
-                    ? $current->getSubfield('a')->getData() : null;
-                $name = $current->getSubfield('b')
-                    ? $current->getSubfield('b')->getData() : null;
-                $date = $current->getSubfield('c')
-                    ? $current->getSubfield('c')->getData() : null;
-
-
-                // Build objects to represent each set of data; these will
-                // transform seamlessly into strings in the view layer.
-                $retval[] = new \VuFind\RecordDriver\Response\PublicationDetails(
-                    $place, $name, $date
-                );
-
-                // Build the publication details with additional graphical notations
-                // for the current set of publication details
-                if ($linkedField = $this->getLinkedField($current, $i)) {
-                    $retval[] = new \VuFind\RecordDriver\Response\PublicationDetails(
-                        $linkedField->getSubfield('a')
-                            ? $linkedField->getSubfield('a')->getData() : null,
-                        $linkedField->getSubfield('b')
-                            ? $linkedField->getSubfield('b')->getData() : null,
-                        $linkedField->getSubfield('c')
-                            ? $linkedField->getSubfield('c')->getData() : null
-                    );
+        $marcFields = ['260', '264'];
+
+        // loop through all defined marcFields
+        foreach ($marcFields as $marcField) {
+            // now select all fields for the current marcField
+            if ($fields = $this->getMarcRecord()->getFields($marcField)) {
+                // loop through all fields of the current marcField
+                foreach ($fields as $i => $current) {
+                    // Marc 264abc should only be displayed if Ind.2==1
+                    // Display any other Marc field if defined above
+                    if ($marcField != '264'
+                        || ($marcField == '264' && $current->getIndicator(2) == 1)
+                    ) {
+                        $place = $current->getSubfield('a')
+                            ? $current->getSubfield('a')->getData() : null;
+                        $name = $current->getSubfield('b')
+                            ? $current->getSubfield('b')->getData() : null;
+                        $date = $current->getSubfield('c')
+                            ? $current->getSubfield('c')->getData() : null;
+
+                        // Build objects to represent each set of data; these will
+                        // transform seamlessly into strings in the view layer.
+                        $retval[] = new \VuFind\RecordDriver\Response\PublicationDetails(
+                            $place, $name, $date
+                        );
+
+                        // Build the publication details with additional graphical notations
+                        // for the current set of publication details
+                        if ($linkedField = $this->getLinkedField($current, $i)) {
+                            $retval[] = new \VuFind\RecordDriver\Response\PublicationDetails(
+                                $linkedField->getSubfield('a')
+                                    ? $linkedField->getSubfield('a')->getData() : null,
+                                $linkedField->getSubfield('b')
+                                    ? $linkedField->getSubfield('b')->getData() : null,
+                                $linkedField->getSubfield('c')
+                                    ? $linkedField->getSubfield('c')->getData() : null
+                            );
+                        }
+                    }
                 }
             }
         }
-- 
GitLab