LocalizerMiddleware   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 0
Metric Value
dl 0
loc 52
rs 10
c 0
b 0
f 0
wmc 7
lcom 1
cbo 2

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A handle() 0 10 3
A setLocale() 0 8 2
A getNonLocaleURL() 0 4 1
1
<?php
2
3
namespace VSamovarov\LaravelLocalizer\Middleware;
4
5
use VSamovarov\LaravelLocalizer\Localizer;
6
use Closure;
7
use Illuminate\Http\Request;
8
9
/**
10
 * Устанавливаем локаль для Веб
11
 */
12
class LocalizerMiddleware
13
{
14
    private $localizer;
15
    public function __construct(Localizer $localizer)
16
    {
17
        $this->localizer = $localizer;
18
    }
19
    /**
20
     * Handle an incoming request.
21
     *
22
     * @param  \Illuminate\Http\Request  $request
23
     * @param  \Closure  $next
24
     * @return mixed
25
     */
26
    public function handle($request, Closure $next)
27
    {
28
        $prefix = (string) $request->segment(1);
29
        if($this->localizer->isHideDefaultLocaleInURL() && $prefix === $this->localizer->getDefaultLocale()) {
30
          return redirect($this->getNonLocaleURL($request, $prefix));
31
        }
32
        $this->setLocale($prefix);
33
34
        return $next($request);
35
    }
36
37
    /**
38
     * Устанавливаем локаль
39
     *
40
     * @param string $prefix
41
     * @return void
42
     */
43
    private function setLocale(string $prefix): void
44
    {
45
        if ($this->localizer->isSupportedLocale($prefix)) {
46
            $this->localizer->setLocale($prefix);
47
        } else {
48
            $this->localizer->setLocale($this->localizer->getDefaultLocale());
49
        }
50
    }
51
    
52
    /**
53
     * Возвращает урл без префикса локали
54
     *
55
     * @param Request $request
56
     * @param string $prefix
57
     * @return string
58
     */
59
    private function getNonLocaleURL(Request $request, string $prefix): string
60
    {
61
      return preg_replace ("{^\/{$prefix}}", '', $request->getRequestUri());
62
    }
63
}
64