Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_d6b56f8987d5a764201ad7da8eb32889 in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_d6b56f8987d5a764201ad7da8eb32889): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_d85b746282ed961a675171fb163f5bc6 in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_d85b746282ed961a675171fb163f5bc6): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_d9c1a9d48e49f2e9ee33df584fb2fd21 in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_d9c1a9d48e49f2e9ee33df584fb2fd21): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_dd7579d0fbb3fa8afbb40be78d82c575 in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_dd7579d0fbb3fa8afbb40be78d82c575): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_e09629c65b952d5995c98ab3bc1bdc61 in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_e09629c65b952d5995c98ab3bc1bdc61): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_e346b285b96c4b2e066f03204a78074c in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_e346b285b96c4b2e066f03204a78074c): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_e49f9a545b28122f92c55baab687cd2d in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_e49f9a545b28122f92c55baab687cd2d): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_e54fa69438f77bc70ac70fc9c6ab6936 in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_e54fa69438f77bc70ac70fc9c6ab6936): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_e6ac1568de33377835e192376f271e75 in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_e6ac1568de33377835e192376f271e75): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_e6cc2b9d38adebc3550568fbea8d9f6a in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_e6cc2b9d38adebc3550568fbea8d9f6a): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_e7a8525cdb239520bc75b0da81730e26 in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_e7a8525cdb239520bc75b0da81730e26): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_e963d9a0e83b783951199f5579d53b0f in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_e963d9a0e83b783951199f5579d53b0f): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_ea1cfebc727ec3d24d897ce8c177dd41 in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_ea1cfebc727ec3d24d897ce8c177dd41): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_ea99f9172e41ba0c0c8e111eb684f75a in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_ea99f9172e41ba0c0c8e111eb684f75a): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_ebc9a2c0e20c5772cee22a075bc89a3e in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_ebc9a2c0e20c5772cee22a075bc89a3e): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_ec41c8e99331d7a79d15c4f0c52c0f50 in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_ec41c8e99331d7a79d15c4f0c52c0f50): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_eeb25db4032590068477d025f02b6674 in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_eeb25db4032590068477d025f02b6674): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_eef4d52dc1a44313ffa7f198fa2de070 in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_eef4d52dc1a44313ffa7f198fa2de070): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_efd6051e74aacc0bc72ed78a1f85b0b4 in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_efd6051e74aacc0bc72ed78a1f85b0b4): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_f18a2bb8f99086dba086308634d09bd7 in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_f18a2bb8f99086dba086308634d09bd7): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_f23b89dfae6ce85df2003072ad314f34 in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_f23b89dfae6ce85df2003072ad314f34): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_f29118c083f84b13d7d5eb13f59560cb in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_f29118c083f84b13d7d5eb13f59560cb): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_f35601c2071546a63de598b773caa643 in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_f35601c2071546a63de598b773caa643): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_f3eea1bb6d86999ff46f9efe3f54fac8 in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_f3eea1bb6d86999ff46f9efe3f54fac8): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_f53526a2d11eeb805cfcc7d2a9a46e36 in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_f53526a2d11eeb805cfcc7d2a9a46e36): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_f577610a616fdabe4c73480056211a46 in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_f577610a616fdabe4c73480056211a46): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_f63a4efdf796ca046d4c62b79c8c82e1 in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_f63a4efdf796ca046d4c62b79c8c82e1): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_f69b3cd9c2392ba8fb77441a6cdffe4a in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_f69b3cd9c2392ba8fb77441a6cdffe4a): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_f72e91c1fb2e20b058ce64c22d42b4f8 in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_f72e91c1fb2e20b058ce64c22d42b4f8): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_f8cb285c145a0ad501985ebe0f336cb9 in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_f8cb285c145a0ad501985ebe0f336cb9): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_f9325beb60e2ac0f7b24771e5beed0ad in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_f9325beb60e2ac0f7b24771e5beed0ad): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_f932ab7e703df9bc91de3913ab8910fc in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_f932ab7e703df9bc91de3913ab8910fc): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_f984f5f024ca8ceaa40d4b19558bbcee in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_f984f5f024ca8ceaa40d4b19558bbcee): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_fa412ac5a5d1ac6872fe05f9f097624f in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_fa412ac5a5d1ac6872fe05f9f097624f): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_fcc5d1e405af7097fd7919575028041b in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_fcc5d1e405af7097fd7919575028041b): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_fe96147dc13f5c3a795571c7ad837a52 in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_fe96147dc13f5c3a795571c7ad837a52): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_fea785cbb4359019737fe596624c5723 in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_fea785cbb4359019737fe596624c5723): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_feefe7879ed0b7ccf83f8120575a9652 in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_feefe7879ed0b7ccf83f8120575a9652): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: filemtime(): stat failed for /tmp/vufind_sessions/sess_ff4c0f7899e53fa11799030c6833b852 in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 137

