} if ('a' != $mode) { throw new Exception\InvalidArgumentException(sprintf( 'Mode must be "a" on existing streams; received "%s"', $mode )); } $this->stream = $streamOrUrl; } else { ErrorHandler::start(); if (isset($filePermissions) && ! file_exists($streamOrUrl) && is_writable(dirname($streamOrUrl))) { touch($streamOrUrl); chmod($streamOrUrl, $filePermissions); } $this->stream = fopen($streamOrUrl, $mode, false); $error = ErrorHandler::stop(); if (! $this->stream) { throw new Exception\RuntimeException(sprintf( '"%s" cannot be opened with mode "%s"', $streamOrUrl, $mode ), 0, $error); } } if (null !== $logSeparator) { $this->setLogSeparator($logSeparator); } if ($this->formatter === null) { $this->formatter = new SimpleFormatter(); } } /** * Write a message to the log. * * @param array $event event data
'Resource is not a stream; received "%s', get_resource_type($streamOrUrl) )); } if ('a' != $mode) { throw new Exception\InvalidArgumentException(sprintf( 'Mode must be "a" on existing streams; received "%s"', $mode )); } $this->stream = $streamOrUrl; } else { ErrorHandler::start(); if (isset($filePermissions) && ! file_exists($streamOrUrl) && is_writable(dirname($streamOrUrl))) { touch($streamOrUrl); chmod($streamOrUrl, $filePermissions); } $this->stream = fopen($streamOrUrl, $mode, false); $error = ErrorHandler::stop(); if (! $this->stream) { throw new Exception\RuntimeException(sprintf( '"%s" cannot be opened with mode "%s"', $streamOrUrl, $mode ), 0, $error); } } if (null !== $logSeparator) { $this->setLogSeparator($logSeparator); } if ($this->formatter === null) { $this->formatter = new SimpleFormatter(); } } /**
'Resource is not a stream; received "%s', get_resource_type($streamOrUrl) )); } if ('a' != $mode) { throw new Exception\InvalidArgumentException(sprintf( 'Mode must be "a" on existing streams; received "%s"', $mode )); } $this->stream = $streamOrUrl; } else { ErrorHandler::start(); if (isset($filePermissions) && ! file_exists($streamOrUrl) && is_writable(dirname($streamOrUrl))) { touch($streamOrUrl); chmod($streamOrUrl, $filePermissions); } $this->stream = fopen($streamOrUrl, $mode, false); $error = ErrorHandler::stop(); if (! $this->stream) { throw new Exception\RuntimeException(sprintf( '"%s" cannot be opened with mode "%s"', $streamOrUrl, $mode ), 0, $error); } } if (null !== $logSeparator) { $this->setLogSeparator($logSeparator); } if ($this->formatter === null) { $this->formatter = new SimpleFormatter(); } } /**
* @param string $config Configuration * * @return void */ protected function addFileWriters(Logger $logger, $config) { // Make sure to use only the last ':' after second character to avoid trouble // with Windows drive letters (e.g. "c:\something\logfile:error-5") $pos = strrpos($config, ':', 2); if ($pos > 0) { $file = substr($config, 0, $pos); $error_types = substr($config, $pos + 1); } else { $file = $config; $error_types = ''; } // Make Writers $filters = explode(',', $error_types); $writer = new Writer\Stream($file); $this->addWriters($logger, $writer, $filters); } /** * Configure Slack writers. * * @param Logger $logger Logger object * @param ContainerInterface $container Service manager * @param Config $config Configuration * * @return void */ protected function addSlackWriters(Logger $logger, ContainerInterface $container, Config $config ) { $options = []; // Get config list($channel, $error_types) = explode(':', $config->Logging->slack); if ($error_types == null) { $error_types = $channel;
->get('config'); $hasWriter = false; // DEBUGGER if (!$config->System->debug == false || $this->hasDynamicDebug($container)) { $hasWriter = true; $this->addDebugWriter($logger, $config->System->debug); } // Activate database logging, if applicable: if (isset($config->Logging->database)) { $hasWriter = true; $this->addDbWriters($logger, $container, $config->Logging->database); } // Activate file logging, if applicable: if (isset($config->Logging->file)) { $hasWriter = true; $this->addFileWriters($logger, $config->Logging->file); } // Activate email logging, if applicable: if (isset($config->Logging->email)) { $hasWriter = true; $this->addEmailWriters($logger, $container, $config); } // Activate slack logging, if applicable: if (isset($config->Logging->slack) && isset($config->Logging->slackurl)) { $hasWriter = true; $this->addSlackWriters($logger, $container, $config); } // Null (no-op) writer to avoid errors if (!$hasWriter) { $logger->addWriter(new \Zend\Log\Writer\Noop()); } }
* @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 ) { if (!empty($options)) { throw new \Exception('Unexpected options passed to factory.'); } // Construct the logger as a lazy loading value holder so that // the object is not instantiated until it is called. This helps break // potential circular dependencies with other services. $callback = function (& $wrapped, $proxy) use ($container, $requestedName) { // Indicate that initialization is complete to avoid reinitialization: $proxy->setProxyInitializer(null); // Now build the actual service: $wrapped = new $requestedName(); $this->configureLogger($container, $wrapped); }; $cfg = $container->get(\ProxyManager\Configuration::class); $factory = new \ProxyManager\Factory\LazyLoadingValueHolderFactory($cfg); return $factory->createProxy($requestedName, $callback); } }
* {@inheritDoc} */ public function generate(ClassGenerator $classGenerator) : string { $code = $classGenerator->generate(); // @codeCoverageIgnoreStart if (! $this->canEval) { $fileName = tempnam(sys_get_temp_dir(), 'EvaluatingGeneratorStrategy.php.tmp.'); file_put_contents($fileName, "<?php\n" . $code); /* @noinspection PhpIncludeInspection */ require $fileName; unlink($fileName); return $code; } // @codeCoverageIgnoreEnd eval($code); return $code; } }
* {@inheritDoc} */ public function generate(ClassGenerator $classGenerator) : string { $code = $classGenerator->generate(); // @codeCoverageIgnoreStart if (! $this->canEval) { $fileName = tempnam(sys_get_temp_dir(), 'EvaluatingGeneratorStrategy.php.tmp.'); file_put_contents($fileName, "<?php\n" . $code); /* @noinspection PhpIncludeInspection */ require $fileName; unlink($fileName); return $code; } // @codeCoverageIgnoreEnd eval($code); return $code; } }
} /** * Send a message to the logger. * * @param string $level Log level * @param string $message Log message * @param array $context Log context * @param bool $prependClass Prepend class name to message? * * @return void */ protected function log($level, $message, array $context = [], $prependClass = false ) { if ($this->logger) { if ($prependClass) { $message = get_class($this) . ': ' . $message; } $this->logger->$level($message, $context); } } }
* * @return void */ protected function logWarning($msg, array $context = [], $prependClass = true) { return $this->log('warn', $msg, $context, $prependClass); } /** * Log a debug message. * * @param string $msg Log message * @param array $context Log context * @param bool $prependClass Prepend class name to message? * * @return void */ protected function debug($msg, array $context = [], $prependClass = true) { return $this->log('debug', $msg, $context, $prependClass); } /** * Send a message to the logger. * * @param string $level Log level * @param string $message Log message * @param array $context Log context * @param bool $prependClass Prepend class name to message? * * @return void */ protected function log($level, $message, array $context = [], $prependClass = false ) { if ($this->logger) { if ($prependClass) { $message = get_class($this) . ': ' . $message; } $this->logger->$level($message, $context);
* @return string Response body */ public function query($handler, ParamBag $params) { $urlSuffix = '/' . $handler; $paramString = implode('&', $params->request()); if (strlen($paramString) > self::MAX_GET_URL_LENGTH) { $method = Request::METHOD_POST; $callback = function ($client) use ($paramString) { $client->setRawBody($paramString); $client->setEncType(HttpClient::ENC_URLENCODED); $client->setHeaders(['Content-Length' => strlen($paramString)]); }; } else { $method = Request::METHOD_GET; $urlSuffix .= '?' . $paramString; $callback = null; } $this->debug(sprintf('Query %s', $paramString)); return $this->trySolrUrls($method, $urlSuffix, $callback); } /** * Check if an exception from a Solr request should be thrown rather than retried * * @param \Exception $ex Exception * * @return bool */ protected function isRethrowableSolrException($ex) { return $ex instanceof TimeoutException || $ex instanceof RequestErrorException; } /** * If an unexpected exception type was received, wrap it in a generic * BackendException to standardize upstream handling. *
*/ public function similar($id, ParamBag $params) { $handler = $this->map->getHandler(__FUNCTION__); $this->map->prepare(__FUNCTION__, $params); return $this->query($handler, $params); } /** * Execute a search. * * @param ParamBag $params Parameters * * @return string */ public function search(ParamBag $params) { $handler = $this->map->getHandler(__FUNCTION__); $this->map->prepare(__FUNCTION__, $params); return $this->query($handler, $params); } /** * Extract terms from a SOLR index. * * @param ParamBag $params Parameters * * @return string */ public function terms(ParamBag $params) { $handler = $this->map->getHandler(__FUNCTION__); $this->map->prepare(__FUNCTION__, $params); return $this->query($handler, $params); } /** * Write to the SOLR index. *
*/ public function search(AbstractQuery $query, $offset, $limit, ParamBag $params = null ) { $params = $params ?: new ParamBag(); $this->injectResponseWriter($params); if (($params->get('facet.sort') != null) && ($params->get('facet.sort')[0] == 'index')) { // "Browse the Collection Alphabetically". Get the real number of facets: // ex.: q=author_facet:(CA* OR Ca* OR ca*) if (preg_match('/[A-Za-z]{2,}\*\ OR/', $query->getAllTerms())) $params->set('json.facet', '{real_facet_count:"unique(author_facet)"}'); else // ex.: q=author_facet:(C* OR c*) $params->set('debugQuery', 'on'); } $params->set('rows', $limit); $params->set('start', $offset); $params->mergeWith($this->getQueryBuilder()->build($query)); $response = $this->connector->search($params); $collection = $this->createRecordCollection($response); $this->injectSourceIdentifier($collection); return $collection; } /** * Get Random records * * @param AbstractQuery $query Search query * @param int $limit Search limit * @param ParamBag $params Search backend parameters * * @return RecordCollectionInterface */ public function random( AbstractQuery $query, $limit, ParamBag $params = null ) { $params = $params ?: new ParamBag(); $this->injectResponseWriter($params);
* @param string $backend Search backend identifier * @param Query\AbstractQuery $query Search query * @param int $offset Search offset * @param int $limit Search limit * @param ParamBag $params Search backend parameters * * @return RecordCollectionInterface */ public function search($backend, Query\AbstractQuery $query, $offset = 0, $limit = 20, ParamBag $params = null ) { $params = $params ?: new ParamBag(); $context = __FUNCTION__; $args = compact('backend', 'query', 'offset', 'limit', 'params', 'context'); $backend = $this->resolve($backend, $args); $args['backend_instance'] = $backend; $this->triggerPre($backend, $args); try { $response = $backend->search($query, $offset, $limit, $params); } catch (BackendException $e) { $this->triggerError($e, $args); throw $e; } $this->triggerPost($response, $args); return $response; } /** * Retrieve a single record. * * @param string $backend Search backend identifier * @param string $id Record identifier * @param ParamBag $params Search backend parameters * * @return RecordCollectionInterface */ public function retrieve($backend, $id, ParamBag $params = null) { $params = $params ?: new ParamBag();
* @return void */ protected function performSearch() { $query = $this->getParams()->getQuery(); $limit = $this->getParams()->getLimit(); $offset = $this->getStartRecord() - 1; $params = $this->getParams()->getBackendParameters(); $searchService = $this->getSearchService(); $cursorMark = $this->getCursorMark(); if (null !== $cursorMark) { $params->set('cursorMark', '' === $cursorMark ? '*' : $cursorMark); // Override any default timeAllowed since it cannot be used with // cursorMark $params->set('timeAllowed', -1); } try { $collection = $searchService ->search($this->backendId, $query, $offset, $limit, $params); } catch (\VuFindSearch\Backend\Exception\BackendException $e) { // If the query caused a parser error, see if we can clean it up: if ($e->hasTag('VuFind\Search\ParserError') && $newQuery = $this->fixBadQuery($query) ) { // We need to get a fresh set of $params, since the previous one was // manipulated by the previous search() call. $params = $this->getParams()->getBackendParameters(); $collection = $searchService ->search($this->backendId, $newQuery, $offset, $limit, $params); } else { throw $e; } } $this->responseFacets = $collection->getFacets(); $this->resultTotal = ($collection->getFacetTotal() > 0) ? $collection->getFacetTotal() : $collection->getTotal(); // Process spelling suggestions
$this->helpers[$key] = $value; } /** * 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): $this->resultTotal = 0; $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 = $results->getParams(); $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('VuFind\Search\ParserError')) { // 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') ); return $results; }
public function resultsAction() { $view = $this->createViewModel(); // Handle saved search requests: $savedId = $this->params()->fromQuery('saved', false); if ($savedId !== false) { return $this->redirectToSavedSearch($savedId); } $runner = $this->serviceLocator->get(\VuFind\Search\SearchRunner::class); // Send both GET and POST variables to search class: $request = $this->getRequest()->getQuery()->toArray() + $this->getRequest()->getPost()->toArray(); $lastView = $this->getSearchMemory() ->retrieveLastSetting($this->searchClassId, 'view'); $view->results = $results = $runner->run( $request, $this->searchClassId, $this->getSearchSetupCallback(), $lastView ); $view->params = $results->getParams(); // If we received an EmptySet back, that indicates that the real search // failed due to some kind of syntax error, and we should display a // warning to the user; otherwise, we should proceed with normal post-search // processing. if ($results instanceof \VuFind\Search\EmptySet\Results) { $view->parseError = true; } else { // If a "jumpto" parameter is set, deal with that now: if ($jump = $this->processJumpTo($results)) { return $jump; } // Remember the current URL as the last search. $this->rememberSearch($results); // Add to search history:
*/ public function resultsAction() { // Special case -- redirect tag searches. $tag = $this->params()->fromQuery('tag'); if (!empty($tag)) { $query = $this->getRequest()->getQuery(); $query->set('lookfor', $tag); $query->set('type', 'tag'); } if ($this->params()->fromQuery('type') == 'tag') { // Because we're coming in from a search, we want to do a fuzzy // tag search, not an exact search like we would when linking to a // specific tag name. $query = $this->getRequest()->getQuery()->set('fuzzy', 'true'); return $this->forwardTo('Tag', 'Home'); } // Default case -- standard behavior. return parent::resultsAction(); } /** * Handle OpenSearch. * * @return \Zend\Http\Response */ public function opensearchAction() { switch ($this->params()->fromQuery('method')) { case 'describe': $config = $this->getConfig(); $xml = $this->getViewRenderer()->render( 'search/opensearch-describe.phtml', ['site' => $config->Site] ); break; default: $xml = $this->getViewRenderer()->render('search/opensearch-error.phtml'); break; }
*/ 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 Exception\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__, (is_object($eventName) ? get_class($eventName) : gettype($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(function ($test) { return ($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->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(get_class($controller)); $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__, (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
// 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();
Key | Value |
filter | Array ( [0] => topic_facet:"mitológia -- Kelet -- ókor" [1] => institution:"L_119" ) |
type | AllFields |
Key | Value |
__ZF | Array ( [_REQUEST_ACCESS_TIME] => 1711770904,6 [_VALID] => Array ( [Zend\Session\Validator\Id] => l7612ggab0kgtov3rel9clpaqv ) ) |
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 ) ) |
Key | Value |
REDIRECT_SCRIPT_URL | /Search/Results |
REDIRECT_SCRIPT_URI | https://opac.elte.hu/Search/Results |
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/Results |
SCRIPT_URI | https://opac.elte.hu/Search/Results |
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 | 54.224.52.210 |
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 | 39628 |
REDIRECT_URL | /Search/Results |
REDIRECT_QUERY_STRING | filter%5B%5D=topic_facet%3A%22mitol%C3%B3gia+--+Kelet+--+%C3%B3kor%22&filter%5B%5D=institution%3A%22L_119%22&type=AllFields |
GATEWAY_INTERFACE | CGI/1.1 |
SERVER_PROTOCOL | HTTP/1.1 |
REQUEST_METHOD | GET |
QUERY_STRING | filter%5B%5D=topic_facet%3A%22mitol%C3%B3gia+--+Kelet+--+%C3%B3kor%22&filter%5B%5D=institution%3A%22L_119%22&type=AllFields |
REQUEST_URI | /Search/Results?filter%5B%5D=topic_facet%3A%22mitol%C3%B3gia+--+Kelet+--+%C3%B3kor%22&filter%5B%5D=institution%3A%22L_119%22&type=AllFields |
SCRIPT_NAME | /index.php |
PHP_SELF | /index.php |
REQUEST_TIME_FLOAT | 1711770904,5647 |
REQUEST_TIME | 1711770904 |