Current File : /home/itiffy/public_html/vendor/yajra/laravel-datatables-oracle/src/DatatablesServiceProvider.php |
<?php
namespace Yajra\Datatables;
use Collective\Html\HtmlServiceProvider;
use Illuminate\Support\ServiceProvider;
use League\Fractal\Manager;
use League\Fractal\Serializer\DataArraySerializer;
use Maatwebsite\Excel\ExcelServiceProvider;
use Yajra\Datatables\Generators\DataTablesMakeCommand;
use Yajra\Datatables\Generators\DataTablesScopeCommand;
/**
* Class DatatablesServiceProvider.
*
* @package Yajra\Datatables
* @author Arjay Angeles <aqangeles@gmail.com>
*/
class DatatablesServiceProvider extends ServiceProvider
{
/**
* Indicates if loading of the provider is deferred.
*
* @var bool
*/
protected $defer = false;
/**
* Bootstrap the application events.
*
* @return void
*/
public function boot()
{
$this->loadViewsFrom(__DIR__ . '/resources/views', 'datatables');
$this->publishAssets();
$this->registerCommands();
}
/**
* Publish datatables assets.
*/
protected function publishAssets()
{
$this->publishes([
__DIR__ . '/config/config.php' => config_path('datatables.php'),
], 'datatables');
$this->publishes([
__DIR__ . '/resources/assets/buttons.server-side.js' => public_path('vendor/datatables/buttons.server-side.js'),
], 'datatables');
$this->publishes([
__DIR__ . '/resources/views' => base_path('/resources/views/vendor/datatables'),
], 'datatables');
}
/**
* Register datatables commands.
*/
protected function registerCommands()
{
$this->commands(DataTablesMakeCommand::class);
$this->commands(DataTablesScopeCommand::class);
}
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
if ($this->isLumen()) {
require_once 'fallback.php';
}
$this->registerRequiredProviders();
$this->app->singleton('datatables', function () {
return new Datatables($this->app->make(Request::class));
});
$this->app->alias('datatables', Datatables::class);
$this->app->singleton('datatables.fractal', function () {
$fractal = new Manager;
$config = $this->app['config'];
$request = $this->app['request'];
$includesKey = $config->get('datatables.fractal.includes', 'include');
if ($request->get($includesKey)) {
$fractal->parseIncludes($request->get($includesKey));
}
$serializer = $config->get('datatables.fractal.serializer', DataArraySerializer::class);
$fractal->setSerializer(new $serializer);
return $fractal;
});
$this->registerAliases();
}
/**
* Check if app uses Lumen.
*
* @return bool
*/
protected function isLumen()
{
return str_contains($this->app->version(), 'Lumen');
}
/**
* Register 3rd party providers.
*/
protected function registerRequiredProviders()
{
$this->app->register(HtmlServiceProvider::class);
$this->app->register(ExcelServiceProvider::class);
}
/**
* Create aliases for the dependency.
*/
protected function registerAliases()
{
if (class_exists('Illuminate\Foundation\AliasLoader')) {
$loader = \Illuminate\Foundation\AliasLoader::getInstance();
$loader->alias('Datatables', \Yajra\Datatables\Facades\Datatables::class);
}
}
/**
* Get the services provided by the provider.
*
* @return string[]
*/
public function provides()
{
return ['datatables'];
}
}