FEATURE: move creating thumbnails into event listener
This commit is contained in:
@@ -12,11 +12,11 @@ class UploadFile extends Event
|
|||||||
/**
|
/**
|
||||||
* @var UploadedFile
|
* @var UploadedFile
|
||||||
*/
|
*/
|
||||||
private $uploadedFile;
|
public $uploadedFile;
|
||||||
/**
|
/**
|
||||||
* @var
|
* @var
|
||||||
*/
|
*/
|
||||||
private $id;
|
public $id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new event instance.
|
* Create a new event instance.
|
||||||
|
|||||||
@@ -0,0 +1,66 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Listeners;
|
||||||
|
|
||||||
|
use App\Events\UploadFile;
|
||||||
|
use Illuminate\Support\Facades\File as FileFacade;
|
||||||
|
use Illuminate\Support\Str;
|
||||||
|
use Intervention\Image\Constraint;
|
||||||
|
use Intervention\Image\Facades\Image;
|
||||||
|
use Symfony\Component\HttpFoundation\File\File as SymphonyFile;
|
||||||
|
|
||||||
|
class CreateImageThumbnail
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Create the event listener.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle the event.
|
||||||
|
*
|
||||||
|
* @param UploadFile $event
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function handle(UploadFile $event)
|
||||||
|
{
|
||||||
|
$uploadedFile = $event->uploadedFile;
|
||||||
|
|
||||||
|
// is uploaded file an image?
|
||||||
|
if (!Str::startsWith($uploadedFile->getMimeType(), 'image')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// yes, create thumbnail
|
||||||
|
$this->createThumbnail($uploadedFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create thumbnail of given image
|
||||||
|
*
|
||||||
|
* @param SymphonyFile $file
|
||||||
|
*/
|
||||||
|
private function createThumbnail(SymphonyFile $file)
|
||||||
|
{
|
||||||
|
// does thumbnail directory exist?
|
||||||
|
if (!is_dir(config('app.thumbnail_path'))) {
|
||||||
|
FileFacade::makeDirectory(config('app.thumbnail_path'));
|
||||||
|
}
|
||||||
|
|
||||||
|
// get image instance
|
||||||
|
$image = Image::make(config('app.upload_path') . DIRECTORY_SEPARATOR . $file->getFilename());
|
||||||
|
|
||||||
|
// resize image and keep aspect ration
|
||||||
|
$image->resize(env('THUMBNAIL_WIDTH', setting('previewSize', 300)), null, function (Constraint $constraint) {
|
||||||
|
$constraint->aspectRatio();
|
||||||
|
$constraint->upsize();
|
||||||
|
});
|
||||||
|
|
||||||
|
// save thumbnail with lower quality
|
||||||
|
$image->save(config('app.thumbnail_path') . DIRECTORY_SEPARATOR . $file->getFilename(), 75);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,6 +2,49 @@
|
|||||||
|
|
||||||
namespace App\Providers;
|
namespace App\Providers;
|
||||||
|
|
||||||
|
use App\Events\AssignWidget;
|
||||||
|
use App\Events\AttemptToEditInvalidContent;
|
||||||
|
use App\Events\ChangeSettings;
|
||||||
|
use App\Events\CreateNewContent;
|
||||||
|
use App\Events\CreateNewUser;
|
||||||
|
use App\Events\CreateNewWidget;
|
||||||
|
use App\Events\CreateNewWidgetArea;
|
||||||
|
use App\Events\DeleteContent;
|
||||||
|
use App\Events\DeleteWidgetArea;
|
||||||
|
use App\Events\EditContent;
|
||||||
|
use App\Events\EditFile;
|
||||||
|
use App\Events\EditUser;
|
||||||
|
use App\Events\EditWidget;
|
||||||
|
use App\Events\EditWidgetArea;
|
||||||
|
use App\Events\MakeDraftFromContent;
|
||||||
|
use App\Events\PublishContent;
|
||||||
|
use App\Events\RemoveWidgetFromArea;
|
||||||
|
use App\Events\SetHomepage;
|
||||||
|
use App\Events\UploadFile;
|
||||||
|
use App\Listeners\CreateImageThumbnail;
|
||||||
|
use App\Listeners\Loggers\LogAssignWidget;
|
||||||
|
use App\Listeners\Loggers\LogAttemptToInvalidContentEdit;
|
||||||
|
use App\Listeners\Loggers\LogChangeSettings;
|
||||||
|
use App\Listeners\Loggers\LogCreatedUser;
|
||||||
|
use App\Listeners\Loggers\LogCreateNewContent;
|
||||||
|
use App\Listeners\Loggers\LogDeleteContent;
|
||||||
|
use App\Listeners\Loggers\LogDeleteWidgetArea;
|
||||||
|
use App\Listeners\Loggers\LogDraftFromContent;
|
||||||
|
use App\Listeners\Loggers\LogEditContent;
|
||||||
|
use App\Listeners\Loggers\LogEditFile;
|
||||||
|
use App\Listeners\Loggers\LogEditUser;
|
||||||
|
use App\Listeners\Loggers\LogEditWidget;
|
||||||
|
use App\Listeners\Loggers\LogEditWidgetArea;
|
||||||
|
use App\Listeners\Loggers\LogLogin;
|
||||||
|
use App\Listeners\Loggers\LogLogout;
|
||||||
|
use App\Listeners\Loggers\LogNewWidget;
|
||||||
|
use App\Listeners\Loggers\LogNewWidgetArea;
|
||||||
|
use App\Listeners\Loggers\LogPublishContent;
|
||||||
|
use App\Listeners\Loggers\LogRemoveWidgetFromArea;
|
||||||
|
use App\Listeners\Loggers\LogSetHomepage;
|
||||||
|
use App\Listeners\Loggers\LogUploadFile;
|
||||||
|
use Illuminate\Auth\Events\Login;
|
||||||
|
use Illuminate\Auth\Events\Logout;
|
||||||
use Illuminate\Contracts\Events\Dispatcher as DispatcherContract;
|
use Illuminate\Contracts\Events\Dispatcher as DispatcherContract;
|
||||||
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
|
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
|
||||||
|
|
||||||
@@ -13,83 +56,71 @@ class EventServiceProvider extends ServiceProvider
|
|||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $listen = [
|
protected $listen = [
|
||||||
'App\Events\CreateNewUser' => [
|
CreateNewUser::class => [
|
||||||
'App\Listeners\Loggers\LogCreatedUser',
|
LogCreatedUser::class,
|
||||||
],
|
],
|
||||||
'App\Events\EditUser' => [
|
EditUser::class => [
|
||||||
'App\Listeners\Loggers\LogEditUser',
|
LogEditUser::class,
|
||||||
],
|
],
|
||||||
'App\Events\CreateNewContent' => [
|
CreateNewContent::class => [
|
||||||
'App\Listeners\Loggers\LogCreateNewContent'
|
LogCreateNewContent::class
|
||||||
],
|
],
|
||||||
'App\Events\EditContent' => [
|
EditContent::class => [
|
||||||
'App\Listeners\Loggers\LogEditContent'
|
LogEditContent::class
|
||||||
],
|
],
|
||||||
'App\Events\PublishContent' => [
|
PublishContent::class => [
|
||||||
'App\Listeners\Loggers\LogPublishContent'
|
LogPublishContent::class
|
||||||
],
|
],
|
||||||
'App\Events\MakeDraftFromContent' => [
|
MakeDraftFromContent::class => [
|
||||||
'App\Listeners\Loggers\LogDraftFromContent'
|
LogDraftFromContent::class
|
||||||
],
|
],
|
||||||
'App\Events\SetHomepage' => [
|
SetHomepage::class => [
|
||||||
'App\Listeners\Loggers\LogSetHomepage'
|
LogSetHomepage::class
|
||||||
],
|
],
|
||||||
'App\Events\AttemptToEditInvalidContent' => [
|
AttemptToEditInvalidContent::class => [
|
||||||
'App\Listeners\Loggers\LogAttemptToInvalidContentEdit'
|
LogAttemptToInvalidContentEdit::class
|
||||||
],
|
],
|
||||||
'App\Events\DeleteContent' => [
|
DeleteContent::class => [
|
||||||
'App\Listeners\Loggers\LogDeleteContent'
|
LogDeleteContent::class
|
||||||
],
|
],
|
||||||
|
|
||||||
'App\Events\ChangeSettings' => [
|
ChangeSettings::class => [
|
||||||
'App\Listeners\Loggers\LogChangeSettings',
|
LogChangeSettings::class,
|
||||||
],
|
],
|
||||||
'App\Events\UploadFile' => [
|
UploadFile::class => [
|
||||||
'App\Listeners\Loggers\LogUploadFile'
|
LogUploadFile::class,
|
||||||
|
CreateImageThumbnail::class
|
||||||
],
|
],
|
||||||
'App\Events\EditFile' => [
|
EditFile::class => [
|
||||||
'App\Listeners\Loggers\LogEditFile'
|
LogEditFile::class
|
||||||
],
|
],
|
||||||
'App\Events\CreateNewWidgetArea' => [
|
CreateNewWidgetArea::class => [
|
||||||
'App\Listeners\Loggers\LogNewWidgetArea'
|
LogNewWidgetArea::class
|
||||||
],
|
],
|
||||||
'App\Events\EditWidgetArea' => [
|
EditWidgetArea::class => [
|
||||||
'App\Listeners\Loggers\LogEditWidgetArea'
|
LogEditWidgetArea::class
|
||||||
],
|
],
|
||||||
'App\Events\DeleteWidgetArea' => [
|
DeleteWidgetArea::class => [
|
||||||
'App\Listeners\Loggers\LogDeleteWidgetArea'
|
LogDeleteWidgetArea::class
|
||||||
],
|
],
|
||||||
'App\Events\CreateNewWidget' => [
|
CreateNewWidget::class => [
|
||||||
'App\Listeners\Loggers\LogNewWidget'
|
LogNewWidget::class
|
||||||
],
|
],
|
||||||
'App\Events\EditWidget' => [
|
EditWidget::class => [
|
||||||
'App\Listeners\Loggers\LogEditWidget'
|
LogEditWidget::class
|
||||||
],
|
],
|
||||||
'App\Events\AssignWidget' => [
|
AssignWidget::class => [
|
||||||
'App\Listeners\Loggers\LogAssignWidget'
|
LogAssignWidget::class
|
||||||
],
|
],
|
||||||
'App\Events\RemoveWidgetFromArea' => [
|
RemoveWidgetFromArea::class => [
|
||||||
'App\Listeners\Loggers\LogRemoveWidgetFromArea'
|
LogRemoveWidgetFromArea::class
|
||||||
],
|
],
|
||||||
// internal Laravel events - should work as auth.login and auth.logout, however it doesn't...
|
// internal Laravel events - should work as auth.login and auth.logout, however it doesn't...
|
||||||
'Illuminate\Auth\Events\Login' => [
|
Login::class => [
|
||||||
'App\Listeners\Loggers\LogLogin'
|
LogLogin::class
|
||||||
],
|
],
|
||||||
'Illuminate\Auth\Events\Logout' => [
|
Logout::class => [
|
||||||
'App\Listeners\Loggers\LogLogout'
|
LogLogout::class
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
|
||||||
* Register any other events for your application.
|
|
||||||
*
|
|
||||||
* @param \Illuminate\Contracts\Events\Dispatcher $events
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function boot(DispatcherContract $events)
|
|
||||||
{
|
|
||||||
parent::boot($events);
|
|
||||||
//
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user