Completed
Push — master ( 54b8d1...ceafd9 )
by Avtandil
02:36
created

MultiLangServiceProvider   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 133
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 6

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
dl 0
loc 133
rs 10
c 0
b 0
f 0
ccs 41
cts 41
cp 1
wmc 8
lcom 1
cbo 6

3 Methods

Rating   Name   Duplication   Size   Complexity  
B boot() 0 31 3
B register() 0 64 4
A provides() 0 11 1
1
<?php
2
/*
3
 * This file is part of the Laravel MultiLang package.
4
 *
5
 * (c) Avtandil Kikabidze aka LONGMAN <[email protected]>
6
 *
7
 * For the full copyright and license information, please view the LICENSE
8
 * file that was distributed with this source code.
9
 */
10
11
namespace Longman\LaravelMultiLang;
12
13
use Blade;
14
use Illuminate\Routing\Events\RouteMatched;
15
use Illuminate\Support\ServiceProvider;
16
use Longman\LaravelMultiLang\Console\ImportCommand;
17
use Longman\LaravelMultiLang\Console\MigrationCommand;
18
use Longman\LaravelMultiLang\Console\TextsCommand;
19
use Route;
20
21
class MultiLangServiceProvider extends ServiceProvider
22
{
23
    /**
24
     * Indicates if loading of the provider is deferred.
25
     *
26
     * @var bool
27
     */
28
    protected $defer = false;
29
30
    /**
31
     * Bootstrap any application services.
32
     *
33
     * @return void
34
     */
35 40
    public function boot()
36
    {
37
        // Publish config files
38 40
        $this->publishes(
39
            [
40 40
                __DIR__ . '/../config/config.php' => config_path('multilang.php'),
41 40
                __DIR__ . '/../views'             => base_path('resources/views/vendor/multilang'),
42
            ]
43
        );
44
45
        // Append the country settings
46 40
        $this->mergeConfigFrom(
47 40
            __DIR__ . '/../config/config.php',
48 40
            'multilang'
49
        );
50
51
        // Register blade directives
52
        Blade::directive('t', function ($expression) {
53
            return "<?php echo e(t({$expression})); ?>";
54 40
        });
55
56
        $this->app['events']->listen(RouteMatched::class, function () {
57
            $scope = $this->app['config']->get('app.scope');
58
            if ($scope && $scope != 'global') {
59
                $this->app['multilang']->setScope($scope);
60
            }
61
            $this->app['multilang']->setLocale($this->app->getLocale());
62 40
        });
63
64 40
        $this->loadViewsFrom(__DIR__ . '/../views', 'multilang');
65 40
    }
66
67
    /**
68
     * Register any application services.
69
     *
70
     * @return void
71
     */
72 40
    public function register()
73
    {
74 40
        $configPath = __DIR__ . '/../config/config.php';
75 40
        $this->mergeConfigFrom($configPath, 'debugbar');
76
77
        $this->app->singleton('multilang', function ($app) {
78 3
            $environment = $app->environment();
79 3
            $config      = $app['config']->get('multilang');
80
81 3
            $multilang = new \Longman\LaravelMultiLang\MultiLang(
82
                $environment,
83
                $config,
84 3
                $app['cache'],
85 3
                $app['db']
86
            );
87
88 3
            if ($multilang->autoSaveIsAllowed()) {
89
                $app->terminating(function () use ($multilang) {
90
                    $scope = $this->app['config']->get('app.scope');
91
                    if ($scope && $scope != 'global') {
92
                        $multilang->setScope($scope);
93
                    }
94
                    return $multilang->saveTexts();
95
                });
96
            }
97
98 3
            return $multilang;
99 40
        });
100
101 40
        $this->app->alias('multilang', 'Longman\LaravelMultiLang\MultiLang');
102
103 40
        $this->app['command.multilang.migration'] = $this->app->share(
104
            function () {
105 4
                return new MigrationCommand();
106 40
            }
107
        );
108
109 40
        $this->app['command.multilang.texts'] = $this->app->share(
110
            function () {
111 4
                return new TextsCommand();
112 40
            }
113
        );
114
115 40
        $this->app['command.multilang.import'] = $this->app->share(
116
            function () {
117 4
                return new ImportCommand();
118 40
            }
119
        );
120
121 40
        $this->app['command.multilang.export'] = $this->app->share(
122 40
            function () {
123 4
                return new ExportCommand();
124 40
            }
125
        );
126
127 40
        $this->commands(
128
            [
129 40
                'command.multilang.migration',
130
                'command.multilang.texts',
131
                'command.multilang.import',
132
                'command.multilang.export',
133
            ]
134
        );
135 40
    }
136
137
    /**
138
     * Get the services provided by the provider.
139
     *
140
     * @return array
141
     */
142 3
    public function provides()
143
    {
144
        return [
145 3
            'multilang',
146
            'command.multilang.migration',
147
            'command.multilang.texts',
148
            'command.multilang.import',
149
            'command.multilang.export',
150
            'Longman\LaravelMultiLang\MultiLang',
151
        ];
152
    }
153
}
154