webworld888/app/Providers/MediaLibraryProvider.php
2021-10-26 19:14:12 +09:00

108 lines
3.1 KiB
PHP

<?php
/**
* MediaLibraryProvider.php
*
* PHP version 7
*
* @category MediaLibrary
* @package Xpressengine\MediaLibrary
* @author XE Developers <developers@xpressengine.com>
* @copyright 2020 Copyright (C) XEHub. <https://xehub.io>
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPL-2.1
* @link https://xpressengine.io
*/
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Xpressengine\MediaLibrary\MediaLibraryConfigHandler;
use Xpressengine\MediaLibrary\MediaLibraryHandler;
use Xpressengine\MediaLibrary\Models\MediaLibraryFile;
use Xpressengine\MediaLibrary\Models\MediaLibraryFolder;
use Xpressengine\MediaLibrary\Repositories\MediaLibraryFileRepository;
use Xpressengine\MediaLibrary\Repositories\MediaLibraryFolderRepository;
/**
* Class MediaLibraryProvider
*
* @category MediaLibrary
* @package Xpressengine\MediaLibrary
* @author XE Developers <developers@xpressengine.com>
* @copyright 2020 Copyright (C) XEHub. <https://xehub.io>
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPL-2.1
* @link https://xpressengine.io
*/
class MediaLibraryProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
$this->setModels();
app('xe.media_library.configHandler')->setThumbnailTypes();
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
$this->bindClasses();
$this->registerRepositories();
}
/**
* bind media library classes
*
* @return void
*/
private function bindClasses()
{
$this->app->singleton(MediaLibraryHandler::class, function () {
return new MediaLibraryHandler;
});
$this->app->alias(MediaLibraryHandler::class, 'xe.media_library.handler');
$this->app->singleton(MediaLibraryConfigHandler::class, function () {
return new MediaLibraryConfigHandler(app('xe.config')->get('media_library'));
});
$this->app->alias(MediaLibraryConfigHandler::class, 'xe.media_library.configHandler');
}
/**
* set media library models
*
* @return void
*/
private function setModels()
{
MediaLibraryFileRepository::setModel(MediaLibraryFile::class);
MediaLibraryFolderRepository::setModel(MediaLibraryFolder::class);
}
/**
* register media library repositories
*
* @return void
*/
private function registerRepositories()
{
$this->app->singleton(MediaLibraryFileRepository::class, function () {
return new MediaLibraryFileRepository;
});
$this->app->alias(MediaLibraryFileRepository::class, 'xe.media_library.files');
$this->app->singleton(MediaLibraryFolderRepository::class, function () {
return new MediaLibraryFolderRepository;
});
$this->app->alias(MediaLibraryFolderRepository::class, 'xe.media_library.folders');
}
}