src/CoreBundle/Services/MediaExtensionVidi.php line 45

Open in your IDE?
  1. <?php
  2. namespace CoreBundle\Services;
  3. use Sonata\MediaBundle\Model\MediaInterface;
  4. use Sonata\MediaBundle\Provider\Pool;
  5. use Sonata\MediaBundle\Twig\MediaRuntime;
  6. use Twig\Extension\AbstractExtension;
  7. use Twig\TwigFunction;
  8. class MediaExtensionVidi extends AbstractExtension
  9. {
  10.     private Pool $pool;
  11.     public function __construct(Pool $pool)
  12.     {
  13.         $this->pool $pool;
  14.     }
  15.     public function getFunctions(): array
  16.     {
  17.         return [
  18.             new TwigFunction('sonata_media', [MediaRuntime::class, 'media'], ['is_safe' => ['html']]),
  19.             new TwigFunction('sonata_thumbnail', [MediaRuntime::class, 'thumbnail'], ['is_safe' => ['html']]),
  20.             new TwigFunction('sonata_path', [MediaRuntime::class, 'path']),
  21.             new TwigFunction('path_webp', [$this'pathWebp']),
  22.         ];
  23.     }
  24.     public function pathWebp(?MediaInterface $mediastring $format): string
  25.     {
  26.         if (!$media) {
  27.             return '';
  28.         }
  29.         /** @var ImageProviderVidi $provider */
  30.         $provider $this->pool->getProvider($media->getProviderName());
  31.         return $provider->generatePublicUrlWebp(
  32.             $media,
  33.             $provider->getFormatName($media$format)
  34.         );
  35.     }
  36.     public function getPath(?MediaInterface $mediastring $format): string
  37.     {
  38.         if (!$media) {
  39.             return '';
  40.         }
  41.         /** @var ImageProviderVidi $provider */
  42.         $provider $this->pool->getProvider($media->getProviderName());
  43.         return $provider->generatePublicUrl(
  44.             $media,
  45.             $provider->getFormatName($media$format)
  46.         );
  47.     }
  48. }