Passed
Push — master ( bee924...8c1f9a )
by Salah
02:10
created

ServiceProvider::autoAppendMiddleware()   A

Complexity

Conditions 4
Paths 3

Size

Total Lines 16
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 4

Importance

Changes 5
Bugs 2 Features 1
Metric Value
c 5
b 2
f 1
dl 0
loc 16
ccs 9
cts 9
cp 1
rs 9.2
cc 4
eloc 8
nc 3
nop 0
crap 4
1
<?php
2
3
namespace Yemenifree\LaravelArabicNumbersMiddleware;
4
5
use Illuminate\Support\ServiceProvider as BaseServiceProvider;
6
use Yemenifree\LaravelArabicNumbersMiddleware\Middleware\TransformArabicToEasternNumbers;
7
use Yemenifree\LaravelArabicNumbersMiddleware\Middleware\TransformEasternToArabicNumbers;
8
9
class ServiceProvider extends BaseServiceProvider
10
{
11
    /**
12
     * All of the short-hand keys for middlewares.
13
     *
14
     * @var array
15
     */
16
    protected $middleware = [
17
        'arabic-to-eastern' => TransformArabicToEasternNumbers::class,
18
        'eastern-to-arabic' => TransformEasternToArabicNumbers::class,
19
    ];
20
21
    /**
22
     * list of group middleware to auto append middleware to them.
23
     *
24
     *      true => all groups
25
     *      false => none
26
     *      ['web'] => for web group only
27
     *
28
     * @var bool|array
29
     */
30
    protected $groupMiddleware = false;
31
32
    /**
33
     * auto append middleware.
34
     *
35
     * @var array
36
     */
37
    protected $auto_middleware;
38
39
    /**
40
     * Perform post-registration booting of services.
41
     *
42
     * @return void
43
     */
44 12
    public function boot()
45
    {
46 12
        $this->publishes([
47 12
            __DIR__.'/../config/arabic-numbers-middleware.php' => config_path('arabic-numbers-middleware.php'),
48 12
        ], 'config');
49
50 12
        $this->autoAppendMiddleware();
51 12
    }
52
53
    /**
54
     * auto append middleware to router.
55
     */
56 12
    protected function autoAppendMiddleware()
57
    {
58 12
        $this->groupMiddleware = $this->app['config']->get('arabic-numbers-middleware.auto_register_middleware', false);
59 12
        $this->auto_middleware = $this->app['config']->get('arabic-numbers-middleware.auto_middleware', false);
60
61 12
        if ($this->groupMiddleware === false || $this->auto_middleware === false) {
62 4
            return;
63
        }
64
65 12
        if ($this->groupMiddleware === true) { // Register middleware as global Middleware
66 12
            $this->app->make('Illuminate\Contracts\Http\Kernel')->pushMiddleware($this->auto_middleware);
67
        }
68
69
        // Register Middleware for route group
70 12
        $this->pushMiddlewareToGroups($this->auto_middleware);
71 12
    }
72
73
    /**
74
     * push middleware to route groups.
75
     *
76
     * @param array $middleware
77
     */
78 12
    public function pushMiddlewareToGroups($middleware)
79
    {
80 12
        if (!is_array($this->groupMiddleware))
81 12
            return;
82
83
        foreach ($this->groupMiddleware as $group) {
84
            $this->app['router']->pushMiddlewareToGroup($group, $middleware);
85
        }
86
    }
87
88
    /**
89
     * Register any package services.
90
     *
91
     * @return void
92
     */
93 12
    public function register()
94
    {
95 12
        $this->mergeConfigFrom(__DIR__.'/../config/arabic-numbers-middleware.php', 'arabic-numbers-middleware');
96 12
        $this->registerAliasMiddleware();
97 12
    }
98
99
    /**
100
     *  register alias middleware.
101
     */
102 12
    protected function registerAliasMiddleware()
103
    {
104 12
        foreach ($this->middleware as $alias => $middleware) {
105 12
            $this->app['router']->aliasMiddleware($alias, $middleware);
106
        }
107 12
    }
108
}
109