<?php
namespace App\Subscriber\Media;
use App\Event\Media\MemberMediaDeletedEvent;
use App\Service\Media\MemberMediaService;
use App\Service\Media\StorageLayer;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class MemberMediaDeletedSubscriber implements EventSubscriberInterface
{
/**
* @var StorageLayer
*/
protected $storageLayer;
/**
* MemberMediaDeletedSubscriber constructor.
*/
public function __construct(StorageLayer $storageLayer)
{
$this->storageLayer = $storageLayer;
}
public static function getSubscribedEvents(): array
{
return [
MemberMediaDeletedEvent::class => [
['deleteMemberMediaFiles', 0],
],
];
}
/**
* @throws \League\Flysystem\FileNotFoundException
*/
public function deleteMemberMediaFiles(MemberMediaDeletedEvent $event)
{
if ($event->isSoftDelete()) {
return;
}
$media = $event->getMemberMedia();
$this->storageLayer->deleteMemberMediaFile($media);
foreach (MemberMediaService::PROFILE_IMAGE_FILTERS as $filter) {
$this->storageLayer->deleteMemberMediaCachePath($media, $filter);
}
}
}