Completed
Push — master ( 0341ae...ad8ed5 )
by Matze
05:23
created

Locale::processRequest()   B

Complexity

Conditions 4
Paths 6

Size

Total Lines 23
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 12
CRAP Score 4.0072

Importance

Changes 0
Metric Value
dl 0
loc 23
ccs 12
cts 13
cp 0.9231
rs 8.7972
c 0
b 0
f 0
cc 4
eloc 13
nc 6
nop 2
crap 4.0072
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 3
    public function __construct(LocaleModel $locale)
25
    {
26 3
        $this->locale = $locale;
27 3
    }
28
29
    /**
30
     * {@inheritdoc}
31
     */
32 2
    public function processRequest(Request $request, Route $route)
33
    {
34 2
        $session = $request->getSession();
35
36 2
        if ($request->query->has('locale')) {
37 2
            $availableLocales = $this->locale->getLocales();
38
39 2
            $locale = $request->query->get('locale');
40 2
            if (!in_array($locale, $availableLocales, true)) {
41
                // invalid locale -> use first defined locale as fallback
42 1
                $locale = $availableLocales[0];
43
            }
44
45 2
            $session->set('locale', $locale);
46
        } else {
47
            $locale = $session->get('locale');
48
        }
49
50 2
        if ($locale) {
51 2
            $this->locale->setLocale($locale);
52 2
            $request->attributes->set('locale', $locale);
53
        }
54 2
    }
55
}
56