koel/app/Providers/EventServiceProvider.php

79 lines
2 KiB
PHP
Raw Normal View History

2015-12-13 04:42:28 +00:00
<?php
namespace App\Providers;
2018-08-19 09:05:33 +00:00
use App\Events\AlbumInformationFetched;
use App\Events\ArtistInformationFetched;
use App\Events\LibraryChanged;
use App\Events\SongLikeToggled;
use App\Events\SongStartedPlaying;
use App\Listeners\ClearMediaCache;
use App\Listeners\DownloadAlbumCover;
use App\Listeners\DownloadArtistImage;
use App\Listeners\LoveTrackOnLastfm;
use App\Listeners\TidyLibrary;
use App\Listeners\UpdateLastfmNowPlaying;
2015-12-13 04:42:28 +00:00
use App\Models\Album;
2016-03-23 13:23:13 +00:00
use App\Models\Song;
2018-08-29 06:15:11 +00:00
use App\Services\HelperService;
2017-06-03 16:35:08 +00:00
use Exception;
2015-12-13 04:42:28 +00:00
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
2018-08-29 06:15:11 +00:00
use Log;
2015-12-13 04:42:28 +00:00
class EventServiceProvider extends ServiceProvider
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
2018-08-19 09:05:33 +00:00
SongLikeToggled::class => [
LoveTrackOnLastfm::class,
2015-12-13 04:42:28 +00:00
],
2016-02-02 07:47:00 +00:00
2018-08-19 09:05:33 +00:00
SongStartedPlaying::class => [
UpdateLastfmNowPlaying::class,
2015-12-23 06:26:16 +00:00
],
2016-02-02 07:47:00 +00:00
2018-08-19 09:05:33 +00:00
LibraryChanged::class => [
TidyLibrary::class,
ClearMediaCache::class,
],
AlbumInformationFetched::class => [
DownloadAlbumCover::class,
],
ArtistInformationFetched::class => [
DownloadArtistImage::class,
2016-02-02 07:47:00 +00:00
],
2015-12-13 04:42:28 +00:00
];
/**
* Register any other events for your application.
*/
2016-09-26 06:30:00 +00:00
public function boot()
2015-12-13 04:42:28 +00:00
{
2016-09-26 06:30:00 +00:00
parent::boot();
2015-12-13 04:42:28 +00:00
// Generate a unique hash for a song from its path to be the ID
2018-08-29 06:15:11 +00:00
Song::creating(static function (Song $song): void {
/** @var HelperService $helperService */
$helperService = app(HelperService::class);
$song->id = $helperService->getFileHash($song->path);
2015-12-13 04:42:28 +00:00
});
// Remove the cover file if the album is deleted
2018-08-29 06:15:11 +00:00
Album::deleted(static function (Album $album): void {
if ($album->has_cover) {
2017-06-03 16:35:08 +00:00
try {
2018-08-29 06:15:11 +00:00
unlink($album->cover_path);
2017-06-03 16:48:13 +00:00
} catch (Exception $e) {
2018-08-29 06:15:11 +00:00
Log::error($e);
2017-06-03 16:48:13 +00:00
}
2015-12-13 04:42:28 +00:00
}
});
}
}