Zend \ ServiceManager \ Exception \ ServiceNotCreatedException
Service with name "VuFind\Search\Primo\Options" could not be created. Reason: Cannot set key "_REQUEST_ACCESS_TIME" as storage is marked isImmutable
Previous exceptions
  • Cannot set key "_REQUEST_ACCESS_TIME" as storage is marked isImmutable (0)
Zend\ServiceManager\Exception\ServiceNotCreatedException thrown with message "Service with name "VuFind\Search\Primo\Options" could not be created. Reason: Cannot set key "_REQUEST_ACCESS_TIME" as storage is marked isImmutable" Stacktrace: #26 Zend\ServiceManager\Exception\ServiceNotCreatedException in /mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-servicemanager/src/ServiceManager.php:771 #25 Zend\Session\Exception\RuntimeException in /mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-session/src/Storage/AbstractSessionArrayStorage.php:351 #24 Zend\Session\Storage\AbstractSessionArrayStorage:setMetadata in /mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-session/src/Storage/AbstractSessionArrayStorage.php:455 #23 Zend\Session\Storage\AbstractSessionArrayStorage:setRequestAccessTime in /mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-session/src/Storage/AbstractSessionArrayStorage.php:53 #22 Zend\Session\Storage\AbstractSessionArrayStorage:init in /mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-session/src/Storage/AbstractSessionArrayStorage.php:33 #21 Zend\Session\Storage\AbstractSessionArrayStorage:__construct in /mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-session/src/AbstractManager.php:100 #20 Zend\Session\AbstractManager:__construct in /mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-session/src/SessionManager.php:77 #19 Zend\Session\SessionManager:__construct in /mnt/monguz/vufind-instances/6.1.2/module/VuFind/src/VuFind/I18n/LangCodeConverter.php:50 #18 VuFind\I18n\LangCodeConverter:__construct in /mnt/monguz/vufind-instances/6.1.2/module/VuFind/src/VuFind/Search/Primo/Options.php:154 #17 VuFind\Search\Primo\Options:__construct in /mnt/monguz/vufind-instances/6.1.2/module/VuFind/src/VuFind/Search/Options/OptionsFactory.php:62 #16 VuFind\Search\Options\OptionsFactory:__invoke in /mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-servicemanager/src/ServiceManager.php:764 #15 Zend\ServiceManager\ServiceManager:doCreate in /mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-servicemanager/src/ServiceManager.php:200 #14 Zend\ServiceManager\ServiceManager:get in /mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-servicemanager/src/AbstractPluginManager.php:152 #13 Zend\ServiceManager\AbstractPluginManager:get in /mnt/monguz/vufind-instances/6.1.2/module/VuFind/src/VuFind/ServiceManager/LowerCaseServiceNameTrait.php:53 #12 VuFind\ServiceManager\AbstractPluginManager:get in /mnt/monguz/vufind-instances/6.1.2/module/VuFind/src/VuFind/View/Helper/Root/SearchBox.php:396 #11 VuFind\View\Helper\Root\SearchBox:getCombinedHandlers in /mnt/monguz/vufind-instances/6.1.2/module/VuFind/src/VuFind/View/Helper/Root/SearchBox.php:254 #10 VuFind\View\Helper\Root\SearchBox:getHandlers in /mnt/monguz/vufind-instances/6.1.2/themes/bootstrap3elte/templates/search/searchbox.phtml:11 #9 include in /mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-view/src/Renderer/PhpRenderer.php:506 #8 Zend\View\Renderer\PhpRenderer:render in /mnt/monguz/vufind-instances/6.1.2/themes/bootstrap3elte/templates/layout/layout.phtml:192 #7 include in /mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-view/src/Renderer/PhpRenderer.php:506 #6 Zend\View\Renderer\PhpRenderer:render in /mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-view/src/View.php:207 #5 Zend\View\View:render in /mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-mvc/src/View/Http/DefaultRenderingStrategy.php:105 #4 Zend\Mvc\View\Http\DefaultRenderingStrategy:render in /mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-eventmanager/src/EventManager.php:322 #3 Zend\EventManager\EventManager:triggerListeners in /mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-eventmanager/src/EventManager.php:171 #2 Zend\EventManager\EventManager:triggerEvent in /mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-mvc/src/Application.php:367 #1 Zend\Mvc\Application:completeRequest in /mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-mvc/src/Application.php:348 #0 Zend\Mvc\Application:run in /mnt/monguz/vufind-instances/eles/public/index.php:83
Stack frames (27)
26
Zend\ServiceManager\Exception\ServiceNotCreatedException
/vendor/zendframework/zend-servicemanager/src/ServiceManager.php771
25
Zend\Session\Exception\RuntimeException
/vendor/zendframework/zend-session/src/Storage/AbstractSessionArrayStorage.php351
24
Zend\Session\Storage\AbstractSessionArrayStorage setMetadata
/vendor/zendframework/zend-session/src/Storage/AbstractSessionArrayStorage.php455
23
Zend\Session\Storage\AbstractSessionArrayStorage setRequestAccessTime
/vendor/zendframework/zend-session/src/Storage/AbstractSessionArrayStorage.php53
22
Zend\Session\Storage\AbstractSessionArrayStorage init
/vendor/zendframework/zend-session/src/Storage/AbstractSessionArrayStorage.php33
21
Zend\Session\Storage\AbstractSessionArrayStorage __construct
/vendor/zendframework/zend-session/src/AbstractManager.php100
20
Zend\Session\AbstractManager __construct
/vendor/zendframework/zend-session/src/SessionManager.php77
19
Zend\Session\SessionManager __construct
/module/VuFind/src/VuFind/I18n/LangCodeConverter.php50
18
VuFind\I18n\LangCodeConverter __construct
/module/VuFind/src/VuFind/Search/Primo/Options.php154
17
VuFind\Search\Primo\Options __construct
/module/VuFind/src/VuFind/Search/Options/OptionsFactory.php62
16
VuFind\Search\Options\OptionsFactory __invoke
/vendor/zendframework/zend-servicemanager/src/ServiceManager.php764
15
Zend\ServiceManager\ServiceManager doCreate
/vendor/zendframework/zend-servicemanager/src/ServiceManager.php200
14
Zend\ServiceManager\ServiceManager get
/vendor/zendframework/zend-servicemanager/src/AbstractPluginManager.php152
13
Zend\ServiceManager\AbstractPluginManager get
/module/VuFind/src/VuFind/ServiceManager/LowerCaseServiceNameTrait.php53
12
VuFind\ServiceManager\AbstractPluginManager get
/module/VuFind/src/VuFind/View/Helper/Root/SearchBox.php396
11
VuFind\View\Helper\Root\SearchBox getCombinedHandlers
/module/VuFind/src/VuFind/View/Helper/Root/SearchBox.php254
10
VuFind\View\Helper\Root\SearchBox getHandlers
/themes/bootstrap3elte/templates/search/searchbox.phtml11
9
include
/vendor/zendframework/zend-view/src/Renderer/PhpRenderer.php506
8
Zend\View\Renderer\PhpRenderer render
/themes/bootstrap3elte/templates/layout/layout.phtml192
7
include
/vendor/zendframework/zend-view/src/Renderer/PhpRenderer.php506
6
Zend\View\Renderer\PhpRenderer render
/vendor/zendframework/zend-view/src/View.php207
5
Zend\View\View render
/vendor/zendframework/zend-mvc/src/View/Http/DefaultRenderingStrategy.php105
4
Zend\Mvc\View\Http\DefaultRenderingStrategy render
/vendor/zendframework/zend-eventmanager/src/EventManager.php322
3
Zend\EventManager\EventManager triggerListeners
/vendor/zendframework/zend-eventmanager/src/EventManager.php171
2
Zend\EventManager\EventManager triggerEvent
/vendor/zendframework/zend-mvc/src/Application.php367
1
Zend\Mvc\Application completeRequest
/vendor/zendframework/zend-mvc/src/Application.php348
0
Zend\Mvc\Application run
/mnt/monguz/vufind-instances/eles/public/index.php83
/mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-servicemanager/src/ServiceManager.php
     * @return mixed
     * @throws ServiceNotFoundException if unable to resolve the service.
     * @throws ServiceNotCreatedException if an exception is raised when
     *     creating a service.
     * @throws ContainerException if any other error occurs
     */
    private function doCreate($resolvedName, array $options = null)
    {
        try {
            if (! isset($this->delegators[$resolvedName])) {
                // Let's create the service by fetching the factory
                $factory = $this->getFactory($resolvedName);
                $object  = $factory($this->creationContext, $resolvedName, $options);
            } else {
                $object = $this->createDelegatorFromName($resolvedName, $options);
            }
        } catch (ContainerException $exception) {
            throw $exception;
        } catch (Exception $exception) {
            throw new ServiceNotCreatedException(sprintf(
                'Service with name "%s" could not be created. Reason: %s',
                $resolvedName,
                $exception->getMessage()
            ), (int) $exception->getCode(), $exception);
        }
 
        foreach ($this->initializers as $initializer) {
            $initializer($this->creationContext, $object);
        }
 
        return $object;
    }
 
    /**
     * Create the lazy services delegator factory.
     *
     * Creates the lazy services delegator factory based on the lazy_services
     * configuration present.
     *
     * @return Proxy\LazyServiceFactory
/mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-session/src/Storage/AbstractSessionArrayStorage.php
    /**
     * Set storage metadata
     *
     * Metadata is used to store information about the data being stored in the
     * object. Some example use cases include:
     * - Setting expiry data
     * - Maintaining access counts
     * - localizing session storage
     * - etc.
     *
     * @param  string                     $key
     * @param  mixed                      $value
     * @param  bool                       $overwriteArray Whether to overwrite or merge array values; by default, merges
     * @return ArrayStorage
     * @throws Exception\RuntimeException
     */
    public function setMetadata($key, $value, $overwriteArray = false)
    {
        if ($this->isImmutable()) {
            throw new Exception\RuntimeException(
                sprintf('Cannot set key "%s" as storage is marked isImmutable', $key)
            );
        }
 
        if (! isset($_SESSION['__ZF']) || ! is_array($_SESSION['__ZF'])) {
            $_SESSION['__ZF'] = [];
        }
        if (isset($_SESSION['__ZF'][$key]) && is_array($value)) {
            if ($overwriteArray) {
                $_SESSION['__ZF'][$key] = $value;
            } else {
                $_SESSION['__ZF'][$key] = array_replace_recursive($_SESSION['__ZF'][$key], $value);
            }
        } else {
            if ((null === $value) && isset($_SESSION['__ZF'][$key])) {
                $array = $_SESSION['__ZF'];
                unset($array[$key]);
                $_SESSION['__ZF'] = $array;
                unset($array);
            } elseif (null !== $value) {
Exception message: Cannot set key "_REQUEST_ACCESS_TIME" as storage is marked isImmutable
/mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-session/src/Storage/AbstractSessionArrayStorage.php
 
    /**
     * Retrieve the request access time
     *
     * @return float
     */
    public function getRequestAccessTime()
    {
        return $this->getMetadata('_REQUEST_ACCESS_TIME');
    }
 
    /**
     * Set the request access time
     *
     * @param  float        $time
     * @return ArrayStorage
     */
    protected function setRequestAccessTime($time)
    {
        $this->setMetadata('_REQUEST_ACCESS_TIME', $time);
 
        return $this;
    }
 
    /**
     * Cast the object to an array
     *
     * @param  bool $metaData Whether to include metadata
     * @return array
     */
    public function toArray($metaData = false)
    {
        if (isset($_SESSION)) {
            $values = $_SESSION;
        } else {
            $values = [];
        }
 
        if ($metaData) {
            return $values;
/mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-session/src/Storage/AbstractSessionArrayStorage.php
    }
 
    /**
     * Initialize Storage
     *
     * @param  array $input
     * @return void
     */
    public function init($input = null)
    {
        if ((null === $input) && isset($_SESSION)) {
            $input = $_SESSION;
            if (is_object($input) && ! $_SESSION instanceof \ArrayObject) {
                $input = (array) $input;
            }
        } elseif (null === $input) {
            $input = [];
        }
        $_SESSION = $input;
        $this->setRequestAccessTime(microtime(true));
    }
 
    /**
     * Get Offset
     *
     * @param  mixed $key
     * @return mixed
     */
    public function __get($key)
    {
        return $this->offsetGet($key);
    }
 
    /**
     * Set Offset
     *
     * @param  mixed $key
     * @param  mixed $value
     * @return void
     */
/mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-session/src/Storage/AbstractSessionArrayStorage.php
/**
 * Session storage in $_SESSION
 *
 * Replaces the $_SESSION superglobal with an ArrayObject that allows for
 * property access, metadata storage, locking, and immutability.
 */
abstract class AbstractSessionArrayStorage implements
    IteratorAggregate,
    StorageInterface,
    StorageInitializationInterface
{
    /**
     * Constructor
     *
     * @param array|null $input
     */
    public function __construct($input = null)
    {
        // this is here for B.C.
        $this->init($input);
    }
 
    /**
     * Initialize Storage
     *
     * @param  array $input
     * @return void
     */
    public function init($input = null)
    {
        if ((null === $input) && isset($_SESSION)) {
            $input = $_SESSION;
            if (is_object($input) && ! $_SESSION instanceof \ArrayObject) {
                $input = (array) $input;
            }
        } elseif (null === $input) {
            $input = [];
        }
        $_SESSION = $input;
        $this->setRequestAccessTime(microtime(true));
/mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-session/src/AbstractManager.php
                throw new Exception\RuntimeException(sprintf(
                    'Default config class %s is invalid; must implement %s\Config\ConfigInterface',
                    $this->defaultConfigClass,
                    __NAMESPACE__
                ));
            }
        }
 
        $this->config = $config;
 
        // init storage
        if ($storage === null) {
            if (! class_exists($this->defaultStorageClass)) {
                throw new Exception\RuntimeException(sprintf(
                    'Unable to locate storage class "%s"; class does not exist',
                    $this->defaultStorageClass
                ));
            }
 
            $storage = new $this->defaultStorageClass();
 
            if (! $storage instanceof Storage) {
                throw new Exception\RuntimeException(sprintf(
                    'Default storage class %s is invalid; must implement %s\Storage\StorageInterface',
                    $this->defaultConfigClass,
                    __NAMESPACE__
                ));
            }
        }
 
        $this->storage = $storage;
 
        // save handler
        if ($saveHandler !== null) {
            $this->saveHandler = $saveHandler;
        }
 
        $this->validators = $validators;
    }
 
/mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-session/src/SessionManager.php
     * @param  Config\ConfigInterface|null           $config
     * @param  Storage\StorageInterface|null         $storage
     * @param  SaveHandler\SaveHandlerInterface|null $saveHandler
     * @param  array                                 $validators
     * @param  array                                 $options
     * @throws Exception\RuntimeException
     */
    public function __construct(
        Config\ConfigInterface $config = null,
        Storage\StorageInterface $storage = null,
        SaveHandler\SaveHandlerInterface $saveHandler = null,
        array $validators = [],
        array $options = []
    ) {
        $options = array_merge($this->defaultOptions, $options);
        if ($options['attach_default_validators']) {
            $validators = array_merge($this->defaultValidators, $validators);
        }
 
        parent::__construct($config, $storage, $saveHandler, $validators);
        register_shutdown_function([$this, 'writeClose']);
    }
 
    /**
     * Does a session exist and is it currently active?
     *
     * @return bool
     */
    public function sessionExists()
    {
        if (session_status() == PHP_SESSION_ACTIVE) {
            return true;
        }
        $sid = defined('SID') ? constant('SID') : false;
        if ($sid !== false && $this->getId()) {
            return true;
        }
        if (headers_sent()) {
            return true;
        }
/mnt/monguz/vufind-instances/6.1.2/module/VuFind/src/VuFind/I18n/LangCodeConverter.php
 
class LangCodeConverter {
    static $iso639_1_codes = [];
    static $iso639_2_codes = [];
 
    protected $sessionManager;
    protected $session;
 
    /**
     * Loads language file content.
     *
     * @param \Zend\Session\Container $session
     * @param string                  $iso639_1_property Language property file in import/translation_maps
     * @param string                  $iso639_2_property Language property file in import/translation_maps
     *
     * @return array
     */
    public function __construct($session = null, $iso639_1_property, $iso639_2_property) {
        if (($session == null) && ($this->session == null)) {
            $this->sessionManager = new \Zend\Session\SessionManager();
            $this->session = new \Zend\Session\Container(
                'LangCodeConverter', $this->sessionManager
            );
        }
        else if ($session != null) {
            $this->session = $session;
        }
        $iso639_1_fpath = ConfigLocator::getConfigPath($iso639_1_property, 'import/translation_maps');
        $iso639_2_fpath = ConfigLocator::getConfigPath($iso639_2_property, 'import/translation_maps');
 
        if (((!isset($this->session->iso639_1_codes))
         || ($this->session->iso639_1_codes_mtime != filemtime($iso639_1_fpath)))
         && ((!isset(static::$iso639_1_codes)) || (count(static::$iso639_1_codes) < 1))) {
            // parse_ini_file(..., false, INI_SCANNER_RAW): "syntax error, unexpected BOOL_FALSE in ..."
            static::$iso639_1_codes = static::loadIni($iso639_1_fpath);
            $this->session->iso639_1_codes = static::$iso639_1_codes;
            $this->session->iso639_1_codes_mtime = filemtime($iso639_1_fpath);
        }
        else if (isset($this->session->iso639_1_codes)) {
            static::$iso639_1_codes = $this->session->iso639_1_codes;
/mnt/monguz/vufind-instances/6.1.2/module/VuFind/src/VuFind/Search/Primo/Options.php
        if (isset($searchSettings->General->default_sort)) {
            $this->defaultSort = $searchSettings->General->default_sort;
        }
        if (isset($searchSettings->DefaultSortingByType)
            && count($searchSettings->DefaultSortingByType) > 0
        ) {
            foreach ($searchSettings->DefaultSortingByType as $key => $val) {
                $this->defaultSortByHandler[$key] = $val;
            }
        }
 
        foreach ($searchSettings->Resource_Types as $key => $value)
            $this->resource_types[$key] = $value;
        foreach ($searchSettings->Domain as $key => $value)
            $this->domains[$key] = $value;
        foreach ($searchSettings->Availability as $key => $value)
            $this->availability[$key] = $value;
        if ($searchSettings->General->lang_iso639_2) {
            $lcc = new \VuFind\I18n\LangCodeConverter(null, $searchSettings->General->lang_iso639_1,
                $searchSettings->General->lang_iso639_2);
            $this->languages = $lcc->getLangCodes();
        }
    }
 
    /**
     * Return the IDs and names of availability statuses.
     *
     * @param string $key ex.: 'open_access' => 'open_access'
     * @return array
     */
    public function getAvailability($key = null, $value = null)
    {
        if ($value != null) {
            $key = array_search($value, $this->availability);
        }
        return isset($key) && ($key != false) ? (isset($this->availability[$key])
            ? [$key => $this->availability[$key]] : null)
            : $this->availability;
    }
 
/mnt/monguz/vufind-instances/6.1.2/module/VuFind/src/VuFind/Search/Options/OptionsFactory.php
{
    /**
     * Create an object
     *
     * @param ContainerInterface $container     Service manager
     * @param string             $requestedName Service being created
     * @param null|array         $options       Extra options (optional)
     *
     * @return object
     *
     * @throws ServiceNotFoundException if unable to resolve the service.
     * @throws ServiceNotCreatedException if an exception is raised when
     * creating a service.
     * @throws ContainerException if any other error occurs
     */
    public function __invoke(ContainerInterface $container, $requestedName,
        array $options = null
    ) {
        return new $requestedName(
            $container->get(\VuFind\Config\PluginManager::class), ...($options ?: [])
        );
    }
}
 
/mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-servicemanager/src/ServiceManager.php
    /**
     * Create a new instance with an already resolved name
     *
     * This is a highly performance sensitive method, do not modify if you have not benchmarked it carefully
     *
     * @param  string     $resolvedName
     * @param  null|array $options
     * @return mixed
     * @throws ServiceNotFoundException if unable to resolve the service.
     * @throws ServiceNotCreatedException if an exception is raised when
     *     creating a service.
     * @throws ContainerException if any other error occurs
     */
    private function doCreate($resolvedName, array $options = null)
    {
        try {
            if (! isset($this->delegators[$resolvedName])) {
                // Let's create the service by fetching the factory
                $factory = $this->getFactory($resolvedName);
                $object  = $factory($this->creationContext, $resolvedName, $options);
            } else {
                $object = $this->createDelegatorFromName($resolvedName, $options);
            }
        } catch (ContainerException $exception) {
            throw $exception;
        } catch (Exception $exception) {
            throw new ServiceNotCreatedException(sprintf(
                'Service with name "%s" could not be created. Reason: %s',
                $resolvedName,
                $exception->getMessage()
            ), (int) $exception->getCode(), $exception);
        }
 
        foreach ($this->initializers as $initializer) {
            $initializer($this->creationContext, $object);
        }
 
        return $object;
    }
 
/mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-servicemanager/src/ServiceManager.php
        // is the fastest method).
        if (isset($this->services[$requestedName])) {
            return $this->services[$requestedName];
        }
 
        $name = isset($this->resolvedAliases[$name]) ? $this->resolvedAliases[$name] : $name;
 
        // Next, if the alias should be shared, and we have cached the resolved
        // service, use it.
        if ($requestedName !== $name
            && (! isset($this->shared[$requestedName]) || $this->shared[$requestedName])
            && isset($this->services[$name])
        ) {
            $this->services[$requestedName] = $this->services[$name];
            return $this->services[$name];
        }
 
        // At this point, we need to create the instance; we use the resolved
        // name for that.
        $object = $this->doCreate($name);
 
        // Cache it for later, if it is supposed to be shared.
        if (($this->sharedByDefault && ! isset($this->shared[$name]))
            || (isset($this->shared[$name]) && $this->shared[$name])
        ) {
            $this->services[$name] = $object;
        }
 
        // Also do so for aliases; this allows sharing based on service name used.
        if ($requestedName !== $name
            && (($this->sharedByDefault && ! isset($this->shared[$requestedName]))
                || (isset($this->shared[$requestedName]) && $this->shared[$requestedName]))
        ) {
            $this->services[$requestedName] = $object;
        }
 
        return $object;
    }
 
    /**
/mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-servicemanager/src/AbstractPluginManager.php
     *     a service definition for the instance, and the service is not
     *     auto-invokable.
     * @throws InvalidServiceException if the plugin created is invalid for the
     *     plugin context.
     */
    public function get($name, array $options = null)
    {
        if (! $this->has($name)) {
            if (! $this->autoAddInvokableClass || ! class_exists($name)) {
                throw new Exception\ServiceNotFoundException(sprintf(
                    'A plugin by the name "%s" was not found in the plugin manager %s',
                    $name,
                    get_class($this)
                ));
            }
 
            $this->setFactory($name, Factory\InvokableFactory::class);
        }
 
        $instance = empty($options) ? parent::get($name) : $this->build($name, $options);
        $this->validate($instance);
        return $instance;
    }
 
    /**
     * {@inheritDoc}
     */
    public function validate($instance)
    {
        if (method_exists($this, 'validatePlugin')) {
            trigger_error(sprintf(
                '%s::validatePlugin() has been deprecated as of 3.0; please define validate() instead',
                get_class($this)
            ), E_USER_DEPRECATED);
            $this->validatePlugin($instance);
            return;
        }
 
        if (empty($this->instanceOf) || $instance instanceof $this->instanceOf) {
            return;
/mnt/monguz/vufind-instances/6.1.2/module/VuFind/src/VuFind/ServiceManager/LowerCaseServiceNameTrait.php
 *
 * @category VuFind
 * @package  ServiceManager
 * @author   Demian Katz <demian.katz@villanova.edu>
 * @license  http://opensource.org/licenses/gpl-2.0.php GNU General Public License
 * @link     https://vufind.org/wiki/development Wiki
 */
trait LowerCaseServiceNameTrait
{
    /**
     * Retrieve a plugin
     *
     * @param string     $name    Name of plugin
     * @param null|array $options Options to use when creating the instance.
     *
     * @return mixed
     */
    public function get($name, array $options = null)
    {
        return parent::get($this->getNormalizedServiceName($name), $options);
    }
 
    /**
     * Returns true if the container can return an entry for the given identifier.
     * Returns false otherwise.
     *
     * @param string $id Identifier of the entry to look for.
     *
     * @return bool
     */
    public function has($id)
    {
        return parent::has($this->getNormalizedServiceName($id));
    }
 
    /**
     * Hack for backward compatibility with services defined under
     * ServiceManager v2, when service names were case-insensitive.
     * TODO: set up aliases and/or normalize code to eliminate the need for this.
     *
/mnt/monguz/vufind-instances/6.1.2/module/VuFind/src/VuFind/View/Helper/Root/SearchBox.php
     * @param string $activeHandler     Active search handler
     *
     * @return array
     */
    protected function getCombinedHandlers($activeSearchClass, $activeHandler)
    {
        // Build settings:
        $handlers = [];
        $selectedFound = false;
        $backupSelectedIndex = false;
        $addedBrowseHandlers = false;
        $settings = $this->getCombinedHandlerConfig($activeSearchClass);
        $typeCount = count($settings['type']);
        for ($i = 0; $i < $typeCount; $i++) {
            $type = $settings['type'][$i];
            $target = $settings['target'][$i];
            $label = $settings['label'][$i];
 
            if ($type == 'VuFind') {
                $options = $this->optionsManager->get($target);
                $j = 0;
                $basic = $options->getBasicHandlers();
                if (empty($basic)) {
                    $basic = ['' => ''];
                }
                foreach ($basic as $searchVal => $searchDesc) {
                    $j++;
                    $selected = $target == $activeSearchClass
                        && $activeHandler == $searchVal;
                    if ($selected) {
                        $selectedFound = true;
                    } elseif ($backupSelectedIndex === false
                        && $target == $activeSearchClass
                    ) {
                        $backupSelectedIndex = count($handlers);
                    }
                    // Depending on whether or not the current section has a label,
                    // we'll either want to override the first label and indent
                    // subsequent ones, or else use all default labels without
                    // any indentation.
/mnt/monguz/vufind-instances/6.1.2/module/VuFind/src/VuFind/View/Helper/Root/SearchBox.php
                    ? $this->placeholders['default']
                    : null);
        }
        return null;
    }
 
    /**
     * Get an array of information on search handlers for use in generating a
     * drop-down or hidden field. Returns an array of arrays with 'value', 'label',
     * 'indent' and 'selected' keys.
     *
     * @param string $activeSearchClass Active search class ID
     * @param string $activeHandler     Active search handler
     *
     * @return array
     */
    public function getHandlers($activeSearchClass, $activeHandler)
    {
        return $this->combinedHandlersActive()
            ? $this->getCombinedHandlers($activeSearchClass, $activeHandler)
            : $this->getBasicHandlers($activeSearchClass, $activeHandler);
    }
 
    /**
     * Get number of active filters
     *
     * @param array $checkboxFilters Checkbox filters
     * @param array $filterList      Other filters
     *
     * @return int
     */
    public function getFilterCount($checkboxFilters, $filterList)
    {
        $result = 0;
        foreach ($checkboxFilters as $filter) {
            if ($filter['selected']) {
                ++$result;
            }
        }
        foreach ($filterList as $filter) {
/mnt/monguz/vufind-instances/6.1.2/themes/bootstrap3elte/templates/search/searchbox.phtml
<?php
    // Set default value if necessary:
    if (!isset($this->searchClassId)) {
        $config = $this->config()->get('config');
        $this->searchClassId = $config->Site->defaultSearchBackend ?? 'Solr';
    }
 
    // Load search actions and settings (if any):
    $options = $this->searchOptions($this->searchClassId);
    $handlers = $this->searchbox()->getHandlers(
        $this->searchClassId, $this->searchIndex ?? null
    );
    $handlerCount = count($handlers);
    $basicSearch = $this->searchbox()->combinedHandlersActive() ? 'combined-searchbox' : $options->getSearchAction();
    $searchHome = $options->getSearchHomeAction();
    $advSearch = $options->getAdvancedSearchAction();
    $lastSort = $this->searchMemory()->getLastSort($this->searchClassId);
    $lastLimit = $this->searchMemory()->getLastLimit($this->searchClassId);
    $ignoreHiddenFilterMemory = $this->ignoreHiddenFilterMemory ?? false;
    $ignoreHiddenFiltersInRequest = $this->ignoreHiddenFiltersInRequest ?? false;
    $hiddenFilters = $this->searchTabs()->getHiddenFilters($this->searchClassId, $ignoreHiddenFilterMemory, $ignoreHiddenFiltersInRequest);
    if (empty($hiddenFilters) && !$ignoreHiddenFilterMemory) {
        $hiddenFilters = $this->searchMemory()->getLastHiddenFilters($this->searchClassId);
        if (empty($hiddenFilters)) {
            $hiddenFilters = $this->searchTabs()->getHiddenFilters($this->searchClassId);
        }
    }
    $hiddenFilterParams = $this->searchTabs()->getCurrentHiddenFilterParams($this->searchClassId, $ignoreHiddenFilterMemory, '?');
 
    if (!isset($this->filterList) || !isset($this->checkboxFilters)) {
        $params = $this->searchMemory()->getLastSearchParams($this->searchClassId);
        $filterList = $params->getFilterList(true);
        $checkboxFilters = $params->getCheckboxFacets();
    } else {
        $filterList = is_array($this->filterList) ? $this->filterList : [];
        $checkboxFilters = is_array($this->checkboxFilters) ? $this->checkboxFilters : [];
    }
    $filterDetails = $this->searchbox()->getFilterDetails($filterList, $checkboxFilters);
    $showFilters = $filterDetails && (isset($results) || $options->getRetainFilterSetting());
?>
/mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-view/src/Renderer/PhpRenderer.php
        $__vars = $this->vars()->getArrayCopy();
        if (array_key_exists('this', $__vars)) {
            unset($__vars['this']);
        }
        extract($__vars);
        unset($__vars); // remove $__vars from local scope
 
        $this->__content = '';
        while ($this->__template = array_pop($this->__templates)) {
            $this->__file = $this->resolver($this->__template);
            if (! $this->__file) {
                throw new Exception\RuntimeException(sprintf(
                    '%s: Unable to render template "%s"; resolver could not resolve to a file',
                    __METHOD__,
                    $this->__template
                ));
            }
            try {
                ob_start();
                $includeReturn = include $this->__file;
                $this->__content = ob_get_clean();
            } catch (\Throwable $ex) {
                ob_end_clean();
                throw $ex;
            } catch (\Exception $ex) { // @TODO clean up once PHP 7 requirement is enforced
                ob_end_clean();
                throw $ex;
            }
            if ($includeReturn === false && empty($this->__content)) {
                throw new Exception\UnexpectedValueException(sprintf(
                    '%s: Unable to render template "%s"; file include failed',
                    __METHOD__,
                    $this->__file
                ));
            }
        }
 
        $this->setVars(array_pop($this->__varsCache));
 
        if ($this->__filterChain instanceof FilterChain) {
/mnt/monguz/vufind-instances/6.1.2/themes/bootstrap3elte/templates/layout/layout.phtml
      $translations = $this->jsTranslations()->getJSON();
      $dsb = DEFAULT_SEARCH_BACKEND;
      $setupJS = <<<JS
VuFind.path = '{$root}';
VuFind.defaultSearchBackend = '{$dsb}';
VuFind.addTranslations({$translations});
JS;
      $this->headScript()->appendScript($setupJS);
    ?>
    <?=$this->headScript()?>
  </head>
  <body class="template-dir-<?=$this->templateDir?> template-name-<?=$this->templateName?> <?=$this->layoutClass('offcanvas-row')?><?php if ($this->layout()->rtl): ?> rtl<?php endif; ?>">
    <?php // Set up the search box -- there are three possible cases:
      // 1. No search box was set; we should default to the normal box
      // 2. It was set to false; we should display nothing
      // 3. It is set to a custom string; we should display the provided version
      // Set up default search box if no data was provided from the template;
      // this covers case 1.  Cases 2 and 3 are then covered by logic below.
      if (!isset($this->layout()->searchbox)) {
        $this->layout()->searchbox = $this->render('search/searchbox.phtml');
      }
    ?>
    <header class="hidden-print">
      <?php if (isset($this->layout()->srmessage)): // message for benefit of screen-reader users ?>
        <span class="sr-only" role="heading" aria-level="1"><?=$this->layout()->srmessage ?></span>
      <?php endif; ?>
      <a class="sr-only" href="#content"><?=$this->transEsc('Skip to content') ?></a>
      <?=$this->render('header.phtml')?>
    </header>
    <nav class="breadcrumbs" aria-label="<?=$this->transEsc('Breadcrumbs') ?>">
      <div class="container">
        <?php if((!isset($this->layout()->showBreadcrumbs) || $this->layout()->showBreadcrumbs == true)
          && !empty($this->layout()->breadcrumbs)
          && $this->layout()->breadcrumbs !== false
        ): ?>
          <ul class="breadcrumb hidden-print">
            <?php if(is_array($this->layout()->breadcrumbs)): ?>
              <?php if(count($this->layout()->breadcrumbs) > 1): ?>
                <?=$this->render('breadcrumbs/multi.phtml', [
                    'parents' => $this->layout()->breadcrumbs,
/mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-view/src/Renderer/PhpRenderer.php
        $__vars = $this->vars()->getArrayCopy();
        if (array_key_exists('this', $__vars)) {
            unset($__vars['this']);
        }
        extract($__vars);
        unset($__vars); // remove $__vars from local scope
 
        $this->__content = '';
        while ($this->__template = array_pop($this->__templates)) {
            $this->__file = $this->resolver($this->__template);
            if (! $this->__file) {
                throw new Exception\RuntimeException(sprintf(
                    '%s: Unable to render template "%s"; resolver could not resolve to a file',
                    __METHOD__,
                    $this->__template
                ));
            }
            try {
                ob_start();
                $includeReturn = include $this->__file;
                $this->__content = ob_get_clean();
            } catch (\Throwable $ex) {
                ob_end_clean();
                throw $ex;
            } catch (\Exception $ex) { // @TODO clean up once PHP 7 requirement is enforced
                ob_end_clean();
                throw $ex;
            }
            if ($includeReturn === false && empty($this->__content)) {
                throw new Exception\UnexpectedValueException(sprintf(
                    '%s: Unable to render template "%s"; file include failed',
                    __METHOD__,
                    $this->__file
                ));
            }
        }
 
        $this->setVars(array_pop($this->__varsCache));
 
        if ($this->__filterChain instanceof FilterChain) {
/mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-view/src/View.php
 
        // If EVENT_RENDERER or EVENT_RENDERER_POST changed the model, make sure
        // we use this new model instead of the current $model
        $model   = $event->getModel();
 
        // If we have children, render them first, but only if:
        // a) the renderer does not implement TreeRendererInterface, or
        // b) it does, but canRenderTrees() returns false
        if ($model->hasChildren()
            && (! $renderer instanceof TreeRendererInterface
                || ! $renderer->canRenderTrees())
        ) {
            $this->renderChildren($model);
        }
 
        // Reset the model, in case it has changed, and set the renderer
        $event->setModel($model);
        $event->setRenderer($renderer);
 
        $rendered = $renderer->render($model);
 
        // If this is a child model, return the rendered content; do not
        // invoke the response strategy.
        $options = $model->getOptions();
        if (array_key_exists('has_parent', $options) && $options['has_parent']) {
            return $rendered;
        }
 
        $event->setResult($rendered);
        $event->setName(ViewEvent::EVENT_RESPONSE);
 
        $events->triggerEvent($event);
    }
 
    /**
     * Loop through children, rendering each
     *
     * @param  Model $model
     * @throws Exception\DomainException
     * @return void
/mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-mvc/src/View/Http/DefaultRenderingStrategy.php
        if ($result instanceof Response) {
            return $result;
        }
 
        // Martial arguments
        $request   = $e->getRequest();
        $response  = $e->getResponse();
        $viewModel = $e->getViewModel();
        if (! $viewModel instanceof ViewModel) {
            return;
        }
 
        $view = $this->view;
        $view->setRequest($request);
        $view->setResponse($response);
 
        $caughtException = null;
 
        try {
            $view->render($viewModel);
        } catch (\Throwable $ex) {
            $caughtException = $ex;
        } catch (\Exception $ex) {  // @TODO clean up once PHP 7 requirement is enforced
            $caughtException = $ex;
        }
 
        if ($caughtException !== null) {
            if ($e->getName() === MvcEvent::EVENT_RENDER_ERROR) {
                throw $caughtException;
            }
 
            $application = $e->getApplication();
            $events      = $application->getEventManager();
 
            $e->setError(Application::ERROR_EXCEPTION);
            $e->setParam('exception', $caughtException);
            $e->setName(MvcEvent::EVENT_RENDER_ERROR);
            $events->triggerEvent($e);
        }
 
/mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-eventmanager/src/EventManager.php
        }
 
        if ($this->sharedManager) {
            foreach ($this->sharedManager->getListeners($this->identifiers, $name) as $priority => $listeners) {
                $listOfListenersByPriority[$priority][] = $listeners;
            }
        }
 
        // Sort by priority in reverse order
        krsort($listOfListenersByPriority);
 
        // Initial value of stop propagation flag should be false
        $event->stopPropagation(false);
 
        // Execute listeners
        $responses = new ResponseCollection();
        foreach ($listOfListenersByPriority as $listOfListeners) {
            foreach ($listOfListeners as $listeners) {
                foreach ($listeners as $listener) {
                    $response = $listener($event);
                    $responses->push($response);
 
                    // If the event was asked to stop propagating, do so
                    if ($event->propagationIsStopped()) {
                        $responses->setStopped(true);
                        return $responses;
                    }
 
                    // If the result causes our validation callback to return true,
                    // stop propagation
                    if ($callback && $callback($response)) {
                        $responses->setStopped(true);
                        return $responses;
                    }
                }
            }
        }
 
        return $responses;
    }
/mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-eventmanager/src/EventManager.php
        $event = clone $this->eventPrototype;
        $event->setName($eventName);
 
        if ($target !== null) {
            $event->setTarget($target);
        }
 
        if ($argv) {
            $event->setParams($argv);
        }
 
        return $this->triggerListeners($event, $callback);
    }
 
    /**
     * @inheritDoc
     */
    public function triggerEvent(EventInterface $event)
    {
        return $this->triggerListeners($event);
    }
 
    /**
     * @inheritDoc
     */
    public function triggerEventUntil(callable $callback, EventInterface $event)
    {
        return $this->triggerListeners($event, $callback);
    }
 
    /**
     * @inheritDoc
     */
    public function attach($eventName, callable $listener, $priority = 1)
    {
        if (! is_string($eventName)) {
            throw new Exception\InvalidArgumentException(sprintf(
                '%s expects a string for the event; received %s',
                __METHOD__,
                (is_object($eventName) ? get_class($eventName) : gettype($eventName))
/mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-mvc/src/Application.php
        return $this->completeRequest($event);
    }
 
    /**
     * Complete the request
     *
     * Triggers "render" and "finish" events, and returns response from
     * event object.
     *
     * @param  MvcEvent $event
     * @return Application
     */
    protected function completeRequest(MvcEvent $event)
    {
        $events = $this->events;
        $event->setTarget($this);
 
        $event->setName(MvcEvent::EVENT_RENDER);
        $event->stopPropagation(false); // Clear before triggering
        $events->triggerEvent($event);
 
        $event->setName(MvcEvent::EVENT_FINISH);
        $event->stopPropagation(false); // Clear before triggering
        $events->triggerEvent($event);
 
        return $this;
    }
}
 
/mnt/monguz/vufind-instances/6.1.2/vendor/zendframework/zend-mvc/src/Application.php
        // Trigger dispatch event
        $event->setName(MvcEvent::EVENT_DISPATCH);
        $event->stopPropagation(false); // Clear before triggering
        $result = $events->triggerEventUntil($shortCircuit, $event);
 
        // Complete response
        $response = $result->last();
        if ($response instanceof ResponseInterface) {
            $event->setName(MvcEvent::EVENT_FINISH);
            $event->setTarget($this);
            $event->setResponse($response);
            $event->stopPropagation(false); // Clear before triggering
            $events->triggerEvent($event);
            $this->response = $response;
            return $this;
        }
 
        $response = $this->response;
        $event->setResponse($response);
        return $this->completeRequest($event);
    }
 
    /**
     * Complete the request
     *
     * Triggers "render" and "finish" events, and returns response from
     * event object.
     *
     * @param  MvcEvent $event
     * @return Application
     */
    protected function completeRequest(MvcEvent $event)
    {
        $events = $this->events;
        $event->setTarget($this);
 
        $event->setName(MvcEvent::EVENT_RENDER);
        $event->stopPropagation(false); // Clear before triggering
        $events->triggerEvent($event);
 
/mnt/monguz/vufind-instances/eles/public/index.php
 
// Ensure vendor/ is on include_path; some PEAR components may not load correctly
// otherwise (i.e. File_MARC may cause a "Cannot redeclare class" error by pulling
// from the shared PEAR directory instead of the local copy):
$pathParts = [];
$pathParts[] = APPLICATION_PATH . '/vendor';
$pathParts[] = get_include_path();
set_include_path(implode(PATH_SEPARATOR, $pathParts));
 
// Composer autoloading
if (file_exists('vendor/autoload.php')) {
    $loader = include 'vendor/autoload.php';
}
 
if (!class_exists('Zend\Loader\AutoloaderFactory')) {
    throw new RuntimeException('Unable to load Zend Framework autoloader.');
}
 
// Run the application!
Zend\Mvc\Application::init(require 'config/application.config.php')->run();
 

Environment & details:

Key Value
filter Array ( [0] => institution:"L_200" [1] => language:"Romanian" )
type AllFields
facet topic_facet
facetop AND
facetexclude 0
empty
empty
empty
Key Value
__ZF Array ( [_REQUEST_ACCESS_TIME] => 1710841636,9041 [_VALID] => Array ( [Zend\Session\Validator\Id] => i8h3k0qc2ng5gma0v0d4fb8kmc ) )
SessionState Zend\Stdlib\ArrayObject Object ( [storage:protected] => Array ( [cookiePath] => / ) [flag:protected] => 2 [iteratorClass:protected] => ArrayIterator [protectedProperties:protected] => Array ( [0] => storage [1] => flag [2] => iteratorClass [3] => protectedProperties ) )
_IMMUTABLE 1
Key Value
REDIRECT_SCRIPT_URL /Search/FacetList
REDIRECT_SCRIPT_URI https://opac.elte.hu/Search/FacetList
REDIRECT_VUFIND_ENV development
REDIRECT_VUFIND_LOCAL_DIR /opt/vufind-instances/eles/local
REDIRECT_VUFIND_CACHE_DIR /opt/vufind-instances/eles/local/cache
REDIRECT_VUFIND_APPLICATION_PATH /opt/vufind-instances/eles
REDIRECT_HTTPS on
REDIRECT_SSL_TLS_SNI opac.elte.hu
REDIRECT_STATUS 200
SCRIPT_URL /Search/FacetList
SCRIPT_URI https://opac.elte.hu/Search/FacetList
VUFIND_ENV development
VUFIND_LOCAL_DIR /opt/vufind-instances/eles/local
VUFIND_CACHE_DIR /opt/vufind-instances/eles/local/cache
VUFIND_APPLICATION_PATH /opt/vufind-instances/eles
HTTPS on
SSL_TLS_SNI opac.elte.hu
HTTP_ACCEPT */*
HTTP_USER_AGENT claudebot
HTTP_HOST opac.elte.hu
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
SERVER_SIGNATURE <address>Apache/2.4.38 (Debian) Server at opac.elte.hu Port 443</address>
SERVER_SOFTWARE Apache/2.4.38 (Debian)
SERVER_NAME opac.elte.hu
SERVER_ADDR 157.181.151.97
SERVER_PORT 443
REMOTE_ADDR 3.236.111.234
DOCUMENT_ROOT /opt/vufind-instances/eles/public
REQUEST_SCHEME https
CONTEXT_PREFIX /
CONTEXT_DOCUMENT_ROOT /opt/vufind-instances/eles/public/
SERVER_ADMIN eltefind@lib.elte.hu
SCRIPT_FILENAME /opt/vufind-instances/eles/public/index.php
REMOTE_PORT 51436
REDIRECT_URL /Search/FacetList
REDIRECT_QUERY_STRING filter%5B%5D=institution%3A%22L_200%22&filter%5B%5D=language%3A%22Romanian%22&type=AllFields&facet=topic_facet&facetop=AND&facetexclude=0
GATEWAY_INTERFACE CGI/1.1
SERVER_PROTOCOL HTTP/1.1
REQUEST_METHOD GET
QUERY_STRING filter%5B%5D=institution%3A%22L_200%22&filter%5B%5D=language%3A%22Romanian%22&type=AllFields&facet=topic_facet&facetop=AND&facetexclude=0
REQUEST_URI /Search/FacetList?filter%5B%5D=institution%3A%22L_200%22&filter%5B%5D=language%3A%22Romanian%22&type=AllFields&facet=topic_facet&facetop=AND&facetexclude=0
SCRIPT_NAME /index.php
PHP_SELF /index.php
REQUEST_TIME_FLOAT 1710841636,8816
REQUEST_TIME 1710841636
empty
0. Whoops\Handler\PrettyPageHandler