src/EventSubscriber/EasyAdminSubscriber.php line 31

  1. <?php 
  2. # src/EventSubscriber/EasyAdminSubscriber.php
  3. namespace App\EventSubscriber;
  4. use App\Entity\Edition;
  5. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityPersistedEvent;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use EasyCorp\Bundle\EasyAdminBundle\Event\AfterCrudActionEvent;
  8. use Symfony\Component\Filesystem\Exception\IOExceptionInterface;
  9. use Symfony\Component\Filesystem\Filesystem;
  10. use Symfony\Component\Filesystem\Path;
  11. use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityUpdatedEvent;
  12. class EasyAdminSubscriber implements EventSubscriberInterface
  13. {
  14.     private $flipDir;
  15.     
  16.     public function __construct($flipDir)
  17.     {
  18.         $this->flipDir = $flipDir;
  19.     }
  20.     
  21.     public static function getSubscribedEvents()
  22.     {
  23.         return [
  24. //             AfterCrudActionEvent::class => ['unpackZip'],
  25.             AfterEntityUpdatedEvent::class => ['unpackZip'],
  26.         ];
  27.     }
  28.     
  29.     public function unpackZip(AfterEntityUpdatedEvent $event)
  30.     {
  31.         $entity = $event->getEntityInstance();
  32.         
  33.         if (!($entity instanceof Edition)) {
  34.             return;
  35.         }
  36.         
  37.         $filesystem = new Filesystem();
  38.         $editionFlipFolder = $this->flipDir.'/'.$entity->getId();
  39.         $zip = new \ZipArchive();
  40.         if ($zip->open($this->flipDir.'/'.$entity->getFlipIframe()) === TRUE) {
  41.             $filesystem->mkdir($editionFlipFolder, 0700);
  42.             $zip->extractTo($editionFlipFolder);
  43.             $zip->close();
  44.             echo 'ok';
  45.         } else {
  46.             echo 'failed';
  47.         }
  48.     }
  49. }