diff --git a/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php b/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php index d0276cc56ad185c19e4442743e00f2b598c3e915..ba947ac8b20434c701bdd108c0dce3e71c53ee69 100644 --- a/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php +++ b/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php @@ -404,6 +404,22 @@ trait SolrMarcFincTrait return $retval; } + public function getDOI () { + + $allIdentifiers = $this->getOtherIdentifiers(); + $dois = $allIdentifiers['doi'] ?? []; + if (!empty($dois)) { + return current($dois); + } + $urls = $this->getURLs(); + foreach ($urls as $url) { + if (strpos($url['url'],'https://doi.org/') === 0) { + return substr($url['url'],16); + } + } + return null; + } + /** * 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/Resolver/Driver/Ezb.php b/module/finc/src/finc/Resolver/Driver/Ezb.php index cdd4277fa89a00dd6dc78b3a65df6003afed65ed..7af473597cbf46b43a116ae674bfc6d1def1f5b0 100644 --- a/module/finc/src/finc/Resolver/Driver/Ezb.php +++ b/module/finc/src/finc/Resolver/Driver/Ezb.php @@ -131,16 +131,18 @@ class Ezb extends AbstractBase implements TranslatorAwareInterface if (isset($this->config->bibid)) { - $openURL .= '&pid=' . - 'bibid%3D' . $this->config->bibid; + $pid = 'bibid=' . $this->config->bibid; } else { // use IP-based request as fallback - $openURL .= '&pid=client_ip%3D' . $_SERVER['REMOTE_ADDR']; + $pid = 'client_ip=' . $_SERVER['REMOTE_ADDR']; } - $openURL .= !isset($parsed['rft.issn']) && isset($parsed['zdbid']) ? + $pid .= !isset($parsed['rft.issn']) && isset($parsed['zdbid']) ? '&zdbid=' . $parsed['zdbid'] : ''; + $pid .= '&ezb=1'; - $openURL .= urlencode('&ezb=1'); + $openURL .= '&pid=' . urlencode($pid); + + $openURL .= isset($parsed['doi']) ? '&id=doi:' . $parsed['doi'] : ''; $url = $this->getResolverUrl($openURL);