• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

FluidTYPO3 / vhs / 28228819034

26 Jun 2026 09:13AM UTC coverage: 69.98% (-1.3%) from 71.316%
28228819034

push

github

NamelessCoder
[REMOVAL] Drop support for TYPO3v10 and v11

4816 of 6882 relevant lines covered (69.98%)

8.17 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

63.64
/Classes/Utility/RequestResolver.php
1
<?php
2
namespace FluidTYPO3\Vhs\Utility;
3

4
/*
5
 * This file is part of the FluidTYPO3/Vhs project under GPLv2 or later.
6
 *
7
 * For the full copyright and license information, please read the
8
 * LICENSE.md file that was distributed with this source code.
9
 */
10

11
use Psr\Http\Message\ServerRequestInterface;
12
use TYPO3\CMS\Core\Context\Context;
13
use TYPO3\CMS\Core\Site\Entity\SiteLanguage;
14
use TYPO3\CMS\Core\Utility\GeneralUtility;
15
use TYPO3\CMS\Extbase\Mvc\ExtbaseRequestParameters;
16
use TYPO3\CMS\Extbase\Mvc\RequestInterface;
17
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
18

19
class RequestResolver
20
{
21
    /**
22
     * @return RequestInterface|ServerRequestInterface
23
     */
24
    public static function resolveRequestFromRenderingContext(RenderingContextInterface $renderingContext)
25
    {
26
        $request = null;
16✔
27
        if (method_exists($renderingContext, 'getRequest')) {
16✔
28
            $request = $renderingContext->getRequest();
16✔
29
        } elseif (method_exists($renderingContext, 'getControllerContext')) {
×
30
            $request = $renderingContext->getControllerContext()->getRequest();
×
31
        }
32
        if (!$request) {
16✔
33
            throw new \UnexpectedValueException('Unable to resolve request from RenderingContext', 1673191812);
×
34
        }
35
        return $request;
16✔
36
    }
37

38
    public static function resolveControllerNameFromRenderingContext(RenderingContextInterface $context): ?string
39
    {
40
        return self::resolveControllerNameFromRequest(self::resolveRequestFromRenderingContext($context));
4✔
41
    }
42

43
    /**
44
     * @param RequestInterface|ServerRequestInterface $request
45
     */
46
    public static function resolveControllerNameFromRequest($request): ?string
47
    {
48
        return self::proxyCall($request, 'getControllerName');
4✔
49
    }
50

51
    public static function resolveControllerActionNameFromRenderingContext(RenderingContextInterface $context): ?string
52
    {
53
        return self::resolveControllerActionNameFromRequest(self::resolveRequestFromRenderingContext($context));
4✔
54
    }
55

56
    /**
57
     * @param RequestInterface|ServerRequestInterface $request
58
     */
59
    public static function resolveControllerActionNameFromRequest($request): ?string
60
    {
61
        return self::proxyCall($request, 'getControllerActionName');
4✔
62
    }
63

64
    public static function resolveControllerExtensionNameFromRenderingContext(
65
        RenderingContextInterface $context
66
    ): ?string {
67
        return self::resolveControllerExtensionNameFromRequest(self::resolveRequestFromRenderingContext($context));
8✔
68
    }
69

70
    /**
71
     * @param RequestInterface|ServerRequestInterface $request
72
     */
73
    public static function resolveControllerExtensionNameFromRequest($request): ?string
74
    {
75
        return self::proxyCall($request, 'getControllerExtensionName');
8✔
76
    }
77

78
    public static function resolveControllerObjectNameFromRenderingContext(RenderingContextInterface $context): ?string
79
    {
80
        return self::resolveControllerObjectNameFromRequest(self::resolveRequestFromRenderingContext($context));
×
81
    }
82

83
    /**
84
     * @param RequestInterface|ServerRequestInterface $request
85
     */
86
    public static function resolveControllerObjectNameFromRequest($request): ?string
87
    {
88
        return self::proxyCall($request, 'getControllerObjectName');
×
89
    }
90

91
    public static function resolvePluginNameFromRenderingContext(RenderingContextInterface $context): ?string
92
    {
93
        return self::resolvePluginNameFromRequest(self::resolveRequestFromRenderingContext($context));
4✔
94
    }
95

96
    /**
97
     * @param RequestInterface|ServerRequestInterface $request
98
     */
99
    public static function resolvePluginNameFromRequest($request): ?string
100
    {
101
        return self::proxyCall($request, 'getPluginName');
4✔
102
    }
103

104
    public static function resolveFormatFromRenderingContext(RenderingContextInterface $context): ?string
105
    {
106
        return self::resolveFormatFromRequest(self::resolveRequestFromRenderingContext($context));
×
107
    }
108

109
    /**
110
     * @param RequestInterface|ServerRequestInterface $request
111
     */
112
    public static function resolveFormatFromRequest($request): ?string
113
    {
114
        return self::proxyCall($request, 'getFormat');
×
115
    }
116

117
    public static function getRequest(): ServerRequestInterface
118
    {
119
        /** @var ServerRequestInterface|null $request */
120
        $request = $GLOBALS['TYPO3_REQUEST'] ?? null;
51✔
121
        if (!$request) {
51✔
122
            throw new \UnexpectedValueException('Request cannot be resolved', 1777024778);
×
123
        }
124
        return $request;
51✔
125
    }
126

127
    public static function getTypoScriptFrontendController(): ?object
128
    {
129
        $controller = self::getRequest()->getAttribute('frontend.controller');
51✔
130
        if (is_object($controller)) {
51✔
131
            return $controller;
×
132
        }
133
        return is_object($GLOBALS['TSFE'] ?? null) ? $GLOBALS['TSFE'] : null;
51✔
134
    }
135

136
    public static function getLanguage(): SiteLanguage
137
    {
138
        /** @var SiteLanguage $siteLanguage */
139
        $siteLanguage = self::getRequest()->getAttribute('language');
×
140
        return $siteLanguage;
×
141
    }
142

143
    public static function isPreview(): bool
144
    {
145
        /** @var Context $context */
146
        $context = GeneralUtility::makeInstance(Context::class);
20✔
147
        return (bool) $context->hasAspect('frontend.preview')
20✔
148
            && $context->getPropertyFromAspect('frontend.preview', 'isPreview');
20✔
149
    }
150

151
    public static function getWorkspaceId(): ?int
152
    {
153
        /** @var Context $context */
154
        $context = GeneralUtility::makeInstance(Context::class);
8✔
155
        $workspaceId = $context->getPropertyFromAspect('workspace', 'id', 0) ?: null;
8✔
156
        if (!is_numeric($workspaceId)) {
8✔
157
            return null;
8✔
158
        }
159
        $workspaceId = (int) $workspaceId;
×
160
        return $workspaceId > 0 ? $workspaceId : null;
×
161
    }
162

163
    /**
164
     * @param RequestInterface|ServerRequestInterface $request
165
     */
166
    private static function proxyCall($request, string $method): ?string
167
    {
168
        if ($request instanceof RequestInterface) {
8✔
169
            return $request->{$method}();
8✔
170
        }
171
        if (($parameters = $request->getAttribute('extbase')) instanceof ExtbaseRequestParameters) {
×
172
            return $parameters->{$method}();
×
173
        }
174
        return null;
×
175
    }
176
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc