From 02a66dd834bb9b2489242eb44945c552c1eddd2d Mon Sep 17 00:00:00 2001
From: Demian Katz <demian.katz@villanova.edu>
Date: Mon, 13 Nov 2017 12:14:19 -0500
Subject: [PATCH] Moved shared support method to better location.

---
 .../VuFind/RecordDriver/MarcAdvancedTrait.php | 50 ------------------
 .../VuFind/RecordDriver/MarcReaderTrait.php   | 52 +++++++++++++++++++
 2 files changed, 52 insertions(+), 50 deletions(-)

diff --git a/module/VuFind/src/VuFind/RecordDriver/MarcAdvancedTrait.php b/module/VuFind/src/VuFind/RecordDriver/MarcAdvancedTrait.php
index 4e564387008..53f0a850cb8 100644
--- a/module/VuFind/src/VuFind/RecordDriver/MarcAdvancedTrait.php
+++ b/module/VuFind/src/VuFind/RecordDriver/MarcAdvancedTrait.php
@@ -269,56 +269,6 @@ trait MarcAdvancedTrait
         return in_array('785', $fieldsNames) ? [] : parent::getNewerTitles();
     }
 
-    /**
-     * Get the item's publication information
-     *
-     * @param string $subfield The subfield to retrieve ('a' = location, 'c' = date)
-     *
-     * @return array
-     */
-    protected function getPublicationInfo($subfield = 'a')
-    {
-        // Get string separator for publication information:
-        $separator = isset($this->mainConfig->Record->marcPublicationInfoSeparator)
-            ? $this->mainConfig->Record->marcPublicationInfoSeparator : ' ';
-
-        // First check old-style 260 field:
-        $results = $this->getFieldArray('260', [$subfield], true, $separator);
-
-        // Now track down relevant RDA-style 264 fields; we only care about
-        // copyright and publication places (and ignore copyright places if
-        // publication places are present).  This behavior is designed to be
-        // consistent with default SolrMarc handling of names/dates.
-        $pubResults = $copyResults = [];
-
-        $fields = $this->getMarcRecord()->getFields('264');
-        if (is_array($fields)) {
-            foreach ($fields as $currentField) {
-                $currentVal = $this
-                    ->getSubfieldArray($currentField, [$subfield], true, $separator);
-                if (!empty($currentVal)) {
-                    switch ($currentField->getIndicator('2')) {
-                    case '1':
-                        $pubResults = array_merge($pubResults, $currentVal);
-                        break;
-                    case '4':
-                        $copyResults = array_merge($copyResults, $currentVal);
-                        break;
-                    }
-                }
-            }
-        }
-        $replace260 = isset($this->mainConfig->Record->replaceMarc260)
-            ? $this->mainConfig->Record->replaceMarc260 : false;
-        if (count($pubResults) > 0) {
-            return $replace260 ? $pubResults : array_merge($results, $pubResults);
-        } elseif (count($copyResults) > 0) {
-            return $replace260 ? $copyResults : array_merge($results, $copyResults);
-        }
-
-        return $results;
-    }
-
     /**
      * Get the item's places of publication.
      *
diff --git a/module/VuFind/src/VuFind/RecordDriver/MarcReaderTrait.php b/module/VuFind/src/VuFind/RecordDriver/MarcReaderTrait.php
index af05b1c0406..6a199bbad39 100644
--- a/module/VuFind/src/VuFind/RecordDriver/MarcReaderTrait.php
+++ b/module/VuFind/src/VuFind/RecordDriver/MarcReaderTrait.php
@@ -33,6 +33,8 @@ namespace VuFind\RecordDriver;
  *
  * Assumption: raw MARC data can be found in $this->fields['fullrecord'].
  *
+ * Assumption: VuFind config available as $this->mainConfig
+ *
  * @category VuFind
  * @package  RecordDrivers
  * @author   Demian Katz <demian.katz@villanova.edu>
@@ -137,6 +139,56 @@ trait MarcReaderTrait
             $matches[0] : null;
     }
 
+    /**
+     * Get the item's publication information
+     *
+     * @param string $subfield The subfield to retrieve ('a' = location, 'c' = date)
+     *
+     * @return array
+     */
+    protected function getPublicationInfo($subfield = 'a')
+    {
+        // Get string separator for publication information:
+        $separator = isset($this->mainConfig->Record->marcPublicationInfoSeparator)
+            ? $this->mainConfig->Record->marcPublicationInfoSeparator : ' ';
+
+        // First check old-style 260 field:
+        $results = $this->getFieldArray('260', [$subfield], true, $separator);
+
+        // Now track down relevant RDA-style 264 fields; we only care about
+        // copyright and publication places (and ignore copyright places if
+        // publication places are present).  This behavior is designed to be
+        // consistent with default SolrMarc handling of names/dates.
+        $pubResults = $copyResults = [];
+
+        $fields = $this->getMarcRecord()->getFields('264');
+        if (is_array($fields)) {
+            foreach ($fields as $currentField) {
+                $currentVal = $this
+                    ->getSubfieldArray($currentField, [$subfield], true, $separator);
+                if (!empty($currentVal)) {
+                    switch ($currentField->getIndicator('2')) {
+                    case '1':
+                        $pubResults = array_merge($pubResults, $currentVal);
+                        break;
+                    case '4':
+                        $copyResults = array_merge($copyResults, $currentVal);
+                        break;
+                    }
+                }
+            }
+        }
+        $replace260 = isset($this->mainConfig->Record->replaceMarc260)
+            ? $this->mainConfig->Record->replaceMarc260 : false;
+        if (count($pubResults) > 0) {
+            return $replace260 ? $pubResults : array_merge($results, $pubResults);
+        } elseif (count($copyResults) > 0) {
+            return $replace260 ? $copyResults : array_merge($results, $copyResults);
+        }
+
+        return $results;
+    }
+
     /**
      * Return an array of non-empty subfield values found in the provided MARC
      * field.  If $concat is true, the array will contain either zero or one
-- 
GitLab