GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Passed
Push — master ( b2510c...ee0bb8 )
by
unknown
12:46
created

AdminServiceProvider   A

Complexity

Total Complexity 24

Size/Duplication

Total Lines 207
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 15

Test Coverage

Coverage 81.67%

Importance

Changes 0
Metric Value
dl 0
loc 207
c 0
b 0
f 0
ccs 98
cts 120
cp 0.8167
rs 9.1666
wmc 24
lcom 1
cbo 15

14 Methods

Rating   Name   Duplication   Size   Complexity  
B register() 0 27 1
B registerTemplate() 0 26 3
A getConfig() 0 4 1
A getBootstrapPath() 0 8 2
A boot() 0 5 1
A registerMessages() 0 16 2
A initializeNavigation() 0 13 1
A registerWysiwyg() 0 6 1
A registerBootstrap() 0 22 3
A registerAliases() 0 4 1
A registerCustomRoutes() 0 8 2
A registerDefaultRoutes() 0 12 2
A registerRoutes() 0 9 1
A registerNavigationFile() 0 10 3
1
<?php
2
3
namespace SleepingOwl\Admin\Providers;
4
5
use Illuminate\Routing\Router;
6
use SleepingOwl\Admin\AliasBinder;
7
use Symfony\Component\Finder\Finder;
8
use Illuminate\Foundation\AliasLoader;
9
use Illuminate\Support\ServiceProvider;
10
use SleepingOwl\Admin\Routing\ModelRouter;
11
use SleepingOwl\Admin\Widgets\WidgetsRegistry;
12
use SleepingOwl\Admin\Exceptions\TemplateException;
13
use Illuminate\Contracts\View\Factory as ViewFactory;
14
use SleepingOwl\Admin\Model\ModelConfigurationManager;
15
use SleepingOwl\Admin\Contracts\Form\FormButtonsInterface;
16
use SleepingOwl\Admin\Contracts\Repositories\RepositoryInterface;
17
use SleepingOwl\Admin\Contracts\Widgets\WidgetsRegistryInterface;
18
use SleepingOwl\Admin\Contracts\Display\TableHeaderColumnInterface;
19
20
class AdminServiceProvider extends ServiceProvider
21
{
22
    /**
23
     * @var string
24
     */
25
    protected $directory;
26
27 285
    public function register()
28
    {
29 285
        $this->registerWysiwyg();
30 285
        $this->registerTemplate();
31 285
        $this->initializeNavigation();
32 285
        $this->registerAliases();
33
34
        $this->app->singleton('sleeping_owl.widgets', function () {
35 285
            return new WidgetsRegistry($this->app);
36 285
        });
37
38
        $this->app->booted(function () {
39 285
            $this->app['sleeping_owl.widgets']->placeWidgets(
40 285
                $this->app[ViewFactory::class]
41 285
            );
42 285
        });
43
44
        $this->app->booted(function () {
45 285
            $this->registerCustomRoutes();
46 285
            $this->registerDefaultRoutes();
47 285
            $this->registerNavigationFile();
48
49 285
            $this->app['sleeping_owl']->initialize();
50 285
        });
51
52 285
        ModelConfigurationManager::setEventDispatcher($this->app['events']);
53 285
    }
54
55 285
    protected function registerTemplate()
56
    {
57
        $this->app->singleton('assets.packages', function ($app) {
0 ignored issues
show
Unused Code introduced by
The parameter $app is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
58 285
            return new \KodiCMS\Assets\PackageManager();
59 285
        });
60
61
        $this->app->singleton('sleeping_owl.meta', function ($app) {
62 285
            return new \SleepingOwl\Admin\Templates\Meta(
63 285
                new \SleepingOwl\Admin\Templates\Assets(
64 285
                    $app['assets.packages']
65 285
                )
66 285
            );
67 285
        });
68
69
        $this->app->singleton('sleeping_owl.template', function ($app) {
70 285
            if (! class_exists($class = $this->getConfig('template'))) {
71
                throw new TemplateException("Template class [{$class}] not found");
72
            }
73
74 285
            return $app->make($class);
75 285
        });
76
77 285
        if (file_exists($assetsFile = __DIR__.'/../../resources/assets.php')) {
78 285
            include $assetsFile;
79 285
        }
80 285
    }
81
82
    /**
83
     * @param string $key
84
     *
85
     * @return mixed
86
     */
87 285
    protected function getConfig($key)
88
    {
89 285
        return $this->app['config']->get('sleeping_owl.'.$key);
90
    }
91
92
    /**
93
     * @param string $path
94
     *
95
     * @return string
96
     */
97 285
    protected function getBootstrapPath($path = null)
98
    {
99 285
        if (! is_null($path)) {
100 285
            $path = DIRECTORY_SEPARATOR.$path;
101 285
        }
102
103 285
        return $this->getConfig('bootstrapDirectory').$path;
104
    }
105
106 285
    public function boot()
107
    {
108 285
        $this->registerMessages();
109 285
        $this->registerBootstrap();
110 285
    }
111
112 285
    protected function registerMessages()
113
    {
114
        $messageTypes = [
115 285
            'error' => \SleepingOwl\Admin\Widgets\Messages\ErrorMessages::class,
116 285
            'info' => \SleepingOwl\Admin\Widgets\Messages\InfoMessages::class,
117 285
            'success' => \SleepingOwl\Admin\Widgets\Messages\SuccessMessages::class,
118 285
            'warning' => \SleepingOwl\Admin\Widgets\Messages\WarningMessages::class,
119 285
        ];
120 285
        foreach ($messageTypes as $messageType) {
121 285
            $this->app[WidgetsRegistryInterface::class]->registerWidget($messageType);
122 285
        }
123
124
        $this->app->singleton('sleeping_owl.message', function () use ($messageTypes) {
125
            return new \SleepingOwl\Admin\Widgets\Messages\MessageStack($messageTypes);
126 285
        });
127 285
    }
128
129 285
    protected function initializeNavigation()
130
    {
131 285
        $this->app->bind(TableHeaderColumnInterface::class, \SleepingOwl\Admin\Display\TableHeaderColumn::class);
132 285
        $this->app->bind(RepositoryInterface::class, \SleepingOwl\Admin\Repositories\BaseRepository::class);
133 285
        $this->app->bind(FormButtonsInterface::class, \SleepingOwl\Admin\Form\FormButtons::class);
134
135 285
        $this->app->bind(\KodiComponents\Navigation\Contracts\PageInterface::class, \SleepingOwl\Admin\Navigation\Page::class);
136 285
        $this->app->bind(\KodiComponents\Navigation\Contracts\BadgeInterface::class, \SleepingOwl\Admin\Navigation\Badge::class);
137
138
        $this->app->singleton('sleeping_owl.navigation', function () {
139 285
            return new \SleepingOwl\Admin\Navigation();
140 285
        });
141 285
    }
142
143 285
    protected function registerWysiwyg()
144
    {
145
        $this->app->singleton('sleeping_owl.wysiwyg', function () {
146 285
            return new \SleepingOwl\Admin\Wysiwyg\Manager($this->app);
147 285
        });
148 285
    }
149
150
    /**
151
     * @return array
152
     */
153 285
    protected function registerBootstrap()
154
    {
155 285
        $directory = $this->getBootstrapPath();
156
157 285
        if (! is_dir($directory)) {
158 285
            return;
159
        }
160
161
        $files = Finder::create()
162
            ->files()
163
            ->name('/^.+\.php$/')
164
            ->notName('routes.php')
165
            ->notName('navigation.php')
166
            ->in($directory)
167
            ->sort(function ($a) {
168
                return $a->getFilename() != 'bootstrap.php';
169
            });
170
171
        foreach ($files as $file) {
172
            require $file;
173
        }
174
    }
175
176 285
    protected function registerAliases()
177
    {
178 285
        AliasLoader::getInstance(config('sleeping_owl.aliases', []));
179 285
    }
180
181 285
    protected function registerCustomRoutes()
182
    {
183 285
        if (file_exists($file = $this->getBootstrapPath('routes.php'))) {
184
            $this->registerRoutes(function (Router $route) use ($file) {
185
                require $file;
186
            });
187
        }
188 285
    }
189
190 285
    protected function registerDefaultRoutes()
191
    {
192
        $this->registerRoutes(function (Router $router) {
193 285
            (new ModelRouter($this->app, $router))->register($this->app['sleeping_owl']->getModels());
194
195 285
            if (file_exists($routesFile = __DIR__.'/../Http/routes.php')) {
196 285
                require $routesFile;
197 285
            }
198
199 285
            AliasBinder::registerRoutes($router);
200 285
        });
201 285
    }
202
203
    /**
204
     * @param \Closure $callback
205
     */
206 285
    protected function registerRoutes(\Closure $callback)
207
    {
208 285
        $this->app['router']->group([
209 285
            'prefix' => $this->getConfig('url_prefix'),
210 285
            'middleware' => $this->getConfig('middleware'),
211 285
        ], function ($route) use ($callback) {
212 285
            call_user_func($callback, $route);
213 285
        });
214 285
    }
215
216 285
    protected function registerNavigationFile()
217
    {
218 285
        if (file_exists($navigation = $this->getBootstrapPath('navigation.php'))) {
219
            $items = include $navigation;
220
221
            if (is_array($items)) {
222
                $this->app['sleeping_owl.navigation']->setFromArray($items);
223
            }
224
        }
225 285
    }
226
}
227