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

FluidTYPO3 / vhs / 10213662489

02 Aug 2024 09:55AM UTC coverage: 72.717% (-0.05%) from 72.762%
10213662489

push

github

NamelessCoder
[TER] 7.0.4

5533 of 7609 relevant lines covered (72.72%)

13.49 hits per line

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

91.07
/Classes/View/UncacheTemplateView.php
1
<?php
2
namespace FluidTYPO3\Vhs\View;
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 FluidTYPO3\Vhs\Utility\RequestResolver;
12
use TYPO3\CMS\Core\Utility\GeneralUtility;
13
use TYPO3\CMS\Core\Utility\VersionNumberUtility;
14
use TYPO3\CMS\Extbase\Mvc\Controller\ControllerContext;
15
use TYPO3\CMS\Extbase\Mvc\ExtbaseRequestParameters;
16
use TYPO3\CMS\Extbase\Mvc\Request;
17
use TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder;
18
use TYPO3\CMS\Fluid\Compatibility\TemplateParserBuilder;
19
use TYPO3\CMS\Fluid\Core\Rendering\RenderingContext;
20
use TYPO3\CMS\Fluid\Core\Rendering\RenderingContextFactory;
21
use TYPO3\CMS\Fluid\View\TemplateView;
22
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
23

24
class UncacheTemplateView extends TemplateView
25
{
26
    public function callUserFunction(string $postUserFunc, array $conf): string
27
    {
28
        $partial = $conf['partial'] ?? null;
12✔
29
        $section = $conf['section'] ?? null;
12✔
30
        $arguments = $conf['arguments'] ?? [];
12✔
31
        $parameters = $conf['controllerContext'] ?? null;
12✔
32
        $extensionName = $parameters instanceof ExtbaseRequestParameters
12✔
33
            ? $parameters->getControllerExtensionName()
×
34
            : $parameters['extensionName'] ?? null;
12✔
35

36
        if (empty($partial)) {
12✔
37
            return '';
6✔
38
        }
39

40
        if (class_exists(RenderingContextFactory::class)) {
6✔
41
            $renderingContext = $this->createRenderingContextWithRenderingContextFactory();
5✔
42
            if (method_exists($renderingContext, 'setRequest')) {
5✔
43
                $request = $parameters instanceof ExtbaseRequestParameters
5✔
44
                    ? $GLOBALS['TYPO3_REQUEST']->withAttribute('extbase', $parameters)
×
45
                    : $GLOBALS['TYPO3_REQUEST'];
5✔
46
                $renderingContext->setRequest(
5✔
47
                    // TYPO3 v11.x needs the ServerRequest wrapped in an Extbase Request.
48
                    version_compare(VersionNumberUtility::getCurrentTypo3Version(), '12.0', '<')
5✔
49
                        ? new Request($request)
2✔
50
                        : $request
5✔
51
                );
5✔
52
            }
53
        } else {
54
            /** @var ControllerContext $controllerContext */
55
            $controllerContext = GeneralUtility::makeInstance(ControllerContext::class);
1✔
56
            /** @var Request $request */
57
            $request = GeneralUtility::makeInstance(Request::class);
1✔
58
            $controllerContext->setRequest($request);
1✔
59

60
            /** @var UriBuilder $uriBuilder */
61
            $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
1✔
62
            $uriBuilder->setRequest($request);
1✔
63
            $controllerContext->setUriBuilder($uriBuilder);
1✔
64

65
            if ($parameters) {
1✔
66
                if (method_exists($request, 'setControllerActionName')) {
1✔
67
                    $request->setControllerActionName($parameters['actionName']);
1✔
68
                }
69

70
                if (method_exists($request, 'setControllerExtensionName')) {
1✔
71
                    $request->setControllerExtensionName($parameters['extensionName']);
1✔
72
                }
73

74
                if (method_exists($request, 'setControllerName')) {
1✔
75
                    $request->setControllerName($parameters['controllerName']);
1✔
76
                }
77

78
                if (method_exists($request, 'setControllerObjectName')) {
1✔
79
                    $request->setControllerObjectName($parameters['controllerObjectName']);
1✔
80
                }
81

82
                if (method_exists($request, 'setPluginName')) {
1✔
83
                    $request->setPluginName($parameters['pluginName']);
1✔
84
                }
85

86
                if (method_exists($request, 'setFormat')) {
1✔
87
                    $request->setFormat($parameters['format']);
1✔
88
                }
89
            }
90

91
            /** @var RenderingContext $renderingContext */
92
            $renderingContext = GeneralUtility::makeInstance(RenderingContext::class);
1✔
93
        }
94

95
        $this->prepareContextsForUncachedRendering($renderingContext);
6✔
96
        if (!empty($conf['partialRootPaths'])) {
6✔
97
            $renderingContext->getTemplatePaths()->setPartialRootPaths($conf['partialRootPaths']);
6✔
98
        } elseif ($extensionName) {
×
99
            $extensionKey = GeneralUtility::camelCaseToLowerCaseUnderscored($extensionName);
×
100
            $renderingContext->getTemplatePaths()->fillDefaultsByPackageName($extensionKey);
×
101
        }
102
        return $this->renderPartialUncached($renderingContext, $partial, $section, $arguments);
6✔
103
    }
104

105
    protected function prepareContextsForUncachedRendering(RenderingContextInterface $renderingContext): void
106
    {
107
        $this->setRenderingContext($renderingContext);
12✔
108
    }
109

110
    protected function renderPartialUncached(
111
        RenderingContextInterface $renderingContext,
112
        string $partial,
113
        ?string $section = null,
114
        array $arguments = []
115
    ): string {
116
        $this->renderingStack[] = [
6✔
117
            'type' => static::RENDERING_TEMPLATE,
6✔
118
            'parsedTemplate' => null,
6✔
119
            'renderingContext' => $renderingContext,
6✔
120
        ];
6✔
121
        $rendered = $this->renderPartial($partial, $section, $arguments);
6✔
122
        array_pop($this->renderingStack);
6✔
123
        return $rendered;
6✔
124
    }
125

126
    /**
127
     * @codeCoverageIgnore
128
     */
129
    protected function createRenderingContextWithRenderingContextFactory(): RenderingContextInterface
130
    {
131
        /** @var RenderingContextFactory $renderingContextFactory */
132
        $renderingContextFactory = GeneralUtility::makeInstance(RenderingContextFactory::class);
133
        return $renderingContextFactory->create();
134
    }
135
}
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