2026-01-19T05:11:55-05:00 CRIT: Laminas\Serializer\Exception\RuntimeException : Serialized data must be a string containing serialized PHP code; received: 
Server Context:
Array
(
    [REDIRECT_SCRIPT_URL] => /vufind/EDS/Search
    [REDIRECT_SCRIPT_URI] => https://ersearch2.cvtisr.sk/vufind/EDS/Search
    [REDIRECT_VUFIND_ENV] => development
    [REDIRECT_VUFIND_LOCAL_DIR] => /usr/local/vufind/local
    [REDIRECT_VUFIND_LOCAL_MODULES] => cvti
    [REDIRECT_Shib-Handler] => https://ersearch2.cvtisr.sk/Shibboleth.sso
    [REDIRECT_HTTPS] => on
    [REDIRECT_STATUS] => 200
    [SCRIPT_URL] => /vufind/EDS/Search
    [SCRIPT_URI] => https://ersearch2.cvtisr.sk/vufind/EDS/Search
    [VUFIND_ENV] => development
    [VUFIND_LOCAL_DIR] => /usr/local/vufind/local
    [VUFIND_LOCAL_MODULES] => cvti
    [Shib-Handler] => https://ersearch2.cvtisr.sk/Shibboleth.sso
    [HTTPS] => on
    [SSL_SERVER_S_DN_C] => SK
    [SSL_SERVER_S_DN_ST] => SK
    [SSL_SERVER_S_DN_L] => Bratislava
    [SSL_SERVER_S_DN_O] => CVTISR
    [SSL_SERVER_S_DN_OU] => OIT
    [SSL_SERVER_S_DN_CN] => ersearch2.cvtisr.sk
    [SSL_SERVER_S_DN_Email] => dctech@cvtisr.sk
    [SSL_SERVER_I_DN_C] => SK
    [SSL_SERVER_I_DN_ST] => SK
    [SSL_SERVER_I_DN_L] => Bratislava
    [SSL_SERVER_I_DN_O] => CVTISR
    [SSL_SERVER_I_DN_OU] => OIT
    [SSL_SERVER_I_DN_CN] => ersearch2.cvtisr.sk
    [SSL_SERVER_I_DN_Email] => dctech@cvtisr.sk
    [SSL_VERSION_INTERFACE] => mod_ssl/2.4.58
    [SSL_VERSION_LIBRARY] => OpenSSL/3.0.13
    [SSL_PROTOCOL] => TLSv1.2
    [SSL_SECURE_RENEG] => true
    [SSL_COMPRESS_METHOD] => NULL
    [SSL_CIPHER] => ECDHE-RSA-AES128-SHA
    [SSL_CIPHER_EXPORT] => false
    [SSL_CIPHER_USEKEYSIZE] => 128
    [SSL_CIPHER_ALGKEYSIZE] => 128
    [SSL_CLIENT_VERIFY] => NONE
    [SSL_SERVER_M_VERSION] => 3
    [SSL_SERVER_M_SERIAL] => 03644DBC2D568C50CB99DFD4469EA780EF2DECC3
    [SSL_SERVER_V_START] => Jan 31 13:41:57 2025 GMT
    [SSL_SERVER_V_END] => Jan 31 13:41:57 2026 GMT
    [SSL_SERVER_S_DN] => emailAddress=dctech@cvtisr.sk,CN=ersearch2.cvtisr.sk,OU=OIT,O=CVTISR,L=Bratislava,ST=SK,C=SK
    [SSL_SERVER_I_DN] => emailAddress=dctech@cvtisr.sk,CN=ersearch2.cvtisr.sk,OU=OIT,O=CVTISR,L=Bratislava,ST=SK,C=SK
    [SSL_SERVER_A_KEY] => rsaEncryption
    [SSL_SERVER_A_SIG] => sha256WithRSAEncryption
    [SSL_SESSION_ID] => 856975cb04bb0a240527cd2d30ea8ebf673d9029202519686e5b7e2dc04255d3
    [SSL_SESSION_RESUMED] => Resumed
    [HTTP_ACCEPT] => */*
    [HTTP_USER_AGENT] => Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
    [HTTP_ACCEPT_ENCODING] => gzip, br, zstd, deflate
    [HTTP_HOST] => ersearch2.cvtisr.sk
    [PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/snap/bin
    [SERVER_SIGNATURE] => 
    [SERVER_SOFTWARE] => Apache
    [SERVER_NAME] => ersearch2.cvtisr.sk
    [SERVER_ADDR] => 10.21.154.12
    [SERVER_PORT] => 443
    [REMOTE_ADDR] => 10.23.50.154
    [DOCUMENT_ROOT] => /var/www/html
    [REQUEST_SCHEME] => https
    [CONTEXT_PREFIX] => /vufind
    [CONTEXT_DOCUMENT_ROOT] => /usr/local/vufind/public
    [SERVER_ADMIN] => webmaster@localhost
    [SCRIPT_FILENAME] => /usr/local/vufind/public/index.php
    [REMOTE_PORT] => 22158
    [REMOTE_USER] => 
    [REDIRECT_URL] => /vufind/EDS/Search
    [REDIRECT_QUERY_STRING] => lookfor=%28%28+coding+AND+decoding+technikyaaaaaaaye+%29+OR+%28+coding+AND+decoding+technika+%29%29~&type=AllFields
    [GATEWAY_INTERFACE] => CGI/1.1
    [SERVER_PROTOCOL] => HTTP/1.1
    [REQUEST_METHOD] => GET
    [QUERY_STRING] => lookfor=%28%28+coding+AND+decoding+technikyaaaaaaaye+%29+OR+%28+coding+AND+decoding+technika+%29%29~&type=AllFields
    [REQUEST_URI] => /vufind/EDS/Search?lookfor=%28%28+coding+AND+decoding+technikyaaaaaaaye+%29+OR+%28+coding+AND+decoding+technika+%29%29~&type=AllFields
    [SCRIPT_NAME] => /vufind/index.php
    [PHP_SELF] => /vufind/index.php
    [PHP_AUTH_USER] => 
    [REQUEST_TIME_FLOAT] => 1768817515.8623
    [REQUEST_TIME] => 1768817515
)

Backtrace:
/usr/local/vufind/vendor/laminas/laminas-cache/src/Storage/Plugin/Serializer.php line 66 - class = Laminas\Serializer\Adapter\PhpSerialize, function = unserialize, args: none.
/usr/local/vufind/vendor/laminas/laminas-eventmanager/src/EventManager.php line 319 - class = Laminas\Cache\Storage\Plugin\Serializer, function = onReadItemPost, args: none.
/usr/local/vufind/vendor/laminas/laminas-eventmanager/src/EventManager.php line 169 - class = Laminas\EventManager\EventManager, function = triggerListeners, args: none.
/usr/local/vufind/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php line 225 - class = Laminas\EventManager\EventManager, function = triggerEvent, args: none.
/usr/local/vufind/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php line 356 - class = Laminas\Cache\Storage\Adapter\AbstractAdapter, function = triggerPost, args: none.
/usr/local/vufind/vendor/laminas/laminas-cache-storage-adapter-filesystem/src/Filesystem.php line 618 - class = Laminas\Cache\Storage\Adapter\AbstractAdapter, function = getItem, args: none.
/usr/local/vufind/module/VuFindSearch/src/VuFindSearch/Backend/EDS/Backend.php line 508 - class = Laminas\Cache\Storage\Adapter\Filesystem, function = getItem, args: none.
/usr/local/vufind/module/VuFindSearch/src/VuFindSearch/Backend/EDS/Backend.php line 205 - class = VuFindSearch\Backend\EDS\Backend, function = getAuthenticationToken, args: none.
unlisted file line unlisted - class = VuFindSearch\Backend\EDS\Backend, function = search, args: none.
/usr/local/vufind/module/VuFindSearch/src/VuFindSearch/Command/CallMethodCommand.php line 137 - function = call_user_func, args: none.
/usr/local/vufind/module/VuFindSearch/src/VuFindSearch/Service.php line 106 - class = VuFindSearch\Command\CallMethodCommand, function = execute, args: none.
/usr/local/vufind/module/VuFind/src/VuFind/Search/EDS/Results.php line 80 - class = VuFindSearch\Service, function = invoke, args: none.
/usr/local/vufind/module/VuFind/src/VuFind/Search/Base/Results.php line 320 - class = VuFind\Search\EDS\Results, function = performSearch, args: none.
/usr/local/vufind/module/VuFind/src/VuFind/Search/SearchRunner.php line 153 - class = VuFind\Search\Base\Results, function = performAndProcessSearch, args: none.
/usr/local/vufind/module/VuFind/src/VuFind/Controller/AbstractSearch.php line 378 - class = VuFind\Search\SearchRunner, function = run, args: none.
/usr/local/vufind/module/VuFind/src/VuFind/Controller/AbstractSearch.php line 306 - class = VuFind\Controller\AbstractSearch, function = getSearchResultsView, args: none.
/usr/local/vufind/module/VuFind/src/VuFind/Controller/EdsController.php line 97 - class = VuFind\Controller\AbstractSearch, function = resultsAction, args: none.
/usr/local/vufind/vendor/laminas/laminas-mvc/src/Controller/AbstractActionController.php line 72 - class = VuFind\Controller\EdsController, function = searchAction, args: none.
/usr/local/vufind/vendor/laminas/laminas-eventmanager/src/EventManager.php line 319 - class = Laminas\Mvc\Controller\AbstractActionController, function = onDispatch, args: none.
/usr/local/vufind/vendor/laminas/laminas-eventmanager/src/EventManager.php line 177 - class = Laminas\EventManager\EventManager, function = triggerListeners, args: none.
/usr/local/vufind/vendor/laminas/laminas-mvc/src/Controller/AbstractController.php line 105 - class = Laminas\EventManager\EventManager, function = triggerEventUntil, args: none.
/usr/local/vufind/vendor/laminas/laminas-mvc/src/DispatchListener.php line 117 - class = Laminas\Mvc\Controller\AbstractController, function = dispatch, args: none.
/usr/local/vufind/vendor/laminas/laminas-eventmanager/src/EventManager.php line 319 - class = Laminas\Mvc\DispatchListener, function = onDispatch, args: none.
/usr/local/vufind/vendor/laminas/laminas-eventmanager/src/EventManager.php line 177 - class = Laminas\EventManager\EventManager, function = triggerListeners, args: none.
/usr/local/vufind/vendor/laminas/laminas-mvc/src/Application.php line 319 - class = Laminas\EventManager\EventManager, function = triggerEventUntil, args: none.
/usr/local/vufind/public/index.php line 23 - class = Laminas\Mvc\Application, function = run, args: none.
Whoops! There was an error.
Laminas \ Serializer \ Exception \ RuntimeException
Serialized data must be a string containing serialized PHP code; received: Laminas\Serializer\Exception\RuntimeException thrown with message "Serialized data must be a string containing serialized PHP code; received: " Stacktrace: #26 Laminas\Serializer\Exception\RuntimeException in /usr/local/vufind/vendor/laminas/laminas-serializer/src/Adapter/PhpSerialize.php:123 #25 Laminas\Serializer\Adapter\PhpSerialize:unserialize in /usr/local/vufind/vendor/laminas/laminas-cache/src/Storage/Plugin/Serializer.php:66 #24 Laminas\Cache\Storage\Plugin\Serializer:onReadItemPost in /usr/local/vufind/vendor/laminas/laminas-eventmanager/src/EventManager.php:319 #23 Laminas\EventManager\EventManager:triggerListeners in /usr/local/vufind/vendor/laminas/laminas-eventmanager/src/EventManager.php:169 #22 Laminas\EventManager\EventManager:triggerEvent in /usr/local/vufind/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:225 #21 Laminas\Cache\Storage\Adapter\AbstractAdapter:triggerPost in /usr/local/vufind/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:356 #20 Laminas\Cache\Storage\Adapter\AbstractAdapter:getItem in /usr/local/vufind/vendor/laminas/laminas-cache-storage-adapter-filesystem/src/Filesystem.php:618 #19 Laminas\Cache\Storage\Adapter\Filesystem:getItem in /usr/local/vufind/module/VuFindSearch/src/VuFindSearch/Backend/EDS/Backend.php:508 #18 VuFindSearch\Backend\EDS\Backend:getAuthenticationToken in /usr/local/vufind/module/VuFindSearch/src/VuFindSearch/Backend/EDS/Backend.php:205 #17 VuFindSearch\Backend\EDS\Backend:search in /usr/local/vufind/module/VuFindSearch/src/VuFindSearch/Command/CallMethodCommand.php:137 #16 call_user_func in /usr/local/vufind/module/VuFindSearch/src/VuFindSearch/Command/CallMethodCommand.php:137 #15 VuFindSearch\Command\CallMethodCommand:execute in /usr/local/vufind/module/VuFindSearch/src/VuFindSearch/Service.php:106 #14 VuFindSearch\Service:invoke in /usr/local/vufind/module/VuFind/src/VuFind/Search/EDS/Results.php:80 #13 VuFind\Search\EDS\Results:performSearch in /usr/local/vufind/module/VuFind/src/VuFind/Search/Base/Results.php:320 #12 VuFind\Search\Base\Results:performAndProcessSearch in /usr/local/vufind/module/VuFind/src/VuFind/Search/SearchRunner.php:153 #11 VuFind\Search\SearchRunner:run in /usr/local/vufind/module/VuFind/src/VuFind/Controller/AbstractSearch.php:378 #10 VuFind\Controller\AbstractSearch:getSearchResultsView in /usr/local/vufind/module/VuFind/src/VuFind/Controller/AbstractSearch.php:306 #9 VuFind\Controller\AbstractSearch:resultsAction in /usr/local/vufind/module/VuFind/src/VuFind/Controller/EdsController.php:97 #8 VuFind\Controller\EdsController:searchAction in /usr/local/vufind/vendor/laminas/laminas-mvc/src/Controller/AbstractActionController.php:72 #7 Laminas\Mvc\Controller\AbstractActionController:onDispatch in /usr/local/vufind/vendor/laminas/laminas-eventmanager/src/EventManager.php:319 #6 Laminas\EventManager\EventManager:triggerListeners in /usr/local/vufind/vendor/laminas/laminas-eventmanager/src/EventManager.php:177 #5 Laminas\EventManager\EventManager:triggerEventUntil in /usr/local/vufind/vendor/laminas/laminas-mvc/src/Controller/AbstractController.php:105 #4 Laminas\Mvc\Controller\AbstractController:dispatch in /usr/local/vufind/vendor/laminas/laminas-mvc/src/DispatchListener.php:117 #3 Laminas\Mvc\DispatchListener:onDispatch in /usr/local/vufind/vendor/laminas/laminas-eventmanager/src/EventManager.php:319 #2 Laminas\EventManager\EventManager:triggerListeners in /usr/local/vufind/vendor/laminas/laminas-eventmanager/src/EventManager.php:177 #1 Laminas\EventManager\EventManager:triggerEventUntil in /usr/local/vufind/vendor/laminas/laminas-mvc/src/Application.php:319 #0 Laminas\Mvc\Application:run in /usr/local/vufind/public/index.php:23
26
Laminas\Serializer\Exception\RuntimeException
/vendor/laminas/laminas-serializer/src/Adapter/PhpSerialize.php123
25
Laminas\Serializer\Adapter\PhpSerialize unserialize
/vendor/laminas/laminas-cache/src/Storage/Plugin/Serializer.php66
24
Laminas\Cache\Storage\Plugin\Serializer onReadItemPost
/vendor/laminas/laminas-eventmanager/src/EventManager.php319
23
Laminas\EventManager\EventManager triggerListeners
/vendor/laminas/laminas-eventmanager/src/EventManager.php169
22
Laminas\EventManager\EventManager triggerEvent
/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php225
21
Laminas\Cache\Storage\Adapter\AbstractAdapter triggerPost
/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php356
20
Laminas\Cache\Storage\Adapter\AbstractAdapter getItem
/vendor/laminas/laminas-cache-storage-adapter-filesystem/src/Filesystem.php618
19
Laminas\Cache\Storage\Adapter\Filesystem getItem
/module/VuFindSearch/src/VuFindSearch/Backend/EDS/Backend.php508
18
VuFindSearch\Backend\EDS\Backend getAuthenticationToken
/module/VuFindSearch/src/VuFindSearch/Backend/EDS/Backend.php205
17
VuFindSearch\Backend\EDS\Backend search
/module/VuFindSearch/src/VuFindSearch/Command/CallMethodCommand.php137
16
call_user_func
/module/VuFindSearch/src/VuFindSearch/Command/CallMethodCommand.php137
15
VuFindSearch\Command\CallMethodCommand execute
/module/VuFindSearch/src/VuFindSearch/Service.php106
14
VuFindSearch\Service invoke
/module/VuFind/src/VuFind/Search/EDS/Results.php80
13
VuFind\Search\EDS\Results performSearch
/module/VuFind/src/VuFind/Search/Base/Results.php320
12
VuFind\Search\Base\Results performAndProcessSearch
/module/VuFind/src/VuFind/Search/SearchRunner.php153
11
VuFind\Search\SearchRunner run
/module/VuFind/src/VuFind/Controller/AbstractSearch.php378
10
VuFind\Controller\AbstractSearch getSearchResultsView
/module/VuFind/src/VuFind/Controller/AbstractSearch.php306
9
VuFind\Controller\AbstractSearch resultsAction
/module/VuFind/src/VuFind/Controller/EdsController.php97
8
VuFind\Controller\EdsController searchAction
/vendor/laminas/laminas-mvc/src/Controller/AbstractActionController.php72
7
Laminas\Mvc\Controller\AbstractActionController onDispatch
/vendor/laminas/laminas-eventmanager/src/EventManager.php319
6
Laminas\EventManager\EventManager triggerListeners
/vendor/laminas/laminas-eventmanager/src/EventManager.php177
5
Laminas\EventManager\EventManager triggerEventUntil
/vendor/laminas/laminas-mvc/src/Controller/AbstractController.php105
4
Laminas\Mvc\Controller\AbstractController dispatch
/vendor/laminas/laminas-mvc/src/DispatchListener.php117
3
Laminas\Mvc\DispatchListener onDispatch
/vendor/laminas/laminas-eventmanager/src/EventManager.php319
2
Laminas\EventManager\EventManager triggerListeners
/vendor/laminas/laminas-eventmanager/src/EventManager.php177
1
Laminas\EventManager\EventManager triggerEventUntil
/vendor/laminas/laminas-mvc/src/Application.php319
0
Laminas\Mvc\Application run
/public/index.php23
 
    /**
     * Unserialize
     *
     * @todo   Allow integration with unserialize_callback_func
     * @param  string $serialized
     * @return mixed
     * @throws Exception\RuntimeException On unserialize error.
     */
    public function unserialize($serialized)
    {
        if (! is_string($serialized) || ! preg_match('/^((s|i|d|b|a|O|C):|N;)/', $serialized)) {
            $value = $serialized;
            if (is_object($value)) {
                $value = $value::class;
            } elseif (! is_string($value)) {
                $value = gettype($value);
            }
 
            throw new Exception\RuntimeException(sprintf(
                'Serialized data must be a string containing serialized PHP code; received: %s',
                $value
            ));
        }
 
        // If we have a serialized boolean false value, just return false;
        // prevents the unserialize handler from creating an error.
        if ($serialized === static::$serializedFalse) {
            return false;
        }
 
        $errorLevel = E_NOTICE;
        if (PHP_VERSION_ID >= 80300) {
            $errorLevel = E_WARNING;
        }
 
        ErrorHandler::start($errorLevel);
 
        // The second parameter to unserialize() is only available on PHP 7.0 or higher
        $ret = PHP_MAJOR_VERSION >= 7
Arguments
  1. "Serialized data must be a string containing serialized PHP code; received: "
    
        $this->listeners[] = $events->attach('incrementItems.pre', [$this, 'onIncrementItemsPre'], $prePriority);
 
        $this->listeners[] = $events->attach('decrementItem.pre', [$this, 'onDecrementItemPre'], $prePriority);
        $this->listeners[] = $events->attach('decrementItems.pre', [$this, 'onDecrementItemsPre'], $prePriority);
 
        // overwrite capabilities
        $this->listeners[] = $events->attach('getCapabilities.post', [$this, 'onGetCapabilitiesPost'], $postPriority);
    }
 
    /**
     * On read item post
     *
     * @return void
     */
    public function onReadItemPost(PostEvent $event)
    {
        $result = $event->getResult();
        if ($result !== null) {
            $serializer = $this->getOptions()->getSerializer();
            $result     = $serializer->unserialize($result);
            $event->setResult($result);
        }
    }
 
    /**
     * On read items post
     *
     * @return void
     */
    public function onReadItemsPost(PostEvent $event)
    {
        $serializer = $this->getOptions()->getSerializer();
        $result     = $event->getResult();
        foreach ($result as &$value) {
            $value = $serializer->unserialize($value);
        }
        $event->setResult($result);
    }
 
    /**
        }
 
        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;
    }
        $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__,
                get_debug_type($eventName),
     * Trigger a pre event and return the event response collection
     *
     * @param  string $eventName
     * @return ResponseCollection All handler return values
     */
    protected function triggerPre($eventName, ArrayObject $args)
    {
        return $this->getEventManager()->triggerEvent(new Event($eventName . '.pre', $this, $args));
    }
 
    /**
     * Triggers the PostEvent and return the result value.
     *
     * @param  string      $eventName
     * @return mixed
     */
    protected function triggerPost($eventName, ArrayObject $args, mixed &$result)
    {
        $postEvent = new PostEvent($eventName . '.post', $this, $args, $result);
        $eventRs   = $this->getEventManager()->triggerEvent($postEvent);
 
        return $eventRs->stopped()
            ? $eventRs->last()
            : $postEvent->getResult();
    }
 
    /**
     * Trigger an exception event
     *
     * If the ExceptionEvent has the flag "throwException" enabled throw the
     * exception after trigger else return the result.
     *
     * @param  string      $eventName
     * @throws Exception\ExceptionInterface
     * @return mixed
     */
    protected function triggerException($eventName, ArrayObject $args, mixed &$result, \Exception $exception)
    {
        $exceptionEvent = new ExceptionEvent($eventName . '.exception', $this, $args, $result, $exception);
        $eventRs        = $this->getEventManager()->triggerEvent($exceptionEvent);
        }
        if ($argn > 2) {
            $args['casToken'] = &$casToken;
        }
        $args = new ArrayObject($args);
 
        try {
            $eventRs = $this->triggerPre(__FUNCTION__, $args);
 
            if ($eventRs->stopped()) {
                $result = $eventRs->last();
            } elseif ($args->offsetExists('success') && $args->offsetExists('casToken')) {
                $result = $this->internalGetItem($args['key'], $args['success'], $args['casToken']);
            } elseif ($args->offsetExists('success')) {
                $result = $this->internalGetItem($args['key'], $args['success']);
            } else {
                $result = $this->internalGetItem($args['key']);
            }
 
            return $this->triggerPost(__FUNCTION__, $args, $result);
        } catch (\Exception $e) {
            $result  = null;
            $success = false;
            return $this->triggerException(__FUNCTION__, $args, $result, $e);
        }
    }
 
    /**
     * Internal method to get an item.
     *
     * @param  string  $normalizedKey
     * @param  bool $success
     * @return mixed Data on success, null on failure
     * @throws Exception\ExceptionInterface
     */
    abstract protected function internalGetItem(&$normalizedKey, &$success = null, mixed &$casToken = null);
 
    /**
     * Get multiple items.
     *
     * @throws Exception\ExceptionInterface
     * @triggers getItem.pre(PreEvent)
     * @triggers getItem.post(PostEvent)
     * @triggers getItem.exception(ExceptionEvent)
     */
    public function getItem($key, &$success = null, &$casToken = null)
    {
        $options = $this->getOptions();
        if ($options->getReadable() && $options->getClearStatCache()) {
            $this->filesystem->clearStatCache();
        }
 
        $argn = func_num_args();
        if ($argn > 2) {
            return parent::getItem($key, $success, $casToken);
        } elseif ($argn > 1) {
            return parent::getItem($key, $success);
        }
 
        return parent::getItem($key);
    }
 
    /**
     * Get multiple items.
     *
     * @param  array $keys
     * @return array Associative array of keys and values
     * @throws Exception\ExceptionInterface
     * @triggers getItems.pre(PreEvent)
     * @triggers getItems.post(PostEvent)
     * @triggers getItems.exception(ExceptionEvent)
     */
    public function getItems(array $keys)
    {
        $options = $this->getOptions();
        if ($options->getReadable() && $options->getClearStatCache()) {
            $this->filesystem->clearStatCache();
        }
 
        return parent::getItems($keys);
    }
 
    /**
     * Obtain the authentication to use with the EDS API from cache if it exists. If
     * not, then generate a new one.
     *
     * @param bool $isInvalid whether or not the the current token is invalid
     *
     * @return string
     */
    protected function getAuthenticationToken($isInvalid = false)
    {
        $token = null;
        if ($this->ipAuth) {
            return $token;
        }
        if ($isInvalid) {
            $this->cache->setItem('edsAuthenticationToken', null);
        }
        $authTokenData = $this->cache->getItem('edsAuthenticationToken');
        if (isset($authTokenData)) {
            $currentToken = $authTokenData['token'] ?? '';
            $expirationTime = $authTokenData['expiration'] ?? 0;
            $this->debug(
                'Cached Authentication data: '
                . "$currentToken, expiration time: $expirationTime"
            );
 
            // Check to see if the token expiration time is greater than the current
            // time. If the token is expired or within 5 minutes of expiring,
            // generate a new one.
            if (!empty($currentToken) && (time() <= ($expirationTime - (60 * 5)))) {
                return $currentToken;
            }
        }
 
        $username = $this->userName;
        $password = $this->password;
        $orgId = $this->orgId;
        if (!empty($username) && !empty($password)) {
    }
 
    /**
     * Perform a search and return record collection.
     *
     * @param AbstractQuery $query  Search query
     * @param int           $offset Search offset
     * @param int           $limit  Search limit
     * @param ParamBag      $params Search backend parameters
     *
     * @return \VuFindSearch\Response\RecordCollectionInterface
     **/
    public function search(
        AbstractQuery $query,
        $offset,
        $limit,
        ParamBag $params = null
    ) {
        // process EDS API communication tokens.
        $authenticationToken = $this->getAuthenticationToken();
        $sessionToken = $this->getSessionToken();
        $this->debug(
            "Authentication Token: $authenticationToken, SessionToken: $sessionToken"
        );
 
        // create query parameters from VuFind data
        $queryString = $query->getAllTerms();
        $paramsStr = implode('&', null !== $params ? $params->request() : []);
        $this->debug(
            "Query: $queryString, Limit: $limit, Offset: $offset, "
            . "Params: $paramsStr"
        );
 
        $baseParams = $this->getQueryBuilder()->build($query);
        $paramsStr = implode('&', $baseParams->request());
        $this->debug("BaseParams: $paramsStr ");
        if (null !== $params) {
            $baseParams->mergeWith($params);
        }
        $baseParams->set('resultsPerPage', $limit);
     *
     * @return CommandInterface Command instance for method chaining
     */
    public function execute(BackendInterface $backend): CommandInterface
    {
        $this->validateBackend($backend);
        if (
            !($backend instanceof $this->interface)
            || !method_exists($this->interface, $this->method)
        ) {
            throw new BackendException(
                "$this->backendId does not support $this->method()"
            );
        }
        $args = $this->getArguments();
        if ($backend instanceof ExtraRequestDetailsInterface) {
            $backend->resetExtraRequestDetails();
        }
        $this->finalizeExecution(
            call_user_func([$backend, $this->method], ...$args)
        );
        if ($backend instanceof ExtraRequestDetailsInterface) {
            $this->extraRequestDetails = $backend->getExtraRequestDetails();
        }
        return $this;
    }
}
 
     *
     * @return CommandInterface Command instance for method chaining
     */
    public function execute(BackendInterface $backend): CommandInterface
    {
        $this->validateBackend($backend);
        if (
            !($backend instanceof $this->interface)
            || !method_exists($this->interface, $this->method)
        ) {
            throw new BackendException(
                "$this->backendId does not support $this->method()"
            );
        }
        $args = $this->getArguments();
        if ($backend instanceof ExtraRequestDetailsInterface) {
            $backend->resetExtraRequestDetails();
        }
        $this->finalizeExecution(
            call_user_func([$backend, $this->method], ...$args)
        );
        if ($backend instanceof ExtraRequestDetailsInterface) {
            $this->extraRequestDetails = $backend->getExtraRequestDetails();
        }
        return $this;
    }
}
 
    }
 
    /**
     * Invoke a command.
     *
     * @param CommandInterface $command Command
     *
     * @return CommandInterface
     */
    public function invoke(CommandInterface $command)
    {
        // The backend instance is no longer added as an event parameter.
        // All other legacy event parameters are accessible via the command object.
        $args = ['command' => $command];
 
        $backend = $this->resolve($command->getTargetIdentifier(), $args);
 
        $this->triggerPre($this, $args);
        try {
            $command->execute($backend);
        } catch (BackendException $e) {
            $args['error'] = $e;
            $this->triggerError($this, $args);
            throw $e;
        }
        $this->triggerPost($this, $args);
 
        return $command;
    }
 
    /**
     * Resolve a backend.
     *
     * @param string            $backendId Backend name
     * @param array|ArrayAccess $args      Service function arguments
     *
     * @return BackendInterface
     *
     * @throws Exception\RuntimeException Unable to resolve backend
     */
    /**
     * Support method for performAndProcessSearch -- perform a search based on the
     * parameters passed to the object.
     *
     * @return void
     */
    protected function performSearch()
    {
        $query  = $this->getParams()->getQuery();
        $limit  = $this->getParams()->getLimit();
        $offset = $this->getStartRecord() - 1;
        $params = $this->getParams()->getBackendParameters();
        $command = new SearchCommand(
            $this->backendId,
            $query,
            $offset,
            $limit,
            $params
        );
        $collection = $this->getSearchService()->invoke($command)
            ->getResult();
        if (null != $collection) {
            $this->responseFacets = $collection->getFacets();
            $this->resultTotal = $collection->getTotal();
 
            // Add fake date facets if flagged earlier; this is necessary in order
            // to display the date range facet control in the interface.
            $dateFacets = $this->getParams()->getDateFacetSettings();
            if (!empty($dateFacets)) {
                foreach ($dateFacets as $dateFacet) {
                    $this->responseFacets[$dateFacet] = [''];
                }
            }
 
            // Construct record drivers for all the items in the response:
            $this->results = $collection->getRecords();
        }
    }
 
    /**
    }
 
    /**
     * Actually execute the search.
     *
     * @return void
     */
    public function performAndProcessSearch()
    {
        // Initialize variables to defaults (to ensure they don't stay null
        // and cause unnecessary repeat processing):
        // The value of -1 indicates that resultTotal is not available.
        $this->resultTotal = -1;
        $this->results = [];
        $this->suggestions = [];
        $this->errors = [];
 
        // Run the search:
        $this->startQueryTimer();
        $this->performSearch();
        $this->stopQueryTimer();
    }
 
    /**
     * Returns the stored list of facets for the last search
     *
     * @param array $filter Array of field => on-screen description listing
     * all of the desired facet fields; set to null to get all configured values.
     *
     * @return array        Facets data arrays
     */
    abstract public function getFacetList($filter = null);
 
    /**
     * Abstract support method for performAndProcessSearch -- perform a search based
     * on the parameters passed to the object. This method is responsible for
     * filling in all of the key class properties: results, resultTotal, etc.
     *
     * @return void
     */
        $params->setLastView($lastView);
        $params->initFromRequest($request);
 
        if (is_callable($setupCallback)) {
            $setupCallback($this, $params, $runningSearchId);
        }
 
        // Trigger the "configuration done" event.
        $this->getEventManager()->trigger(
            self::EVENT_CONFIGURED,
            $this,
            compact('params', 'request', 'runningSearchId')
        );
 
        // Attempt to perform the search; if there is a problem, inspect any Solr
        // exceptions to see if we should communicate to the user about them.
        try {
            // Explicitly execute search within controller -- this allows us to
            // catch exceptions more reliably:
            $results->performAndProcessSearch();
        } catch (\VuFindSearch\Backend\Exception\BackendException $e) {
            if ($e->hasTag(ErrorListener::TAG_PARSER_ERROR)) {
                // We need to create and process an "empty results" object to
                // ensure that recommendation modules and templates behave
                // properly when displaying the error message.
                $results = $this->resultsManager->get('EmptySet');
                $results->setParams($params);
                $results->performAndProcessSearch();
            } else {
                throw $e;
            }
        }
 
        // Trigger the "search completed" event.
        $this->getEventManager()->trigger(
            self::EVENT_COMPLETE,
            $this,
            compact('results', 'runningSearchId')
        );
 
        $view->multiFacetsSelection = (bool)($config->Results_Settings->multiFacetsSelection ?? false);
        $extraErrors = [];
 
        // Handle saved search requests:
        $savedId = $this->params()->fromQuery('saved', false);
        if ($savedId !== false) {
            return $this->redirectToSavedSearch($savedId);
        }
 
        $runner = $this->getService(\VuFind\Search\SearchRunner::class);
 
        // Send both GET and POST variables to search class:
        $request = $this->getRequest()->getQuery()->toArray()
            + $this->getRequest()->getPost()->toArray();
        $view->request = $request;
 
        $lastView = $this->getSearchMemory()
            ->retrieveLastSetting($this->searchClassId, 'view');
        try {
            $view->results = $results = $runner->run(
                $request,
                $this->searchClassId,
                $setupCallback ?: $this->getSearchSetupCallback(),
                $lastView
            );
        } catch (\VuFindSearch\Backend\Exception\DeepPagingException $e) {
            return $this->redirectToLegalSearchPage($request, $e->getLegalPage());
        }
        $view->params = $params = $results->getParams();
 
        // For page parameter being out of results list, we want to redirect to correct page
        $page = $params->getPage();
        $totalResults = $results->getResultTotal();
        $limit = $params->getLimit();
        $lastPage = $limit ? ceil($totalResults / $limit) : 1;
        if ($totalResults > 0 && $page > $lastPage) {
            $queryParams = $request;
            $queryParams['page'] = $lastPage;
            return $this->redirect()->toRoute('search-results', [], [ 'query' => $queryParams ]);
        }
            throw new \Exception('Unrecoverable deep paging error.');
        }
        $request['page'] = $page;
        $this->flashMessenger()->addErrorMessage(
            [
                'msg' => 'deep_paging_failure',
                'tokens' => ['%%page%%' => $page],
            ]
        );
        return $this->redirect()->toUrl('?' . http_build_query($request));
    }
 
    /**
     * Send search results to results view
     *
     * @return Response|ViewModel
     */
    public function resultsAction()
    {
        return $this->getSearchResultsView();
    }
 
    /**
     * Support method for getSearchResultsView() -- return the search results
     * reformatted as an RSS feed.
     *
     * @param $view ViewModel View model
     *
     * @return Response
     */
    protected function getRssSearchResponse(ViewModel $view): Response
    {
        // Build the RSS feed:
        $feedHelper = $this->getViewRenderer()->plugin('resultfeed');
        $feed = $feedHelper($view->results);
        $writer = new \Laminas\Feed\Writer\Renderer\Feed\Rss($feed);
        $writer->render();
 
        // Apply XSLT if we can find a relevant file:
        $themeInfo = $this->getService(\VuFindTheme\ThemeInfo::class);
        $view = parent::advancedAction();
        // Set up facet information:
        $view->limiterList = $this->processAdvancedFacets(
            $this->getAdvancedFacets(),
            $view->saved
        );
        $view->expanderList = $this->processAdvancedExpanders($view->saved);
        $view->searchModes = $this->processAdvancedSearchModes($view->saved);
        $view->dateRangeLimit = $this->processPublicationDateRange($view->saved);
        return $view;
    }
 
    /**
     * Search action -- call standard results action
     *
     * @return mixed
     */
    public function searchAction()
    {
        return $this->resultsAction();
    }
 
    /**
     * Return a Search Results object containing advanced facet information. This
     * data may come from the cache.
     *
     * @return array
     */
    protected function getAdvancedFacets()
    {
        // VuFind facets are what the EDS API calls limiters. Available limiters
        // are returned with a call to the EDS API Info method and are cached.
        // Since they are obtained from a separate call, there is no need to call
        // search.
 
        // Check if we have facet results stored in session. Build them if we don't.
        // pull them from the session cache
        $results = $this->getResultsManager()->get('EDS');
        $params = $results->getParams();
        $options = $params->getOptions();
     */
    public function onDispatch(MvcEvent $e)
    {
        $routeMatch = $e->getRouteMatch();
        if (! $routeMatch) {
            /**
             * @todo Determine requirements for when route match is missing.
             *       Potentially allow pulling directly from request metadata?
             */
            throw new DomainException('Missing route matches; unsure how to retrieve action');
        }
 
        $action = $routeMatch->getParam('action', 'not-found');
        $method = static::getMethodFromAction($action);
 
        if (! method_exists($this, $method)) {
            $method = 'notFoundAction';
        }
 
        $actionResponse = $this->$method();
 
        $e->setResult($actionResponse);
 
        return $actionResponse;
    }
}
 
        }
 
        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;
    }
            $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__,
                get_debug_type($eventName),
            ));
        }
 
        $this->events[$eventName][(int) $priority][0][] = $listener;
        return $listener;
    }
 
    /**
     * @events dispatch.pre, dispatch.post
     * @param  Request $request
     * @param  null|Response $response
     * @return Response|mixed
     */
    public function dispatch(Request $request, Response $response = null)
    {
        $this->request = $request;
        if (! $response) {
            $response = new HttpResponse();
        }
        $this->response = $response;
 
        $e = $this->getEvent();
        $e->setName(MvcEvent::EVENT_DISPATCH);
        $e->setRequest($request);
        $e->setResponse($response);
        $e->setTarget($this);
 
        $result = $this->getEventManager()->triggerEventUntil(static fn($test): bool => $test instanceof Response, $e);
 
        if ($result->stopped()) {
            return $result->last();
        }
 
        return $e->getResult();
    }
 
    /**
     * Get request object
     *
     * @return Request
     */
    public function getRequest()
    {
        if (! $this->request) {
            $this->request = new HttpRequest();
        }
 
        return $this->request;
            );
            return $this->complete($return, $e);
        } catch (Throwable $exception) {
            $return = $this->marshalBadControllerEvent($controllerName, $e, $application, $exception);
            return $this->complete($return, $e);
        } catch (Exception $exception) {  // @TODO clean up once PHP 7 requirement is enforced
            $return = $this->marshalBadControllerEvent($controllerName, $e, $application, $exception);
            return $this->complete($return, $e);
        }
 
        if ($controller instanceof InjectApplicationEventInterface) {
            $controller->setEvent($e);
        }
 
        $request  = $e->getRequest();
        $response = $application->getResponse();
        $caughtException = null;
 
        try {
            $return = $controller->dispatch($request, $response);
        } catch (Throwable $ex) {
            $caughtException = $ex;
        } catch (Exception $ex) {  // @TODO clean up once PHP 7 requirement is enforced
            $caughtException = $ex;
        }
 
        if ($caughtException !== null) {
            $e->setName(MvcEvent::EVENT_DISPATCH_ERROR);
            $e->setError($application::ERROR_EXCEPTION);
            $e->setController($controllerName);
            $e->setControllerClass($controller::class);
            $e->setParam('exception', $caughtException);
 
            $return = $application->getEventManager()->triggerEvent($e)->last();
            if (! $return) {
                $return = $e->getResult();
            }
        }
 
        return $this->complete($return, $e);
        }
 
        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;
    }
            $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__,
                get_debug_type($eventName),
            ));
        }
 
        $this->events[$eventName][(int) $priority][0][] = $listener;
        return $listener;
    }
 
    /**
            $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;
            }
        }
 
        if ($event->getError()) {
            return $this->completeRequest($event);
        }
 
        // 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
$vufindProfiler = getenv('VUFIND_PROFILER_XHPROF');
if (!empty($vufindProfiler)) {
    include __DIR__ . '/../module/VuFind/functions/profiler.php';
    enableVuFindProfiling($vufindProfiler);
}
 
// Run the application!
$app = include __DIR__ . '/../config/application.php';
if (PHP_SAPI === 'cli') {
    return $app->getServiceManager()
        ->get(\VuFindConsole\ConsoleRunner::class)->run();
} else {
    // Setup remote code coverage if enabled:
    if (getenv('VUFIND_CODE_COVERAGE')) {
        $modules = $app->getServiceManager()
            ->get(\Laminas\ModuleManager\ModuleManager::class)->getModules();
        include __DIR__ . '/../module/VuFind/functions/codecoverage.php';
        setupVuFindRemoteCodeCoverage($modules);
    }
    $app->run();
}
 

Environment & details:

Key Value
lookfor
"(( coding AND decoding technikyaaaaaaaye ) OR ( coding AND decoding technika ))~"
type
"AllFields"
empty
empty
empty
Key Value
__Laminas
array:2 [
  "_REQUEST_ACCESS_TIME" => 1768817515.8767
  "_VALID" => array:1 [
    "Laminas\Session\Validator\Id" => "odq6k5e7m84scl5650hu1sprtk"
  ]
]
SessionState
Laminas\Stdlib\ArrayObject {#938}
Key Value
REDIRECT_SCRIPT_URL
"/vufind/EDS/Search"
REDIRECT_SCRIPT_URI
"https://ersearch2.cvtisr.sk/vufind/EDS/Search"
REDIRECT_VUFIND_ENV
"development"
REDIRECT_VUFIND_LOCAL_DIR
"/usr/local/vufind/local"
REDIRECT_VUFIND_LOCAL_MODULES
"cvti"
REDIRECT_Shib-Handler
"https://ersearch2.cvtisr.sk/Shibboleth.sso"
REDIRECT_HTTPS
"on"
REDIRECT_STATUS
"200"
SCRIPT_URL
"/vufind/EDS/Search"
SCRIPT_URI
"https://ersearch2.cvtisr.sk/vufind/EDS/Search"
VUFIND_ENV
"development"
VUFIND_LOCAL_DIR
"/usr/local/vufind/local"
VUFIND_LOCAL_MODULES
"cvti"
Shib-Handler
"https://ersearch2.cvtisr.sk/Shibboleth.sso"
HTTPS
"on"
SSL_SERVER_S_DN_C
"SK"
SSL_SERVER_S_DN_ST
"SK"
SSL_SERVER_S_DN_L
"Bratislava"
SSL_SERVER_S_DN_O
"CVTISR"
SSL_SERVER_S_DN_OU
"OIT"
SSL_SERVER_S_DN_CN
"ersearch2.cvtisr.sk"
SSL_SERVER_S_DN_Email
"dctech@cvtisr.sk"
SSL_SERVER_I_DN_C
"SK"
SSL_SERVER_I_DN_ST
"SK"
SSL_SERVER_I_DN_L
"Bratislava"
SSL_SERVER_I_DN_O
"CVTISR"
SSL_SERVER_I_DN_OU
"OIT"
SSL_SERVER_I_DN_CN
"ersearch2.cvtisr.sk"
SSL_SERVER_I_DN_Email
"dctech@cvtisr.sk"
SSL_VERSION_INTERFACE
"mod_ssl/2.4.58"
SSL_VERSION_LIBRARY
"OpenSSL/3.0.13"
SSL_PROTOCOL
"TLSv1.2"
SSL_SECURE_RENEG
"true"
SSL_COMPRESS_METHOD
"NULL"
SSL_CIPHER
"ECDHE-RSA-AES128-SHA"
SSL_CIPHER_EXPORT
"false"
SSL_CIPHER_USEKEYSIZE
"128"
SSL_CIPHER_ALGKEYSIZE
"128"
SSL_CLIENT_VERIFY
"NONE"
SSL_SERVER_M_VERSION
"3"
SSL_SERVER_M_SERIAL
"03644DBC2D568C50CB99DFD4469EA780EF2DECC3"
SSL_SERVER_V_START
"Jan 31 13:41:57 2025 GMT"
SSL_SERVER_V_END
"Jan 31 13:41:57 2026 GMT"
SSL_SERVER_S_DN
"emailAddress=dctech@cvtisr.sk,CN=ersearch2.cvtisr.sk,OU=OIT,O=CVTISR,L=Bratislava,ST=SK,C=SK"
SSL_SERVER_I_DN
"emailAddress=dctech@cvtisr.sk,CN=ersearch2.cvtisr.sk,OU=OIT,O=CVTISR,L=Bratislava,ST=SK,C=SK"
SSL_SERVER_A_KEY
"rsaEncryption"
SSL_SERVER_A_SIG
"sha256WithRSAEncryption"
SSL_SESSION_ID
"856975cb04bb0a240527cd2d30ea8ebf673d9029202519686e5b7e2dc04255d3"
SSL_SESSION_RESUMED
"Resumed"
HTTP_ACCEPT
"*/*"
HTTP_USER_AGENT
"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"
HTTP_ACCEPT_ENCODING
"gzip, br, zstd, deflate"
HTTP_HOST
"ersearch2.cvtisr.sk"
PATH
"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/snap/bin"
SERVER_SIGNATURE
""
SERVER_SOFTWARE
"Apache"
SERVER_NAME
"ersearch2.cvtisr.sk"
SERVER_ADDR
"10.21.154.12"
SERVER_PORT
"443"
REMOTE_ADDR
"10.23.50.154"
DOCUMENT_ROOT
"/var/www/html"
REQUEST_SCHEME
"https"
CONTEXT_PREFIX
"/vufind"
CONTEXT_DOCUMENT_ROOT
"/usr/local/vufind/public"
SERVER_ADMIN
"webmaster@localhost"
SCRIPT_FILENAME
"/usr/local/vufind/public/index.php"
REMOTE_PORT
"22158"
REMOTE_USER
""
REDIRECT_URL
"/vufind/EDS/Search"
REDIRECT_QUERY_STRING
"lookfor=%28%28+coding+AND+decoding+technikyaaaaaaaye+%29+OR+%28+coding+AND+decoding+technika+%29%29~&type=AllFields"
GATEWAY_INTERFACE
"CGI/1.1"
SERVER_PROTOCOL
"HTTP/1.1"
REQUEST_METHOD
"GET"
QUERY_STRING
"lookfor=%28%28+coding+AND+decoding+technikyaaaaaaaye+%29+OR+%28+coding+AND+decoding+technika+%29%29~&type=AllFields"
REQUEST_URI
"/vufind/EDS/Search?lookfor=%28%28+coding+AND+decoding+technikyaaaaaaaye+%29+OR+%28+coding+AND+decoding+technika+%29%29~&type=AllFields"
SCRIPT_NAME
"/vufind/index.php"
PHP_SELF
"/vufind/index.php"
PHP_AUTH_USER
""
REQUEST_TIME_FLOAT
1768817515.8623
REQUEST_TIME
1768817515
empty
0. Whoops\Handler\PrettyPageHandler