src/EventSubscriber/AdminSubscriber.php line 26
<?phpnamespace App\EventSubscriber;use App\Entity\Album;use App\Entity\AlbumImage;use App\Entity\BranchOffice;use App\Entity\MainCard;use App\Entity\Partner;use App\Entity\TeamCard;use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityDeletedEvent;use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;use Symfony\Component\EventDispatcher\EventSubscriberInterface;class AdminSubscriber implements EventSubscriberInterface{private $parameterBag;private $projectDir;public function __construct(ParameterBagInterface $parameterBag){$this->parameterBag = $parameterBag;$this->projectDir = $parameterBag->get('kernel.project_dir');}public function deleteFile(AfterEntityDeletedEvent $event): void{$entity = $event->getEntityInstance();$filePath = match (get_class($entity)) {Album::class => $this->projectDir.'/'.$this->parameterBag->get('albums_upload_dir').'/',AlbumImage::class => $this->projectDir.'/'.$this->parameterBag->get('albums_upload_dir').'/'.$entity->getImageUrl(),BranchOffice::class => $this->projectDir.'/'.$this->parameterBag->get('branch_offices_upload_dir').'/'.$entity->getBackgroundImageUrl(),MainCard::class => $this->projectDir.'/'.$this->parameterBag->get('main_cards_upload_dir').'/'.$entity->getImageUrl(),Partner::class => $this->projectDir.'/'.$this->parameterBag->get('partners_upload_dir').'/'.$entity->getImageUrl(),TeamCard::class => $this->projectDir.'/'.$this->parameterBag->get('team_cards_upload_dir').'/'.$entity->getImageUrl(),default => ''};if ($entity instanceof Album) {$this->deleteAlbumImages($entity);return;}if ($entity instanceof BranchOffice) {foreach($entity->getAlbums() as $album) {$this->deleteAlbumImages($album);}}if (file_exists($filePath)) {unlink($filePath);} else {return;}}private function deleteAlbumImages(Album $album): void{$albumPath = $this->projectDir.'/'.$this->parameterBag->get('albums_upload_dir').'/';$imageMain = $albumPath.$album->getImageMain();if (file_exists($imageMain)) {unlink($imageMain);}foreach($album->getAlbumImages() as $albumImage) {$imageUrl = $albumPath.$albumImage->getImageUrl();if (file_exists($imageUrl)) {unlink($imageUrl);}}}public static function getSubscribedEvents(): array{return [AfterEntityDeletedEvent::class => ['deleteFile'],];}}