Completed
Pull Request — master (#348)
by
unknown
02:38
created

ServiceProvider::publishMigrations()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 6
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
namespace JeroenNoten\LaravelAdminLte;
4
5
use Illuminate\Contracts\View\Factory;
6
use Illuminate\Contracts\Config\Repository;
7
use Illuminate\Contracts\Events\Dispatcher;
8
use Illuminate\Contracts\Container\Container;
9
use JeroenNoten\LaravelAdminLte\Events\BuildingMenu;
10
use JeroenNoten\LaravelAdminLte\Console\AdminLteMakeCommand;
11
use JeroenNoten\LaravelAdminLte\Console\MakeAdminLteCommand;
12
use Illuminate\Support\ServiceProvider as BaseServiceProvider;
13
use JeroenNoten\LaravelAdminLte\Http\ViewComposers\AdminLteComposer;
14
15
class ServiceProvider extends BaseServiceProvider
16
{
17
    public function register()
18
    {
19
        $this->app->singleton(AdminLte::class, function (Container $app) {
20
            return new AdminLte(
21
                $app['config']['adminlte.filters'],
22
                $app['events'],
23
                $app
24
            );
25
        });
26
    }
27
28
    public function boot(
29
        Factory $view,
30
        Dispatcher $events,
31
        Repository $config
32
    ) {
33
        $this->loadViews();
34
35
        $this->loadTranslations();
36
37
        $this->publishConfig();
38
39
        $this->publishAssets();
40
41
        $this->publishMigrations();
42
43
        $this->registerCommands();
44
45
        $this->registerViewComposers($view);
46
47
        $this->loadRoutesFrom(__DIR__.'/Routes/routes.php');
48
49
        static::registerMenu($events, $config);
50
51
    }
52
53
    private function loadViews()
54
    {
55
        $viewsPath = $this->packagePath('resources/views');
56
57
        $this->loadViewsFrom($viewsPath, 'adminlte');
58
59
        $this->publishes([
60
            $viewsPath => base_path('resources/views/vendor/adminlte'),
61
        ], 'views');
62
    }
63
64
    private function loadTranslations()
65
    {
66
        $translationsPath = $this->packagePath('resources/lang');
67
68
        $this->loadTranslationsFrom($translationsPath, 'adminlte');
69
70
        $this->publishes([
71
            $translationsPath => base_path('resources/lang/vendor/adminlte'),
72
        ], 'translations');
73
    }
74
75
    private function publishConfig()
76
    {
77
        $configPath = $this->packagePath('config/adminlte.php');
78
79
        $this->publishes([
80
            $configPath => config_path('adminlte.php'),
81
        ], 'config');
82
83
        $this->mergeConfigFrom($configPath, 'adminlte');
84
    }
85
86
    private function publishAssets()
87
    {
88
        $this->publishes([
89
            $this->packagePath('resources/assets') => public_path('vendor/adminlte'),
90
        ], 'assets');
91
    }
92
93
    private function publishMigrations()
94
    {
95
        $this->publishes([
96
            $this->packagePath('src/Migrations') => database_path('migrations'),
97
        ], 'migrations');
98
    }
99
100
101
    private function packagePath($path)
102
    {
103
        return __DIR__."/../$path";
104
    }
105
106
    private function registerCommands()
107
    {
108
        // Laravel >=5.2 only
109
        if (class_exists('Illuminate\\Auth\\Console\\MakeAuthCommand')) {
110
            $this->commands(MakeAdminLteCommand::class);
111
        } elseif (class_exists('Illuminate\\Auth\\Console\\AuthMakeCommand')) {
112
            $this->commands(AdminLteMakeCommand::class);
113
        }
114
    }
115
116
    private function registerViewComposers(Factory $view)
117
    {
118
        $view->composer('adminlte::page', AdminLteComposer::class);
119
    }
120
121
    public static function registerMenu(Dispatcher $events, Repository $config)
122
    {
123
        $events->listen(BuildingMenu::class, function (BuildingMenu $event) use ($config) {
124
            $menu = $config->get('adminlte.menu');
125
            call_user_func_array([$event->menu, 'add'], $menu);
126
        });
127
    }
128
}
129