Warning: unlink(/tmp/vufind_sessions/sess_ff4c0f7899e53fa11799030c6833b852): No such file or directory in /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php on line 138

Warning: session_start(): Session cache limiter cannot be sent after headers have already been sent (output started at /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php:137) in /usr/local/vufind/vendor/laminas/laminas-session/src/SessionManager.php on line 144
Whoops! There was an error.
Whoops \ Exception \ ErrorException (E_WARNING)
Cannot modify header information - headers already sent by (output started at /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php:137) Whoops\Exception\ErrorException thrown with message "Cannot modify header information - headers already sent by (output started at /usr/local/vufind/module/VuFind/src/VuFind/Session/File.php:137)" Stacktrace: #10 Whoops\Exception\ErrorException in /usr/local/vufind/module/VuFind/src/VuFind/Cookie/CookieManager.php:233 #9 setcookie in /usr/local/vufind/module/VuFind/src/VuFind/Cookie/CookieManager.php:233 #8 VuFind\Cookie\CookieManager:proxySetCookie in /usr/local/vufind/module/VuFind/src/VuFind/Cookie/CookieManager.php:265 #7 VuFind\Cookie\CookieManager:setGlobalCookie in /usr/local/vufind/module/VuFind/src/VuFind/Cookie/CookieManager.php:315 #6 VuFind\Cookie\CookieManager:set in /usr/local/vufind/module/VuFindTheme/src/VuFindTheme/Initializer.php:229 #5 VuFindTheme\Initializer:pickTheme in /usr/local/vufind/module/VuFindTheme/src/VuFindTheme/Initializer.php:167 #4 VuFindTheme\Initializer:init in /usr/local/vufind/module/VuFind/src/VuFind/Bootstrapper.php:240 #3 VuFind\Bootstrapper:VuFind\{closure} 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:179 #1 Laminas\EventManager\EventManager:triggerEventUntil in /usr/local/vufind/vendor/laminas/laminas-mvc/src/Application.php:325 #0 Laminas\Mvc\Application:run in /usr/local/vufind/public/index.php:16
10
Whoops\Exception\ErrorException
/module/VuFind/src/VuFind/Cookie/CookieManager.php233
9
setcookie
/module/VuFind/src/VuFind/Cookie/CookieManager.php233
8
VuFind\Cookie\CookieManager proxySetCookie
/module/VuFind/src/VuFind/Cookie/CookieManager.php265
7
VuFind\Cookie\CookieManager setGlobalCookie
/module/VuFind/src/VuFind/Cookie/CookieManager.php315
6
VuFind\Cookie\CookieManager set
/module/VuFindTheme/src/VuFindTheme/Initializer.php229
5
VuFindTheme\Initializer pickTheme
/module/VuFindTheme/src/VuFindTheme/Initializer.php167
4
VuFindTheme\Initializer init
/module/VuFind/src/VuFind/Bootstrapper.php240
3
VuFind\Bootstrapper VuFind\{closure}
/vendor/laminas/laminas-eventmanager/src/EventManager.php319
2
Laminas\EventManager\EventManager triggerListeners
/vendor/laminas/laminas-eventmanager/src/EventManager.php179
1
Laminas\EventManager\EventManager triggerEventUntil
/vendor/laminas/laminas-mvc/src/Application.php325
0
Laminas\Mvc\Application run
/public/index.php16
        $path,
        $domain,
        $secure,
        $httpOnly,
        $sameSite
    ) {
        // Special case: in CLI -- don't actually write headers!
        if ('cli' === PHP_SAPI) {
            return true;
        }
        return setcookie(
            $key,
            $value ?? '',
            [
                'expires' => $expire,
                'path' => $path,
                'domain' => $domain,
                'samesite' => $sameSite,
                'secure' => $secure,
                'httponly' => $httpOnly,
            ]
        );
    }
 
    /**
     * Support method for set() -- set the actual cookie in PHP.
     *
     * @param string    $key      Name of cookie to set
     * @param mixed     $value    Value to set
     * @param int       $expire   Cookie expiration time
     * @param null|bool $httpOnly Whether the cookie should be "HTTP only"
     * @param string    $sameSite SameSite attribute to use (Lax, Strict or None)
     *
     * @return bool
     */
    public function setGlobalCookie(
        $key,
        $value,
        $expire,
        $httpOnly = null,
        $path,
        $domain,
        $secure,
        $httpOnly,
        $sameSite
    ) {
        // Special case: in CLI -- don't actually write headers!
        if ('cli' === PHP_SAPI) {
            return true;
        }
        return setcookie(
            $key,
            $value ?? '',
            [
                'expires' => $expire,
                'path' => $path,
                'domain' => $domain,
                'samesite' => $sameSite,
                'secure' => $secure,
                'httponly' => $httpOnly,
            ]
        );
    }
 
    /**
     * Support method for set() -- set the actual cookie in PHP.
     *
     * @param string    $key      Name of cookie to set
     * @param mixed     $value    Value to set
     * @param int       $expire   Cookie expiration time
     * @param null|bool $httpOnly Whether the cookie should be "HTTP only"
     * @param string    $sameSite SameSite attribute to use (Lax, Strict or None)
     *
     * @return bool
     */
    public function setGlobalCookie(
        $key,
        $value,
        $expire,
        $httpOnly = null,
     *
     * @return bool
     */
    public function setGlobalCookie(
        $key,
        $value,
        $expire,
        $httpOnly = null,
        $sameSite = null
    ) {
        if (null === $httpOnly) {
            $httpOnly = $this->httpOnly;
        }
        if (null === $sameSite) {
            $sameSite = $this->sameSite;
        }
        // Simple case: flat value.
        if (!is_array($value)) {
            return $this->proxySetCookie(
                $key,
                $value,
                $expire,
                $this->path,
                $this->domain,
                $this->secure,
                $httpOnly,
                $sameSite
            );
        }
 
        // Complex case: array of values.
        $success = true;
        foreach ($value as $i => $curr) {
            $lastSuccess = $this->proxySetCookie(
                $key . '[' . $i . ']',
                $curr,
                $expire,
                $this->path,
                $this->domain,
                $this->secure,
    /**
     * Set a cookie.
     *
     * @param string    $key      Name of cookie to set
     * @param mixed     $value    Value to set
     * @param int       $expire   Cookie expiration time
     * @param null|bool $httpOnly Whether the cookie should be "HTTP only"
     * @param string    $sameSite SameSite attribute to use (Lax, Strict or None)
     *
     * @return bool
     */
    public function set(
        $key,
        $value,
        $expire = 0,
        $httpOnly = null,
        $sameSite = null
    ) {
        $success = $this
            ->setGlobalCookie($key, $value, $expire, $httpOnly, $sameSite);
        if ($success) {
            $this->cookies[$key] = $value;
        }
        return $success;
    }
 
    /**
     * Clear a cookie.
     *
     * @param string $key Name of cookie to unset
     *
     * @return bool
     */
    public function clear($key)
    {
        $value = $this->get($key);
        if (is_array($value)) {
            $success = true;
            foreach (array_keys($value) as $i) {
                if (!$this->clear($key . '[' . $i . ']')) {
            ? $this->config->mobile_theme : false;
 
        // Find out if the user has a saved preference in the POST, URL or cookies:
        $selectedUI = null;
        if (isset($request)) {
            $selectedUI = $request->getPost()->get(
                'ui',
                $request->getQuery()->get(
                    'ui',
                    $request->getCookie()->ui ?? null
                )
            );
        }
        if (empty($selectedUI)) {
            $selectedUI = ($mobileTheme && $this->mobile->detect())
                ? 'mobile' : 'standard';
        }
 
        // Save the current setting to a cookie so it persists:
        $this->cookieManager->set('ui', $selectedUI);
 
        // Do we have a valid mobile selection?
        if ($mobileTheme && $selectedUI == 'mobile') {
            return $mobileTheme;
        }
 
        // Do we have a non-standard selection?
        if (
            $selectedUI != 'standard'
            && isset($this->config->alternate_themes)
        ) {
            // Check the alternate theme settings for a match:
            $parts = explode(',', $this->config->alternate_themes);
            foreach ($parts as $part) {
                $subparts = explode(':', $part);
                if (
                    (trim($subparts[0]) == trim($selectedUI))
                    && isset($subparts[1]) && !empty($subparts[1])
                ) {
                    return $subparts[1];
    }
 
    /**
     * Initialize the theme.  This needs to be triggered as part of the dispatch
     * event.
     *
     * @throws \Exception
     * @return void
     */
    public function init()
    {
        // Make sure to initialize the theme just once
        if (self::$themeInitialized) {
            return;
        }
        self::$themeInitialized = true;
 
        // Determine the current theme:
        $currentTheme = $this->pickTheme(
            isset($this->event) ? $this->event->getRequest() : null
        );
 
        // Determine theme options:
        $this->sendThemeOptionsToView();
 
        // Make sure the current theme is set correctly in the tools object:
        $error = null;
        try {
            $this->tools->setTheme($currentTheme);
        } catch (\Exception $error) {
            // If an illegal value is passed in, the setter may throw an exception.
            // We should ignore it for now and throw it after we have set up the
            // theme (the setter will use a safe value instead of the illegal one).
        }
 
        // Using the settings we initialized above, actually configure the themes; we
        // need to do this even if there is an error, since we need a theme in order
        // to display an error message!
        $this->setUpThemes(array_reverse($this->tools->getThemeInfo()));
 
            ($user = $authManager->isLoggedIn())
            && $user->last_language != $language
        ) {
            $user->updateLastLanguage($language);
        }
    }
 
    /**
     * Set up theme handling.
     *
     * @return void
     */
    protected function initTheme(): void
    {
        // Attach remaining theme configuration to the dispatch event at high
        // priority (TODO: use priority constant once defined by framework):
        $config = $this->config->Site;
        $callback = function ($event) use ($config) {
            $theme = new \VuFindTheme\Initializer($config, $event);
            $theme->init();
        };
        $this->events->attach('dispatch.error', $callback, 9000);
        $this->events->attach('dispatch', $callback, 9000);
    }
 
    /**
     * Set up custom HTTP status based on exception information.
     *
     * @return void
     */
    protected function initExceptionBasedHttpStatuses(): void
    {
        // HTTP statuses not needed in console mode:
        if (PHP_SAPI == 'cli') {
            return;
        }
 
        $callback = function ($e) {
            $exception = $e->getParam('exception');
            if ($exception instanceof \VuFind\Exception\HttpStatusInterface) {
        }
 
        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__,
                is_object($eventName) ? get_class($eventName) : gettype($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
<?php
 
// If the profiler is enabled, set it up now:
$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 {
    $app->run();
}
 

Environment & details:

Key Value
lookfor "Aeronautics"
type Subject
filter Array ( [0] => building:"Flett Middle School" )
empty
empty
empty
Key Value
__Laminas Array ( [_REQUEST_ACCESS_TIME] => 1714325992.6209 [_VALID] => Array ( [Laminas\Session\Validator\Id] => ) )
SessionState Laminas\Stdlib\ArrayObject Object ( [storage:protected] => Array ( [cookiePath] => / [sessionStartTime] => 1714325992 ) [flag:protected] => 2 [iteratorClass:protected] => ArrayIterator [protectedProperties:protected] => Array ( [0] => storage [1] => flag [2] => iteratorClass [3] => protectedProperties ) )
Key Value
REDIRECT_VUFIND_ENV development
REDIRECT_VUFIND_LOCAL_DIR /usr/local/vufind/local
REDIRECT_STATUS 200
VUFIND_ENV development
VUFIND_LOCAL_DIR /usr/local/vufind/local
HTTP_HOST catalog.spokanelibrary.org
HTTP_CONNECTION close
HTTP_X_REAL_IP 18.217.203.172
HTTP_X_FORWARDED_FOR 18.217.203.172
HTTP_X_FORWARDED_PROTO https
HTTP_X_FORWARDED_SSL on
HTTP_X_FORWARDED_PORT 443
HTTP_X_ORIGINAL_URI /catalog/Search/Results?lookfor=%22Aeronautics%22&type=Subject&filter%5B%5D=building%3A%22Flett+Middle+School%22
HTTP_ACCEPT */*
HTTP_USER_AGENT Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/composer2/vendor/bin:/root/composer1/vendor/bin
SERVER_SIGNATURE <address>Apache/2.4.56 (Debian) Server at catalog.spokanelibrary.org Port 80</address>
SERVER_SOFTWARE Apache/2.4.56 (Debian)
SERVER_NAME catalog.spokanelibrary.org
SERVER_ADDR 172.21.0.24
SERVER_PORT 80
REMOTE_ADDR 172.21.0.9
DOCUMENT_ROOT /var/www/html
REQUEST_SCHEME http
CONTEXT_PREFIX /catalog
CONTEXT_DOCUMENT_ROOT /usr/local/vufind/public
SERVER_ADMIN webmaster@localhost
SCRIPT_FILENAME /usr/local/vufind/public/index.php
REMOTE_PORT 34966
REDIRECT_URL /catalog/Search/Results
REDIRECT_QUERY_STRING lookfor=%22Aeronautics%22&type=Subject&filter%5B%5D=building%3A%22Flett+Middle+School%22
GATEWAY_INTERFACE CGI/1.1
SERVER_PROTOCOL HTTP/1.1
REQUEST_METHOD GET
QUERY_STRING lookfor=%22Aeronautics%22&type=Subject&filter%5B%5D=building%3A%22Flett+Middle+School%22
REQUEST_URI /catalog/Search/Results?lookfor=%22Aeronautics%22&type=Subject&filter%5B%5D=building%3A%22Flett+Middle+School%22
SCRIPT_NAME /catalog/index.php
PHP_SELF /catalog/index.php
REQUEST_TIME_FLOAT 1714325992.4887
REQUEST_TIME 1714325992
argv Array ( [0] => lookfor=%22Aeronautics%22&type=Subject&filter%5B%5D=building%3A%22Flett [1] => Middle [2] => School%22 )
argc 3
Key Value
HOSTNAME 383091efdb19
PHP_VERSION 8.0.29
APACHE_CONFDIR /etc/apache2
PHP_INI_DIR /usr/local/etc/php
GPG_KEYS 1729F83938DA44E27BA0F4D3DBDB397470D12172 BFDDD28642824F8118EF77909B67A5C12229118F 2C16C765DBE54A088130F1BC4B9B5F600B55F3B4
PHP_LDFLAGS -Wl,-O1 -pie
VUFIND_LOCAL_DIR /usr/local/vufind/local
PWD /var/www/html
APACHE_LOG_DIR /var/log/apache2
LANG C
PHP_SHA256 14db2fbf26c07d0eb2c9fab25dbde7e27726a3e88452cca671f0896bbb683ca9
APACHE_PID_FILE /var/run/apache2/apache2.pid
PHPIZE_DEPS autoconf dpkg-dev file g++ gcc libc-dev make pkg-config re2c
VIRTUAL_HOST vufind.spokanelibrary.org,catalog.spokanelibrary.org
PHP_URL https://www.php.net/distributions/php-8.0.29.tar.xz
APACHE_RUN_GROUP www-data
APACHE_LOCK_DIR /var/lock/apache2
VUFIND_LOCAL_MODULES SPLNewMaterials,SpokanePublic
SHLVL 0
COMPOSER_ALLOW_SUPERUSER 1
PHP_CFLAGS -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
VUFIND_HOME /usr/local/vufind
APACHE_RUN_DIR /var/run/apache2
APACHE_ENVVARS /etc/apache2/envvars
APACHE_RUN_USER www-data
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/composer2/vendor/bin:/root/composer1/vendor/bin
PHP_ASC_URL https://www.php.net/distributions/php-8.0.29.tar.xz.asc
COMPOSER_HOME /root/composer2
PHP_CPPFLAGS -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
0. Whoops\Handler\PrettyPageHandler