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

FluidTYPO3 / vhs / 9994196266

18 Jul 2024 03:18PM UTC coverage: 72.709% (-0.05%) from 72.762%
9994196266

push

github

NamelessCoder
[BUGFIX] Allow several request-dependent VHs to operate outside Extbase

Close: #1894

25 of 48 new or added lines in 9 files covered. (52.08%)

1 existing line in 1 file now uncovered.

5531 of 7607 relevant lines covered (72.71%)

13.49 hits per line

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

68.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\Extbase\Mvc\ExtbaseRequestParameters;
13
use TYPO3\CMS\Extbase\Mvc\RequestInterface;
14
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
15

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

35
    public static function resolveControllerNameFromRenderingContext(RenderingContextInterface $context): ?string
36
    {
37
        return self::resolveControllerNameFromRequest(self::resolveRequestFromRenderingContext($context));
6✔
38
    }
39

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

48
    public static function resolveControllerActionNameFromRenderingContext(RenderingContextInterface $context): ?string
49
    {
50
        return self::resolveControllerActionNameFromRequest(self::resolveRequestFromRenderingContext($context));
6✔
51
    }
52

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

61
    public static function resolveControllerExtensionNameFromRenderingContext(
62
        RenderingContextInterface $context
63
    ): ?string {
64
        return self::resolveControllerExtensionNameFromRequest(self::resolveRequestFromRenderingContext($context));
18✔
65
    }
66

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

75
    public static function resolveControllerObjectNameFromRenderingContext(RenderingContextInterface $context): ?string
76
    {
NEW
77
        return self::resolveControllerObjectNameFromRequest(self::resolveRequestFromRenderingContext($context));
×
78
    }
79

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

88
    public static function resolvePluginNameFromRenderingContext(RenderingContextInterface $context): ?string
89
    {
90
        return self::resolvePluginNameFromRequest(self::resolveRequestFromRenderingContext($context));
6✔
91
    }
92

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

101
    public static function resolveFormatFromRenderingContext(RenderingContextInterface $context): ?string
102
    {
NEW
103
        return self::resolveFormatFromRequest(self::resolveRequestFromRenderingContext($context));
×
104
    }
105

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

114
    /**
115
     * @param RequestInterface|ServerRequestInterface $request
116
     */
117
    private static function proxyCall($request, string $method): ?string
118
    {
119
        if ($request instanceof RequestInterface) {
18✔
120
            return $request->{$method}();
18✔
121
        }
NEW
122
        if (($parameters = $request->getAttribute('extbase')) instanceof ExtbaseRequestParameters) {
×
NEW
123
            return $parameters->{$method}();
×
124
        }
NEW
125
        return null;
×
126
    }
127
}
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