From 32fbf69e0f7d9a66edd404842067497a56beff6c Mon Sep 17 00:00:00 2001 From: Dorian Merz <merz@ub.uni-leipzig.de> Date: Fri, 29 Nov 2019 14:42:10 +0100 Subject: [PATCH] refs #16522 [master] adds hasRecordPermissions * allows for specific test for presence of a single RecordPermission --- .../RecordDriver/SolrDefaultFincTrait.php | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/module/finc/src/finc/RecordDriver/SolrDefaultFincTrait.php b/module/finc/src/finc/RecordDriver/SolrDefaultFincTrait.php index 66f1bdf859f..05fa243e486 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 -- GitLab