%PDF- %PDF-
| Direktori : /var/www/pjc/vendor/laravel/telescope/src/ |
| Current File : /var/www/pjc/vendor/laravel/telescope/src/TelescopeServiceProvider.php |
<?php
namespace Laravel\Telescope;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\ServiceProvider;
use Laravel\Telescope\Contracts\ClearableRepository;
use Laravel\Telescope\Contracts\EntriesRepository;
use Laravel\Telescope\Contracts\PrunableRepository;
use Laravel\Telescope\Storage\DatabaseEntriesRepository;
class TelescopeServiceProvider extends ServiceProvider
{
/**
* Bootstrap any package services.
*
* @return void
*/
public function boot()
{
if (! config('telescope.enabled')) {
return;
}
Route::middlewareGroup('telescope', config('telescope.middleware', []));
$this->registerRoutes();
$this->registerMigrations();
$this->registerPublishing();
Telescope::start($this->app);
Telescope::listenForStorageOpportunities($this->app);
$this->loadViewsFrom(
__DIR__.'/../resources/views', 'telescope'
);
}
/**
* Register the package routes.
*
* @return void
*/
private function registerRoutes()
{
Route::group($this->routeConfiguration(), function () {
$this->loadRoutesFrom(__DIR__.'/Http/routes.php');
});
}
/**
* Get the Telescope route group configuration array.
*
* @return array
*/
private function routeConfiguration()
{
return [
'domain' => config('telescope.domain', null),
'namespace' => 'Laravel\Telescope\Http\Controllers',
'prefix' => config('telescope.path'),
'middleware' => 'telescope',
];
}
/**
* Register the package's migrations.
*
* @return void
*/
private function registerMigrations()
{
if ($this->app->runningInConsole() && $this->shouldMigrate()) {
$this->loadMigrationsFrom(__DIR__.'/Storage/migrations');
}
}
/**
* Register the package's publishable resources.
*
* @return void
*/
private function registerPublishing()
{
if ($this->app->runningInConsole()) {
$this->publishes([
__DIR__.'/Storage/migrations' => database_path('migrations'),
], 'telescope-migrations');
$this->publishes([
__DIR__.'/../public' => public_path('vendor/telescope'),
], 'telescope-assets');
$this->publishes([
__DIR__.'/../config/telescope.php' => config_path('telescope.php'),
], 'telescope-config');
$this->publishes([
__DIR__.'/../stubs/TelescopeServiceProvider.stub' => app_path('Providers/TelescopeServiceProvider.php'),
], 'telescope-provider');
}
}
/**
* Register any package services.
*
* @return void
*/
public function register()
{
$this->mergeConfigFrom(
__DIR__.'/../config/telescope.php', 'telescope'
);
$this->registerStorageDriver();
$this->commands([
Console\ClearCommand::class,
Console\InstallCommand::class,
Console\PruneCommand::class,
Console\PublishCommand::class,
]);
}
/**
* Register the package storage driver.
*
* @return void
*/
protected function registerStorageDriver()
{
$driver = config('telescope.driver');
if (method_exists($this, $method = 'register'.ucfirst($driver).'Driver')) {
$this->$method();
}
}
/**
* Register the package database storage driver.
*
* @return void
*/
protected function registerDatabaseDriver()
{
$this->app->singleton(
EntriesRepository::class, DatabaseEntriesRepository::class
);
$this->app->singleton(
ClearableRepository::class, DatabaseEntriesRepository::class
);
$this->app->singleton(
PrunableRepository::class, DatabaseEntriesRepository::class
);
$this->app->when(DatabaseEntriesRepository::class)
->needs('$connection')
->give(config('telescope.storage.database.connection'));
$this->app->when(DatabaseEntriesRepository::class)
->needs('$chunkSize')
->give(config('telescope.storage.database.chunk'));
}
/**
* Determine if we should register the migrations.
*
* @return bool
*/
protected function shouldMigrate()
{
return Telescope::$runsMigrations && config('telescope.driver') === 'database';
}
}