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

FluidTYPO3 / vhs / 13014187021

28 Jan 2025 03:46PM UTC coverage: 71.952% (+0.08%) from 71.877%
13014187021

push

github

NamelessCoder
[TASK] Make tests run on v13

5636 of 7833 relevant lines covered (71.95%)

17.17 hits per line

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

88.89
/Classes/ViewHelpers/Condition/Page/IsLanguageViewHelper.php
1
<?php
2
namespace FluidTYPO3\Vhs\ViewHelpers\Condition\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\Proxy\DoctrineQueryProxy;
12
use TYPO3\CMS\Core\Context\Context;
13
use TYPO3\CMS\Core\Context\LanguageAspect;
14
use TYPO3\CMS\Core\Database\Connection;
15
use TYPO3\CMS\Core\Database\ConnectionPool;
16
use TYPO3\CMS\Core\Utility\GeneralUtility;
17
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
18
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractConditionViewHelper;
19

20
/**
21
 * ### Condition: Is current language
22
 *
23
 * A condition ViewHelper which renders the `then` child if
24
 * current language matches the provided language uid or language
25
 * title. When using language titles like 'de' it is required to
26
 * provide a default title to distinguish between the standard
27
 * and a non existing language.
28
 */
29
class IsLanguageViewHelper extends AbstractConditionViewHelper
30
{
31
    public function initializeArguments(): void
32
    {
33
        parent::initializeArguments();
6✔
34
        $this->registerArgument('language', 'string', 'language to check', true);
6✔
35
        $this->registerArgument('defaultTitle', 'string', 'title of the default language', false, 'en');
6✔
36
    }
37

38
    public static function verdict(array $arguments, RenderingContextInterface $renderingContext): bool
39
    {
40
        /** @var string $language */
41
        $language = $arguments['language'];
12✔
42
        /** @var string $defaultTitle */
43
        $defaultTitle = $arguments['defaultTitle'];
12✔
44

45
        /** @var Context $context */
46
        $context = GeneralUtility::makeInstance(Context::class);
12✔
47
        /** @var LanguageAspect $languageAspect */
48
        $languageAspect = $context->getAspect('language');
12✔
49
        $currentLanguageUid = $languageAspect->getId();
12✔
50

51
        if (is_numeric($language)) {
12✔
52
            $languageUid = intval($language);
6✔
53
        } else {
54
            /** @var ConnectionPool $connectionPool */
55
            $connectionPool = GeneralUtility::makeInstance(ConnectionPool::class);
6✔
56
            $queryBuilder = $connectionPool->getQueryBuilderForTable('sys_language');
6✔
57

58
            $queryBuilder->createNamedParameter($language, Connection::PARAM_STR, ':title');
6✔
59

60
            $queryBuilder
6✔
61
                ->select('uid')
6✔
62
                ->from('sys_language')
6✔
63
                ->where(
6✔
64
                    $queryBuilder->expr()->eq('title', ':title')
6✔
65
                );
6✔
66
            $result = DoctrineQueryProxy::executeQueryOnQueryBuilder($queryBuilder);
6✔
67
            $row = DoctrineQueryProxy::fetchAssociative($result);
6✔
68

69
            if (is_array($row)) {
6✔
70
                /** @var int $languageUid */
71
                $languageUid = $row['uid'];
6✔
72
            } else {
73
                if ((string) $language === $defaultTitle) {
×
74
                    $languageUid = $currentLanguageUid;
×
75
                } else {
76
                    $languageUid = -1;
×
77
                }
78
            }
79
        }
80
        return $languageUid === $currentLanguageUid;
12✔
81
    }
82
}
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