<?php
namespace App\EventListener;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Vich\UploaderBundle\Event\Event;
use Vich\UploaderBundle\Event\Events;
use Intervention\Image\ImageManager;
use Symfony\Component\HttpKernel\KernelInterface;
use Symfony\Component\HttpKernel\Event\ViewEvent;
class VichUploaderListener implements EventSubscriberInterface
{
private $kernel;
public function __construct(KernelInterface $kernel)
{
$this->kernel = $kernel;
}
public static function getSubscribedEvents()
{
return [
Events::POST_UPLOAD => 'postUpload',
];
}
public function postUpload(Event $event)
{
$mapping = $event->getMapping();
$object = $event->getObject();
// $entity = $event_n->getControllerResult();
// var_dump( $entity->getId() ); die;
// Додайте вашу логіку для включення року та місяця в шлях
// $year = date('Y');
// $month = date('m');
// $documentRoot = $this->kernel->getProjectDir() . '/public';
// $path = $documentRoot . $mapping->getUriPrefix() . "/$year/$month/";
// $name = $mapping->getFileName($object);
// $uri = $path . $name;
// if ($this->isImage($uri)) {
// $sizes = [90, 300, 700];
// $manager = new ImageManager(
// new \Intervention\Image\Drivers\Gd\Driver()
// );
// foreach($sizes as $s){
// $image = $manager->read($uri);
// $image->scale(width: $s);
// $image->save($path . "{$s}_px_" . $name);
// }
// }
}
// private function isImage($file)
// {
// $allowedTypes = [
// IMAGETYPE_GIF,
// IMAGETYPE_JPEG,
// IMAGETYPE_PNG,
// IMAGETYPE_WEBP,
// // Add more as needed
// ];
// $imageInfo = @getimagesize($file);
// if ($imageInfo && in_array($imageInfo[2], $allowedTypes)) {
// return true;
// }
// return false;
// }
}