From 2bb85cacea717c716fa97d6bdf94a112913cc865 Mon Sep 17 00:00:00 2001 From: Dorian Merz <merz@ub.uni-leipzig.de> Date: Tue, 7 May 2019 15:59:29 +0200 Subject: [PATCH] refs #15042 [master] adds functions formerly used in HMT record driver * adapts getTOC to MARC standard --- .../finc/src/finc/RecordDriver/SolrMarc.php | 28 +++++++++---- .../finc/RecordDriver/SolrMarcFincTrait.php | 39 ++++++++++++++++++- 2 files changed, 59 insertions(+), 8 deletions(-) diff --git a/module/finc/src/finc/RecordDriver/SolrMarc.php b/module/finc/src/finc/RecordDriver/SolrMarc.php index cc567699330..fb29e876891 100644 --- a/module/finc/src/finc/RecordDriver/SolrMarc.php +++ b/module/finc/src/finc/RecordDriver/SolrMarc.php @@ -506,13 +506,27 @@ class SolrMarc extends SolrDefault $toc = []; foreach ($fields as $field) { $subfields = $field->getSubfields(); - foreach ($subfields as $subfield) { - // Break the string into appropriate chunks, filtering empty strings, - // and merge them into return array: - $toc = array_merge( - $toc, - array_filter(explode('--', $subfield->getData()), 'trim') - ); + $ind2 = $field->getIndicator(2); + if ($ind2 === '0') { + // advanced entries with + // $t - Title + // $r - Statement of responsibility + $tocSubfields = []; + foreach ($subfields as $subfield) { + $tocSubfields[] = $subfield->getData(); + } + $toc[] = implode(' \ ', $tocSubfields); + } elseif ($ind2 === '#') { + // basic entries + // sub-entries delimited by " -- " + foreach ($subfields as $subfield) { + // Break the string into appropriate chunks, filtering empty strings, + // and merge them into return array: + $toc = array_merge( + $toc, + array_filter(explode('--', $subfield->getData()), 'trim') + ); + } } } return $toc; diff --git a/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php b/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php index a8e7c73152d..2eef855a23e 100644 --- a/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php +++ b/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php @@ -86,7 +86,8 @@ trait SolrMarcFincTrait // Which fields/subfields should we check for URLs? $fieldsToCheck = [ '856' => ['u'], // Standard URL - '555' => ['a'] // Cumulative index/finding aids + '555' => ['a'], // Cumulative index/finding aids + '609' => ['a'] ]; foreach ($fieldsToCheck as $field => $subfields) { @@ -153,12 +154,48 @@ trait SolrMarcFincTrait } } } + if ($field == '609') { + // 609 cpntains Gallica (BNF) info. Cf. #10279. Included here via #15042 + $data = $url->getSubfield('a')->getData(); + if (stripos($data, 'http') === 0) { + $retVal[] = ['url' => $data, 'desc' => '', 'indicators' => '40']; + } + } } } } return $retVal; } + + /** + * Return a description about volumes in stock via consortial field + * with subfield $h. + * Currently only used in DE-L152. + * + * @return array + * @access public + */ + public function getVolumesInStock() + { + $volumesInStock = $this->getFieldArray($this->getLocalMarcFieldOfLibrary(), ['h']); + return array_filter($volumesInStock); + } + + /** + * Return a user relevant comment about volumes in stock via consortial field + * with subfield $i. + * Currently only used in DE-L152. + * + * @return array + * @access public + */ + public function getVolumesCommentInStock() + { + $volumesCommentInStock = $this->getFieldArray($this->getLocalMarcFieldOfLibrary(), ['i']); + return array_filter($volumesCommentInStock); + } + /** * Checks if the record is an EBL record (as defined in config.ini section * [Ebl]->product_sigel). Refs #8055 #9634 -- GitLab