Test Failed
Pull Request — master (#122)
by
unknown
30:03 queued 23:05
created

HiddenSegmentDetector::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 1
dl 0
loc 4
ccs 0
cts 2
cp 0
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Thinktomorrow\Locale\Detectors;
4
5
use Illuminate\Http\Request;
6
use Thinktomorrow\Locale\Scope;
7
use Thinktomorrow\Locale\Values\Config;
8
use Thinktomorrow\Locale\Values\Locale;
9
10
class HiddenSegmentDetector implements Detector
11
{
12
    /**
13
     * @var Request
14
     */
15
    private $request;
16
17
    public function __construct(Request $request)
0 ignored issues
show
Bug introduced by
You have injected the Request via parameter $request. This is generally not recommended as there might be multiple instances during a request cycle (f.e. when using sub-requests). Instead, it is recommended to inject the RequestStack and retrieve the current request each time you need it via getCurrentRequest().
Loading history...
18
    {
19
        $this->request = $request;
20
    }
21
22
    public function get(Scope $scope, Config $config): ?Locale
23
    {
24
        // If a locale segment is found, it means locale is not hidden so we won't bother going further.
25
        if ($this->segment($scope)) {
26
            return null;
27
        }
28
29
        // At this point if no locale segment is given and if in config the hidden_locale is set,
30
        // we assume the locale is hidden.
31
        // TODO account for domain specific hidden (default) locales
32
        return $scope->defaultLocale();
33
    }
34
35
    public function segment(Scope $scope): ?Locale
36
    {
37
        $segment = $this->request->segment(1);
38
39
        return $scope->findLocale($segment);
40
    }
41
}
42