Passed
Push — master ( 12ed59...661264 )
by Julien
05:22
created

ModuleRoute   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 84
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

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

2 Methods

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