diff --git a/module/finc/src/finc/RecordDriver/FincMissing.php b/module/finc/src/finc/RecordDriver/FincMissing.php index 495b45d7907819e39180c6aa33617154b850299d..425ff41ef7a38d0bd3bbc41462db105f2583388b 100644 --- a/module/finc/src/finc/RecordDriver/FincMissing.php +++ b/module/finc/src/finc/RecordDriver/FincMissing.php @@ -72,17 +72,21 @@ class FincMissing extends \VuFind\RecordDriver\Missing */ public function setRawData($data) { - $table = $this->getDbTable('resource'); - // sets create to FALSE so Resource does not try to generate a DB row on fail - $resource = $table->findResource($data['id'], 'solr', FALSE); - if ($resource instanceof Resource) { - if (empty($resource->extra_metadata ?? '')) { - parent::setRawData($data); + if (isset($data['id']) && !empty($data['id'])) { + $table = $this->getDbTable('resource'); + // sets create to FALSE so Resource does not try to generate a DB row on fail + $resource = $table->findResource($data['id'], 'solr', FALSE); + if ($resource instanceof Resource) { + if (empty($resource->extra_metadata ?? '')) { + parent::setRawData($data); + } else { + $this->deserializeFromResourceTable($resource); + } } else { - $this->deserializeFromResourceTable($resource); + $this->fields['id'] = $data['id']; } - } elseif (isset($data['id'])) { - $this->fields['id'] = $data['id']; + } else { + $this->fields['id'] = ''; } } diff --git a/module/finc/src/finc/View/Helper/Root/RecordLink.php b/module/finc/src/finc/View/Helper/Root/RecordLink.php index 402b732b9ad00dd63ae44d9f53f008257303a3c2..9ced0372af74cd25a1df8f94a5210dcf112316d0 100644 --- a/module/finc/src/finc/View/Helper/Root/RecordLink.php +++ b/module/finc/src/finc/View/Helper/Root/RecordLink.php @@ -152,11 +152,14 @@ class RecordLink extends \VuFind\View\Helper\Root\RecordLink */ public function getUrl($driver) { - try { - return $this->getTabUrl($driver); - } - catch (RecordMissingException $exception) { - return ""; + if ($driver->getUniqueID()) { + try { + return $this->getTabUrl($driver); + } catch (RecordMissingException $exception) { + // return default result on Missing Record + // throw all other Exceptions + } } + return ""; } }