Locale   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 47
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 94.44%

Importance

Changes 0
Metric Value
wmc 6
lcom 1
cbo 4
dl 0
loc 47
ccs 17
cts 18
cp 0.9444
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
B processRequest() 0 27 5
1
<?php
2
3
namespace BrainExe\Core\Middleware;
4
5
use BrainExe\Core\Annotations\Middleware;
6
use BrainExe\Core\Application\Locale as LocaleModel;
7
use Symfony\Component\HttpFoundation\Request;
8
use Symfony\Component\Routing\Route;
9
10
/**
11
 * @Middleware("Middleware.Locale")
12
 */
13
class Locale extends AbstractMiddleware
14
{
15
16
    /**
17
     * @var LocaleModel
18
     */
19
    private $locale;
20
21
    /**
22
     * @param LocaleModel $locale
23
     */
24 4
    public function __construct(LocaleModel $locale)
25
    {
26 4
        $this->locale = $locale;
27 4
    }
28
29
    /**
30
     * {@inheritdoc}
31
     */
32 3
    public function processRequest(Request $request, Route $route)
33
    {
34 3
        if ($request->attributes->has('locale')) {
35
            return;
36
        }
37
38 3
        $session = $request->getSession();
39
40 3
        if ($request->query->has('locale')) {
41 2
            $availableLocales = $this->locale->getLocales();
42
43 2
            $locale = $request->query->get('locale');
44 2
            if (!in_array($locale, $availableLocales, true)) {
45
                // invalid locale -> use first defined locale as fallback
46 1
                $locale = $availableLocales[0];
47
            }
48
49 2
            $session->set('locale', $locale);
50
        } else {
51 1
            $locale = $session->get('locale');
52
        }
53
54 3
        if ($locale) {
55 2
            $this->locale->setLocale($locale);
56 2
            $request->attributes->set('locale', $locale);
57
        }
58 3
    }
59
}
60