Passed
Push — master ( 4d2afb...37b1cc )
by Tim
02:49
created

FallbackNegotiation   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 24
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 12
dl 0
loc 24
rs 10
c 1
b 0
f 0
wmc 5

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A __invoke() 0 15 4
1
<?php
2
3
declare(strict_types=1);
4
5
namespace LD\LanguageDetection\Negotiation;
6
7
use LD\LanguageDetection\Event\NegotiateSiteLanguage;
8
use LD\LanguageDetection\Service\SiteConfigurationService;
9
use TYPO3\CMS\Core\Site\Entity\Site;
10
use TYPO3\CMS\Core\Site\Entity\SiteLanguage;
11
12
class FallbackNegotiation
13
{
14
    protected SiteConfigurationService $siteConfigurationService;
15
16
    public function __construct(SiteConfigurationService $siteConfigurationService)
17
    {
18
        $this->siteConfigurationService = $siteConfigurationService;
19
    }
20
21
    public function __invoke(NegotiateSiteLanguage $event): void
22
    {
23
        $site = $event->getSite();
24
        if (!($site instanceof Site)) {
25
            return;
26
        }
27
        $configuration = $this->siteConfigurationService->getConfiguration($site);
28
29
        $fallback = $configuration->getFallbackDetectionLanguage();
30
        foreach ($site->getAllLanguages() as $siteLanguage) {
31
            /** @var SiteLanguage $siteLanguage */
32
            if ($siteLanguage->getLanguageId() === $fallback) {
33
                $event->setSelectedLanguage($siteLanguage);
34
35
                return;
36
            }
37
        }
38
    }
39
}
40