From 4e25eb883aa3acf60eff516239a006ea434a11cf Mon Sep 17 00:00:00 2001
From: Gregor Gawol <gawol@ub.uni-leipzig.de>
Date: Thu, 25 Jun 2020 13:48:46 +0200
Subject: [PATCH] refs #15134 [master] marcfield 856 online information * set
 link label with config * retrieve subfield sequence y then n and then 3 *
 added indicators

---
 .../finc/RecordDriver/SolrMarcFincTrait.php   | 38 ++++++++++++++++---
 1 file changed, 33 insertions(+), 5 deletions(-)

diff --git a/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php b/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php
index 2eef855a23e..aa72a4340fa 100644
--- a/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php
+++ b/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php
@@ -116,18 +116,43 @@ trait SolrMarcFincTrait
                         if ($address) {
                             $address = $address->getData();
 
-                            $tmpArr = [];
+                            //$tmpArr = [];
                             // Is there a description?  If not, just use the URL
                             // itself.
-                            foreach (['y', '3', 'z', 'x'] as $current) {
+                            /*foreach (['y', '3', 'z', 'x'] as $current) {
                                 $desc = $url->getSubfield($current);
                                 if ($desc) {
                                     $desc = $desc->getData();
                                     $tmpArr[] = $desc;
                                 }
+                            }*/
+
+                            $desc = false;
+                            if ($url->getSubfield('y')) {
+                                $desc = $url->getSubfield('y');
+                            } elseif ($url->getSubfield('n')) {
+                                $desc = $url->getSubfield('n');
+                            } elseif ($url->getSubfield('3')) {
+                                $desc = $url->getSubfield('3');
                             }
-                            $tmpArr = array_unique($tmpArr);
-                            $desc = implode(', ', $tmpArr);
+
+
+                            if ($desc) {
+                                $desc = $desc->getData();
+                                $desc = strlen($desc) > 3 ?
+                                    $desc : 'Online Information';
+
+                                if (isset($this->mainConfig->UrlDesc->desc)) {
+                                    $tmpDesc = $this->mainConfig->UrlDesc->desc->toArray();
+                                    if (in_array($desc, $tmpDesc)) {
+                                        $desc = 'Online Information';
+                                    }
+                                }
+                            } else {
+                                $desc = 'Online Information';
+                            }
+                            //$tmpArr = array_unique($tmpArr);
+                            //$desc = implode(', ', $tmpArr);
 
                             // If no description take url as description
                             // For 856[40] url denoting resource itself
@@ -150,7 +175,10 @@ trait SolrMarcFincTrait
                                 $retVal
                             )
                             ) {
-                                $retVal[] = ['url' => $address, 'desc' => $desc];
+                                $retVal[] = [
+                                    'url' => $address, 'desc' => $desc,
+                                    'indicators' => $indicator1.$indicator2
+                                ];
                             }
                         }
                     }
-- 
GitLab