PagesServiceProvider::loadRoutes()   A
last analyzed

Complexity

Conditions 5
Paths 5

Size

Total Lines 24

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 24
rs 9.2248
c 0
b 0
f 0
cc 5
nc 5
nop 1
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->registerModels([
47
            'rinvex.pages.page' => Page::class,
48
        ]);
49
50
        // Register pageables
51
        $this->app->singleton('rinvex.pages.pageables', 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...
52
            return collect();
53
        });
54
55
        // Register console commands
56
        $this->registerCommands($this->commands);
57
    }
58
59
    /**
60
     * Bootstrap the application events.
61
     *
62
     * @return void
63
     */
64
    public function boot(Router $router): void
65
    {
66
        // Load resources
67
        $this->loadRoutes($router);
68
69
        // Publish Resources
70
        $this->publishesConfig('rinvex/laravel-pages');
71
        $this->publishesMigrations('rinvex/laravel-pages');
72
        ! $this->autoloadMigrations('rinvex/laravel-pages') || $this->loadMigrationsFrom(__DIR__.'/../../database/migrations');
73
    }
74
75
    /**
76
     * Load the routes.
77
     *
78
     * @param \Illuminate\Routing\Router $router
79
     *
80
     * @return void
81
     */
82
    protected function loadRoutes(Router $router): void
0 ignored issues
show
Unused Code introduced by
The parameter $router 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...
83
    {
84
        try {
85
            // Just check if we have DB connection! This is to avoid
86
            // exceptions on new projects before configuring database options
87
            DB::connection()->getPdo();
88
89
            if (config('rinvex.pages.register_routes') && ! $this->app->routesAreCached() && Schema::hasTable(config('rinvex.pages.tables.pages'))) {
0 ignored issues
show
Bug introduced by
The method routesAreCached() does not seem to exist on object<Illuminate\Contra...Foundation\Application>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
90
                app('rinvex.pages.page')->where('is_active', true)->get()->groupBy('domain')->each(function ($pages, $domain) {
91
                    Route::domain($domain ?? domain())->group(function () use ($pages) {
92
                        $pages->each(function ($page) {
93
                            Route::get($page->uri)
94
                                 ->name($page->route)
95
                                 ->uses(PagesController::class)
96
                                 ->middleware($page->middleware ?? ['web'])
97
                                 ->where('locale', '[a-z]{2}');
98
                        });
99
                    });
100
                });
101
            }
102
        } catch (Exception $e) {
103
            // Be quite! Do not do or say anything!!
104
        }
105
    }
106
}
107