From 056286a60a1f1d71be35be8920be0a0a7a458780 Mon Sep 17 00:00:00 2001 From: Dorian Merz <merz@ub.uni-leipzig.de> Date: Fri, 25 Sep 2020 16:57:27 +0200 Subject: [PATCH] refs #18365 [finc] add getOtherIdentifiers function * reads MARC 024 * specifies type of identifier * also defines MultiLine RecordDataFormatterSpecs for other identifiers --- .../finc/RecordDriver/SolrMarcFincTrait.php | 26 +++++++++++++++++++ .../View/Helper/Root/MultiDataFieldsTrait.php | 21 +++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php b/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php index a88a11c7595..803e6d9aad7 100644 --- a/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php +++ b/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php @@ -356,6 +356,32 @@ trait SolrMarcFincTrait return $retval; } + + /** + * Method reading MARC field 24 + * + * @return array + * @access public + */ + public function getOtherIdentifiers() + { + $fields = $this->getMarcRecord()->getFields('024'); + if (!$fields) { + return null; + } + foreach ($fields as $field) { + if ($subfield = $field->getSubfield('a')) { + $data = $subfield->getData(); + $type = 'unspecified'; + if ($field->getIndicator('1') == '7' && $sub2 = $field->getSubfield('2')) { + $type = $sub2->getData(); + } + $retval[$type][] = $data; + } + } + return $retval; + } + /** * Get an array of instrumentation notes taken from the local data * of the Petrucci music library subfield 590b diff --git a/module/finc/src/finc/View/Helper/Root/MultiDataFieldsTrait.php b/module/finc/src/finc/View/Helper/Root/MultiDataFieldsTrait.php index be5bd3f42ad..b9536ccab15 100644 --- a/module/finc/src/finc/View/Helper/Root/MultiDataFieldsTrait.php +++ b/module/finc/src/finc/View/Helper/Root/MultiDataFieldsTrait.php @@ -134,4 +134,25 @@ trait MultiDataFieldsTrait return $final; } + /** + * return render details for otherIdentifiers (MARC 024) data set + * @return callback + */ + public function otherIdentifiers($data, $options, $driver) + { + // Sort the data: + $final = []; + foreach ($data as $type => $values) { + $final[] = [ + 'label' => $type, + 'values' => $values, + 'options' => [ + 'pos' => $options['pos'], + 'renderType' => 'Simple', + ], + ]; + } + return $final; + } + } -- GitLab