|
22 | 22 |
|
23 | 23 | class StorePathInfoValidator
|
24 | 24 | {
|
| 25 | + private int $stack = 0; |
| 26 | + |
25 | 27 | public function __construct(
|
26 | 28 | private Config $config,
|
27 | 29 | private StoreRepositoryInterface $storeRepository
|
28 | 30 | ) {}
|
29 | 31 |
|
30 | 32 | public function beforeGetValidStoreCode(Subject $subject, Http $request, string $pathInfo = ''): array
|
31 | 33 | {
|
32 |
| - if ($this->config->isBaseUrlResolverEnabled()) { |
33 |
| - $originalPathInfo = $pathInfo; |
34 |
| - $uri = strtok($request->getUriString(), '?') . '/'; |
35 |
| - if ($uri !== false) { |
36 |
| - if ($pathInfo === '') { |
37 |
| - $pathInfo = parse_url($uri, PHP_URL_PATH); |
38 |
| - if ($pathInfo === false) { |
39 |
| - return [$request, $originalPathInfo]; |
40 |
| - } |
41 |
| - $pathInfo = strtok($pathInfo, '/'); |
| 34 | + if (++$this->stack === 1 && $this->config->isBaseUrlResolverEnabled()) { |
| 35 | + $storeCode = $this->resolveStoreCode($pathInfo); |
| 36 | + $pathInfo = $storeCode === '' ? $pathInfo : $storeCode; |
| 37 | + } |
| 38 | + $this->stack--; |
| 39 | + |
| 40 | + return [$request, $pathInfo]; |
| 41 | + } |
| 42 | + |
| 43 | + private function resolveStoreCode(string $pathInfo): string |
| 44 | + { |
| 45 | + $uri = strtok($request->getUriString(), '?') . '/'; |
| 46 | + if ($uri !== false) { |
| 47 | + if ($pathInfo === '') { |
| 48 | + $pathInfo = parse_url($uri, PHP_URL_PATH); |
| 49 | + if ($pathInfo === false) { |
| 50 | + return ''; |
42 | 51 | }
|
43 |
| - $pathInfo = $pathInfo === false ? $this->resolveByWebUrl($uri) : $this->resolveByLinkUrl($uri); |
44 |
| - $pathInfo = $pathInfo === '' ? $originalPathInfo : $pathInfo; |
| 52 | + $pathInfo = strtok($pathInfo, '/'); |
45 | 53 | }
|
| 54 | + $pathInfo = $pathInfo === false ? $this->resolveByWebUrl($uri) : $this->resolveByLinkUrl($uri); |
46 | 55 | }
|
47 | 56 |
|
48 |
| - return [$request, $pathInfo]; |
| 57 | + return $pathInfo; |
49 | 58 | }
|
50 | 59 |
|
51 | 60 | private function resolveByLinkUrl(string $uri): string
|
|
0 commit comments