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

FluidTYPO3 / vhs / 30001290505

23 Jul 2026 10:57AM UTC coverage: 70.309% (-1.7%) from 72.022%
30001290505

push

github

NamelessCoder
[TER] 8.0.0

4819 of 6854 relevant lines covered (70.31%)

6.54 hits per line

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

79.49
/Classes/ViewHelpers/Page/LanguageViewHelper.php
1
<?php
2
namespace FluidTYPO3\Vhs\ViewHelpers\Page;
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\Core\ViewHelper\AbstractViewHelper;
12
use FluidTYPO3\Vhs\Service\PageService;
13
use FluidTYPO3\Vhs\Utility\ContextUtility;
14
use TYPO3\CMS\Core\Context\Context;
15
use TYPO3\CMS\Core\Context\LanguageAspect;
16
use TYPO3\CMS\Core\Utility\GeneralUtility;
17
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
18

19
/**
20
 * Returns the current language from languages depending on l18n settings.
21
 */
22
class LanguageViewHelper extends AbstractViewHelper
23
{
24
    /**
25
     * @var boolean
26
     */
27
    protected $escapeOutput = false;
28

29
    /**
30
     * @var PageService
31
     */
32
    protected static $pageService;
33

34
    public function initializeArguments(): void
35
    {
36
        $this->registerArgument('languages', 'mixed', 'The languages (either CSV, array or implementing Traversable)');
3✔
37
        $this->registerArgument('pageUid', 'integer', 'The page uid to check', false, 0);
3✔
38
        $this->registerArgument(
3✔
39
            'normalWhenNoLanguage',
3✔
40
            'boolean',
3✔
41
            'If TRUE, a missing page overlay should be ignored',
3✔
42
            false,
3✔
43
            false
3✔
44
        );
3✔
45
    }
46

47
    /**
48
     * @return mixed
49
     */
50
    public static function renderStatic(
51
        array $arguments,
52
        \Closure $renderChildrenClosure,
53
        RenderingContextInterface $renderingContext
54
    ) {
55
        if (ContextUtility::isBackend()) {
3✔
56
            return '';
×
57
        }
58

59
        /** @var array|string|\Traversable $languages */
60
        $languages = $arguments['languages'];
3✔
61
        if ($languages instanceof \Traversable) {
3✔
62
            $languages = iterator_to_array($languages);
×
63
        } elseif (is_string($languages)) {
3✔
64
            $languages = GeneralUtility::trimExplode(',', $languages, true);
×
65
        } else {
66
            $languages = (array) $languages;
3✔
67
        }
68

69
        /** @var int $pageUid */
70
        $pageUid = $arguments['pageUid'];
3✔
71
        $pageUid = (int) $pageUid;
3✔
72
        /** @var bool $normalWhenNoLanguage */
73
        $normalWhenNoLanguage = $arguments['normalWhenNoLanguage'];
3✔
74

75
        if (0 === $pageUid) {
3✔
76
            $pageUid = $GLOBALS['TSFE']->id;
3✔
77
        }
78

79
        $pageService = static::getPageService();
3✔
80
        if (class_exists(LanguageAspect::class)) {
3✔
81
            /** @var Context $context */
82
            $context = GeneralUtility::makeInstance(Context::class);
3✔
83
            /** @var LanguageAspect $languageAspect */
84
            $languageAspect = $context->getAspect('language');
3✔
85
            $currentLanguageUid = $languageAspect->getId();
3✔
86
        } else {
87
            $currentLanguageUid = $GLOBALS['TSFE']->sys_language_uid;
×
88
        }
89
        $languageUid = 0;
3✔
90
        if (!$pageService->hidePageForLanguageUid($pageUid, $currentLanguageUid, $normalWhenNoLanguage)) {
3✔
91
            $languageUid = $currentLanguageUid;
3✔
92
        } elseif (0 !== $currentLanguageUid) {
×
93
            if ($pageService->hidePageForLanguageUid($pageUid, 0, $normalWhenNoLanguage)) {
×
94
                return '';
×
95
            }
96
        }
97

98
        if (!empty($languages[$languageUid])) {
3✔
99
            return $languages[$languageUid];
×
100
        }
101

102
        return $languageUid;
3✔
103
    }
104

105
    protected static function getPageService(): PageService
106
    {
107
        /** @var PageService $pageService */
108
        $pageService = GeneralUtility::makeInstance(PageService::class);
3✔
109
        return static::$pageService = $pageService;
3✔
110
    }
111
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc