vendor/sulu/sulu/src/Sulu/Component/Webspace/Analyzer/RequestAnalyzer.php line 44
<?php/** This file is part of Sulu.** (c) Sulu GmbH** This source file is subject to the MIT license that is bundled* with this source code in the file LICENSE.*/namespace Sulu\Component\Webspace\Analyzer;use Sulu\Component\Webspace\Analyzer\Attributes\RequestAttributes;use Sulu\Component\Webspace\Analyzer\Attributes\RequestProcessorInterface;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\RequestStack;/*** Default request analyzer will be used for sulu-admin and extended for sulu-website.*/class RequestAnalyzer implements RequestAnalyzerInterface{public const SULU_ATTRIBUTE = '_sulu';/*** @var RequestProcessorInterface[]*/private $requestProcessors;/*** @var RequestStack*/private $requestStack;public function __construct(RequestStack $requestStack,array $requestProcessors) {$this->requestStack = $requestStack;$this->requestProcessors = $requestProcessors;}public function analyze(Request $request){if ($request->attributes->has(static::SULU_ATTRIBUTE)) {return;}$attributes = new RequestAttributes(['scheme' => $request->getScheme(), 'requestUri' => $request->getRequestUri()]);foreach ($this->requestProcessors as $requestProcessor) {$attributes = $attributes->merge($requestProcessor->process($request, $attributes));}$request->attributes->set(static::SULU_ATTRIBUTE, $attributes);}public function validate(Request $request){$attributes = $request->attributes->get(static::SULU_ATTRIBUTE);foreach ($this->requestProcessors as $provider) {$provider->validate($attributes);}}public function getAttribute($name, $default = null){$requestAttributes = $this->getAttributes();if (!$requestAttributes) {return $default;}return $requestAttributes->getAttribute($name, $default);}private function getAttributes(){$request = $this->requestStack->getCurrentRequest();if (null === $request) {return null;}if (!$request->attributes->has(static::SULU_ATTRIBUTE)) {return null;}return $request->attributes->get(static::SULU_ATTRIBUTE);}private function setAttributes(RequestAttributes $attributes){$request = $this->requestStack->getCurrentRequest();$request->attributes->set(static::SULU_ATTRIBUTE, $attributes);}public function getMatchType(){return $this->getAttribute('matchType');}public function getDateTime(){return $this->getAttribute('dateTime');}public function getWebspace(){return $this->getAttribute('webspace');}public function getPortal(){return $this->getAttribute('portal');}public function getSegment(){return $this->getAttribute('segment');}public function changeSegment(string $segmentKey){$segment = $this->getWebspace()->getSegment($segmentKey);$requestAttributes = (new RequestAttributes(['segment' => $segment]))->merge($this->getAttributes());$this->setAttributes($requestAttributes);}public function getCurrentLocalization(){return $this->getAttribute('localization');}public function getPortalUrl(){return $this->getAttribute('portalUrl');}public function getRedirect(){return $this->getAttribute('redirect');}public function getResourceLocator(){return $this->getAttribute('resourceLocator', false);}public function getResourceLocatorPrefix(){return $this->getAttribute('resourceLocatorPrefix');}public function getPortalInformation(){return $this->getAttribute('portalInformation');}}