Passed
Push — master ( c780f6...60df12 )
by Andres
02:52
created

JSLocalizationServiceProvider   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 69
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 6
dl 0
loc 69
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
B boot() 0 39 5
A register() 0 15 1
1
<?php
2
3
namespace Sirgrimorum\JSLocalization;
4
5
use Illuminate\Support\ServiceProvider;
6
use Illuminate\Foundation\AliasLoader;
7
use Blade;
8
9
class JSLocalizationServiceProvider extends ServiceProvider {
10
11
    /**
12
     * Bootstrap services.
13
     *
14
     * @return void
15
     */
16
    public function boot() {
17
        $this->publishes([
18
            __DIR__ . '/Config/jslocalization.php' => config_path('sirgrimorum/jslocalization.php'),
19
                ], 'config');
20
21
        Blade::directive('jslocalization', function($expression) {
22
            $auxExpression = explode(',', str_replace(['(', ')', ' ', '"', "'"], '', $expression));
23
            if (count($auxExpression) > 2) {
24
                $langfile = $auxExpression[0];
25
                $group = $auxExpression[1];
26
                $basevar = $auxExpression[2];
27
            } elseif (count($auxExpression) > 1) {
28
                $langfile = $auxExpression[0];
29
                $group = $auxExpression[1];
30
                $basevar = "";
31
            } else {
32
                $langfile = $auxExpression[0];
33
                $group = "";
34
                $basevar = "";
35
            }
36
            $translations = new \Sirgrimorum\JSLocalization\BindTranslationsToJs($this->app, config('sirgrimorum.jslocalization.bind_trans_vars_to_this_view', 'layout.app'), config('sirgrimorum.jslocalization.trans_group', 'messages'), config('sirgrimorum.jslocalization.default_base_var', 'translations'));
37
            return $translations->get($langfile, $group, $basevar);
38
        });
39
        Blade::directive('jsmodel', function($expression) {
40
            $auxExpression = explode(',', str_replace(['(', ')', ' ', '"', "'"], '', $expression));
41
            //echo "<pre>" . print_r($auxExpression, true) . "</pre>";
42
            if (count($auxExpression) > 1) {
43
                if ($auxExpression[0] == 'Auth::user') {
44
                    $model = \Auth::user();
45
                } else {
46
                    $model = $auxExpression[0];
47
                }
48
                $variable = $auxExpression[1];
49
            } else {
50
                $model = $auxExpression[0];
51
                $variable = "";
52
            }
53
            $translations = new \Sirgrimorum\JSLocalization\BindTranslationsToJs($this->app, config('sirgrimorum.jslocalization.bind_trans_vars_to_this_view', 'layout.app'), config('sirgrimorum.jslocalization.trans_group', 'messages'), config('sirgrimorum.jslocalization.default_base_var', 'translations'));
54
            return $translations->put($model, $variable);
55
        });
56
    }
57
58
    /**
59
     * Register services.
60
     *
61
     * @return void
62
     */
63
    public function register() {
64
        $this->app->singleton(BindTranslationsToJs::class, function($app) {
65
            $view = config('sirgrimorum.jslocalization.bind_trans_vars_to_this_view', 'welcome');
66
            $group = config('sirgrimorum.jslocalization.trans_group', 'mensajes');
67
            $basevar = config('sirgrimorum.jslocalization.default_base_var', 'translations');
68
69
            return new BindTranslationsToJs($app, $view, $group, $basevar);
70
        });
71
        $loader = AliasLoader::getInstance();
72
        $loader->alias(
73
                'JSLocalization', \Sirgrimorum\JSLocalization\BindTranslationsToJs::class
74
        );
75
        //$this->app->alias(BindTranslationsToJs::class, 'JSLocalization');
76
        $this->mergeConfigFrom(
77
                __DIR__ . '/Config/jslocalization.php', 'sirgrimorum.jslocalization'
78
        );
79
    }
80
81
}
82