Completed
Push — master ( c31516...576724 )
by Abdelrahman
02:50 queued 01:37
created

PagesServiceProvider::publishResources()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 5
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Rinvex\Pages\Providers;
6
7
use Exception;
8
use Rinvex\Pages\Models\Page;
9
use Illuminate\Routing\Router;
10
use Illuminate\Support\Facades\DB;
11
use Illuminate\Support\Facades\Route;
12
use Illuminate\Support\Facades\Schema;
13
use Illuminate\Support\ServiceProvider;
14
use Rinvex\Support\Traits\ConsoleTools;
15
use Rinvex\Pages\Console\Commands\MigrateCommand;
16
use Rinvex\Pages\Console\Commands\PublishCommand;
17
use Rinvex\Pages\Console\Commands\RollbackCommand;
18
use Rinvex\Pages\Http\Controllers\PagesController;
19
20
class PagesServiceProvider extends ServiceProvider
21
{
22
    use ConsoleTools;
23
24
    /**
25
     * The commands to be registered.
26
     *
27
     * @var array
28
     */
29
    protected $commands = [
30
        MigrateCommand::class => 'command.rinvex.pages.migrate',
31
        PublishCommand::class => 'command.rinvex.pages.publish',
32
        RollbackCommand::class => 'command.rinvex.pages.rollback',
33
    ];
34
35
    /**
36
     * Register the service provider.
37
     *
38
     * @return void
39
     */
40
    public function register(): void
41
    {
42
        // Merge config
43
        $this->mergeConfigFrom(realpath(__DIR__.'/../../config/config.php'), 'rinvex.pages');
44
45
        // Bind eloquent models to IoC container
46
        $this->app->singleton('rinvex.pages.page', $pageModel = $this->app['config']['rinvex.pages.models.page']);
47
        $pageModel === Page::class || $this->app->alias('rinvex.pages.page', Page::class);
48
49
        // Register console commands
50
        ! $this->app->runningInConsole() || $this->registerCommands();
51
    }
52
53
    /**
54
     * Bootstrap the application events.
55
     *
56
     * @return void
57
     */
58
    public function boot(Router $router): void
59
    {
60
        // Load resources
61
        $this->loadRoutes($router);
62
63
        // Publish Resources
64
        ! $this->app->runningInConsole() || $this->publishesConfig('rinvex/laravel-pages');
65
        ! $this->app->runningInConsole() || $this->publishesMigrations('rinvex/laravel-pages');
66
    }
67
68
    /**
69
     * Load the routes.
70
     *
71
     * @param \Illuminate\Routing\Router $router
72
     *
73
     * @return void
74
     */
75
    protected function loadRoutes(Router $router): void
76
    {
77
        try {
78
            // Just check if we have DB connection! This is to avoid
79
            // exceptions on new projects before configuring database options
80
            DB::connection()->getPdo();
81
82
            if (config('rinvex.pages.register_routes') && ! $this->app->routesAreCached() && Schema::hasTable(config('rinvex.pages.tables.pages'))) {
0 ignored issues
show
Coding Style introduced by
This line exceeds maximum limit of 120 characters; contains 149 characters

Overly long lines are hard to read on any screen. Most code styles therefor impose a maximum limit on the number of characters in a line.

Loading history...
83
                app('rinvex.pages.page')->where('is_active', true)->get()->groupBy('domain')->each(function ($pages, $domain) {
0 ignored issues
show
Coding Style introduced by
This line exceeds maximum limit of 120 characters; contains 127 characters

Overly long lines are hard to read on any screen. Most code styles therefor impose a maximum limit on the number of characters in a line.

Loading history...
84
                    Route::domain($domain ?? domain())->group(function () use ($pages) {
85
                        $pages->each(function ($page) {
86
                            Route::get($page->uri)
87
                                 ->name($page->route)
88
                                 ->uses(PagesController::class)
89
                                 ->middleware($page->middleware ?? ['web'])
90
                                 ->where('locale', '[a-z]{2}');
91
                        });
92
                    });
93
                });
94
            }
95
        } catch (Exception $e) {
96
            // Be quite! Do not do or say anything!!
97
        }
98
    }
99
}
100