From 64ac2f57eb3485ff397b560d9df0bf9cb86f3d8d Mon Sep 17 00:00:00 2001 From: Dorian Merz <merz@ub.uni-leipzig.de> Date: Thu, 3 Sep 2020 12:05:27 +0200 Subject: [PATCH] refs #18280 [finc] avoid exceptions when trying to load Record with not ID --- .../src/finc/RecordDriver/FincMissing.php | 22 +++++++++++-------- .../src/finc/View/Helper/Root/RecordLink.php | 13 ++++++----- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/module/finc/src/finc/RecordDriver/FincMissing.php b/module/finc/src/finc/RecordDriver/FincMissing.php index 495b45d7907..425ff41ef7a 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 402b732b9ad..9ced0372af7 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 ""; } } -- GitLab