blue-twilight/app/Providers/AppServiceProvider.php

85 lines
2.3 KiB
PHP

<?php
namespace App\Providers;
use App\Album;
use App\Helpers\ConfigHelper;
use App\Helpers\ImageHelper;
use App\Helpers\MiscHelper;
use App\Helpers\ThemeHelper;
use App\Helpers\ValidationHelper;
use App\Label;
use App\ModelObservers\AlbumObserver;
use App\ModelObservers\LabelObserver;
use Illuminate\Database\QueryException;
use Illuminate\Mail\Mailer;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
$themeHelper = new ThemeHelper();
$this->app->singleton('image', function ($app)
{
return new ImageHelper();
});
$this->app->singleton('theme', function ($app) use ($themeHelper)
{
return $themeHelper;
});
$this->app->singleton('misc', function ($app)
{
return new MiscHelper();
});
$this->app->singleton('user_config', function ($app)
{
return new ConfigHelper();
});
Validator::extend('is_dir', (ValidationHelper::class . '@directoryExists'));
Validator::extend('dir_empty', (ValidationHelper::class . '@isDirectoryEmpty'));
Validator::extend('is_writeable', (ValidationHelper::class . '@isPathWriteable'));
Validator::extend('album_path_unique', (ValidationHelper::class . '@albumPathUnique'));
// Model observers
Album::observe(AlbumObserver::class);
Label::observe(LabelObserver::class);
// Configure our default pager
if (MiscHelper::isAppInstalled())
{
LengthAwarePaginator::defaultView($themeHelper->viewName('partials.pager_links'));
}
// Set base URL variable (used in both the main app and the installer)
$baseUrl = url('/');
if (!substr($baseUrl, strlen($baseUrl) - 1, 1) != '/')
{
$baseUrl .= '/';
}
View::share('appBaseUrl', $baseUrl);
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}