Test Failed
Push — master ( 7bbbf4...34ff55 )
by Julien
04:57
created

ModuleRoute   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 85
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 3
Bugs 0 Features 1
Metric Value
eloc 54
c 3
b 0
f 1
dl 0
loc 85
ccs 53
cts 53
cp 1
rs 10
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A initialize() 0 64 3
1
<?php
2
3
/**
4
 * This file is part of the Zemit Framework.
5
 *
6
 * (c) Zemit Team <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE.txt
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Zemit\Mvc\Router;
13
14
use Phalcon\Mvc\Router\Group as RouterGroup;
15
16
class ModuleRoute extends RouterGroup
17
{
18
    public array $locale;
19
    public bool $params;
20
    
21
    /**
22
     * ModuleRoute constructor.
23
     * The module routing is segmented in order to give more control over
24
     * the route for specific modules
25
     *
26
     * @param mixed $paths
27
     * @param array $locale
28
     * @param bool $params
29
     */
30 14
    public function __construct($paths = null, array $locale = [], bool $params = true)
31
    {
32 14
        $this->params = $params;
33 14
        $this->locale = $locale;
34 14
        parent::__construct($paths);
35
    }
36
    
37 14
    public function initialize(): void
38
    {
39 14
        $path = $this->getPaths();
40 14
        $module = $path['module'];
41 14
        $routePrefix = '/' . $module;
42 14
        $namePrefix = $module;
43
        
44 14
        $this->add($routePrefix, [
45 14
        ])->setName($namePrefix);
46
        
47 14
        $this->add($routePrefix . '/:controller', [
48 14
            'controller' => 1,
49 14
        ])->setName($namePrefix . '-controller');
50
        
51 14
        $this->add($routePrefix . '/:controller/:action/:params', [
52 14
            'controller' => 1,
53 14
            'action' => 2,
54 14
            'params' => 3,
55 14
        ])->setName($namePrefix . '-controller-action');
56
        
57 14
        if (!empty($this->locale)) {
58 14
            $localeRegex = '{locale:(' . implode('|', $this->locale) . ')}';
59
            
60 14
            $routePrefix = '/' . $localeRegex . '/' . $module;
61 14
            $namePrefix = 'locale-' . $module;
62
            
63 14
            $this->add($routePrefix, [
64 14
                'locale' => 1,
65 14
            ])->setName($namePrefix);
66
            
67 14
            $this->add($routePrefix . '/:controller', [
68 14
                'locale' => 1,
69 14
                'controller' => 2,
70 14
            ])->setName($namePrefix . '-controller');
71
            
72 14
            $this->add($routePrefix . '/:controller/:action/:params', [
73 14
                'locale' => 1,
74 14
                'controller' => 2,
75 14
                'action' => 3,
76 14
                'params' => 4,
77 14
            ])->setName($namePrefix . '-controller-action');
78
        }
79
        
80 14
        foreach ($this->locale as $locale) {
81 14
            $localeRegex = $locale;
82
            
83 14
            $routePrefix = '/' . $localeRegex . '/' . $module;
84 14
            $namePrefix = $locale . '-' . $module;
85
            
86 14
            $this->add($routePrefix, [
87 14
                'locale' => $locale,
88 14
            ])->setName($namePrefix);
89
            
90 14
            $this->add($routePrefix . '/:controller', [
91 14
                'locale' => $locale,
92 14
                'controller' => 1,
93 14
            ])->setName($namePrefix . '-controller');
94
            
95 14
            $this->add($routePrefix . '/:controller/:action/:params', [
96 14
                'locale' => $locale,
97 14
                'controller' => 1,
98 14
                'action' => 2,
99 14
                'params' => 3,
100 14
            ])->setName($namePrefix . '-controller-action');
101
        }
102
    }
103
}
104