src/EventSubscriber/GaleryContentUrlSubscriber.php line 34

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use ApiPlatform\Core\EventListener\EventPriorities;
  4. use ApiPlatform\Core\Util\RequestAttributesExtractor;
  5. use App\Entity\GalerieGroupe;
  6. use App\Entity\Galery;
  7. use App\Entity\Image;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\HttpKernel\Event\ViewEvent;
  12. use Symfony\Component\HttpKernel\KernelEvents;
  13. use Vich\UploaderBundle\Storage\StorageInterface;
  14. class GaleryContentUrlSubscriber implements EventSubscriberInterface
  15. {
  16.     private $storage;
  17.     public function __construct(StorageInterface $storage)
  18.     {
  19.         $this->storage $storage;
  20.     }
  21.     public static function getSubscribedEvents(): array
  22.     {
  23.         return [
  24.             KernelEvents::VIEW => ['onPreSerialize'EventPriorities::PRE_SERIALIZE],
  25.         ];
  26.     }
  27.     public function onPreSerialize(ViewEvent $event): void
  28.     {
  29.         $controllerResult $event->getControllerResult();
  30.         $request $event->getRequest();
  31.         $mediaObjects $controllerResult;
  32.         if ($controllerResult instanceof Response || !$request->attributes->getBoolean('_api_respond'true)) {
  33.             return;
  34.         }
  35.         if($request->getMethod() === Request::METHOD_DELETE){
  36.             return ;
  37.         }
  38.         if (($attributes RequestAttributesExtractor::extractAttributes($request)) && \is_a($attributes['resource_class'], Galery::class, true)) {
  39.             foreach ($mediaObjects as $mediaObject) {
  40.                 if (!$mediaObject instanceof Galery) {
  41.                     continue;
  42.                 }
  43.                 $url $_SERVER['HTTP_HOST'];
  44.                 if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') {
  45.                     $schema "https://";
  46.                 } else {
  47.                     $schema "http://";
  48.                 }
  49.                 $mediaObject->contentUrl $schema.$url.$this->storage->resolveUri($mediaObject'file');
  50.             }
  51.         }elseif (($attributes RequestAttributesExtractor::extractAttributes($request)) && \is_a($attributes['resource_class'], GalerieGroupe::class, true)) {
  52.             foreach ($mediaObjects as $mediaObject) {
  53.                 if (!$mediaObject instanceof GalerieGroupe) {
  54.                     continue;
  55.                 }
  56.                 $url $_SERVER['HTTP_HOST'];
  57.                 if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') {
  58.                     $schema "https://";
  59.                 } else {
  60.                     $schema "http://";
  61.                 }
  62.                 $galeries $mediaObject->getGaleries();
  63.                 foreach ($galeries as $galery){
  64.                     $galery->contentUrl $schema.$url.$this->storage->resolveUri($galery'file');
  65.                 }
  66.             }
  67.         }
  68.     }
  69. }