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

FluidTYPO3 / vhs / 28026578140

23 Jun 2026 12:35PM UTC coverage: 71.202% (-0.2%) from 71.402%
28026578140

Pull #1977

github

web-flow
Merge b23e7e66c into 557bc4cc1
Pull Request #1977: [TASK] Clean up record/FAL ViewHelpers pattern

50 of 75 new or added lines in 4 files covered. (66.67%)

4903 of 6886 relevant lines covered (71.2%)

14.62 hits per line

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

60.0
/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;
25✔
27
        if (method_exists($renderingContext, 'getRequest')) {
25✔
28
            $request = $renderingContext->getRequest();
23✔
29
        } elseif (method_exists($renderingContext, 'getControllerContext')) {
2✔
30
            $request = $renderingContext->getControllerContext()->getRequest();
2✔
31
        }
32
        if (!$request) {
25✔
33
            throw new \UnexpectedValueException('Unable to resolve request from RenderingContext', 1673191812);
×
34
        }
35
        return $request;
25✔
36
    }
37

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

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

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

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

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

70
    /**
71
     * @param RequestInterface|ServerRequestInterface $request
72
     */
73
    public static function resolveControllerExtensionNameFromRequest($request): ?string
74
    {
75
        return self::proxyCall($request, 'getControllerExtensionName');
14✔
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));
7✔
94
    }
95

96
    /**
97
     * @param RequestInterface|ServerRequestInterface $request
98
     */
99
    public static function resolvePluginNameFromRequest($request): ?string
100
    {
101
        return self::proxyCall($request, 'getPluginName');
7✔
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 */
NEW
120
        $request = $GLOBALS['TYPO3_REQUEST'] ?? null;
×
NEW
121
        if (!$request) {
×
NEW
122
            throw new \UnexpectedValueException('Request cannot be resolved', 1777024778);
×
123
        }
NEW
124
        return $request;
×
125
    }
126

127
    public static function getLanguage(): SiteLanguage
128
    {
129
        /** @var SiteLanguage $siteLanguage */
NEW
130
        $siteLanguage = self::getRequest()->getAttribute('language');
×
NEW
131
        return $siteLanguage;
×
132
    }
133

134
    public static function isPreview(): bool
135
    {
136
        /** @var Context $context */
137
        $context = GeneralUtility::makeInstance(Context::class);
35✔
138
        return (bool) $context->hasAspect('frontend.preview')
35✔
139
            && $context->getPropertyFromAspect('frontend.preview', 'isPreview');
35✔
140
    }
141

142
    public static function getWorkspaceId(): ?int
143
    {
144
        /** @var Context $context */
145
        $context = GeneralUtility::makeInstance(Context::class);
14✔
146
        $workspaceId = $context->getPropertyFromAspect('workspace', 'id', 0) ?: null;
14✔
147
        if (!is_numeric($workspaceId)) {
14✔
148
            return null;
14✔
149
        }
NEW
150
        $workspaceId = (int) $workspaceId;
×
NEW
151
        return $workspaceId > 0 ? $workspaceId : null;
×
152
    }
153

154
    /**
155
     * @param RequestInterface|ServerRequestInterface $request
156
     */
157
    private static function proxyCall($request, string $method): ?string
158
    {
159
        if ($request instanceof RequestInterface) {
14✔
160
            return $request->{$method}();
14✔
161
        }
162
        if (($parameters = $request->getAttribute('extbase')) instanceof ExtbaseRequestParameters) {
×
163
            return $parameters->{$method}();
×
164
        }
165
        return null;
×
166
    }
167
}
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