diff --git a/module/finc/src/finc/RecordDriver/SolrDefaultFincTrait.php b/module/finc/src/finc/RecordDriver/SolrDefaultFincTrait.php index 66f1bdf859f692283513a2009b8e09df3e5c5d01..05fa243e4861f23aa7276b7b3e0b2930aa0437af 100644 --- a/module/finc/src/finc/RecordDriver/SolrDefaultFincTrait.php +++ b/module/finc/src/finc/RecordDriver/SolrDefaultFincTrait.php @@ -34,6 +34,7 @@ namespace finc\RecordDriver; use VuFindSearch\ParamBag; use VuFindSearch\Query\Query as Query; +use Zend\Config\Config; /** * finc specific model for Solr records based on the stock @@ -155,6 +156,26 @@ trait SolrDefaultFincTrait return null; } + public function hasRecordPermission(String $permission) : bool + { + // do we have a RecordPermissions section in config.ini? + if (isset($this->mainConfig->RecordPermissions)) { + $settings = $this->mainConfig->RecordPermissions->{$permission} ?? null; + if (is_null($settings)) return false; + if ($settings instanceof Config) $settings = $settings->toArray(); + foreach ((array) $settings as $value) { + list($methodName, $methodReturn) = explode(':', $value); + if (in_array($methodReturn, (array) $this->tryMethod($methodName))) { + // as the current permission matches the current record, + // return it + return true; + } + } + } + // either no settings for the permission were present or none matched, so return false + return false; + } + /** * Controller to decide when local format field of a library should be * retrieved from marc. Pass through method for PrimoCentral