UrlTransformer   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 53
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 19
c 1
b 0
f 0
dl 0
loc 53
rs 10
ccs 19
cts 19
cp 1
wmc 7

3 Methods

Rating   Name   Duplication   Size   Complexity  
A from() 0 4 1
A __construct() 0 3 2
A transform() 0 22 4
1
<?php
2
3
namespace Nip\Mvc\Sections\UrlTransformer;
4
5
use Nip\Http\Request;
6
7
/**
8
 * Class UrlTransformer
9
 * @package Nip\Mvc\Sections\UrlTransformer
10
 */
11
class UrlTransformer
12
{
13
    /**
14
     * @var Request
15
     */
16
    protected $request = null;
17
18
    /**
19
     * @param Request $request
20
     * @return UrlTransformer
21
     */
22 5
    public static function from(Request $request = null)
23
    {
24 5
        $transformer = new self($request);
25 5
        return $transformer;
26
    }
27
28
    /**
29
     * @param $url
30
     * @param $section
31
     * @return string
32
     */
33 5
    public function transform($url, $section)
34
    {
35 5
        $http = $this->request->getHttp();
36 5
        $httpSubdomain = $http->getSubdomain();
37 5
        $rootDomain = $http->getRootDomain();
38
39 5
        $replace = '://' . $section->getSubdomain() . '.' . $rootDomain;
40
        $transform = [
41 5
            '://' . $httpSubdomain . '.' . $rootDomain => $replace,
42 5
            '://' . $rootDomain => $replace,
43
        ];
44
45 5
        foreach ($transform as $search => $replace) {
46 5
            $pos = strpos($url, $search);
47 5
            if ($pos === false || $pos > 5) {
48 5
                continue;
49
            }
50 5
            $url = substr_replace($url, '#####', $pos, strlen($search));
51 5
            $url = str_replace('#####', $replace, $url);
52
        }
53
54 5
        return $url;
55
    }
56
57
    /**
58
     * UrlTransformer constructor.
59
     * @param Request|null $request
60
     */
61 5
    protected function __construct(Request $request = null)
62
    {
63 5
        $this->request = $request ? $request : request();
64 5
    }
65
}
66