<?php
declare(strict_types=1);
namespace Hitso\Bundle\CommonBundle\Twig;
use Hitso\Bundle\CommonBundle\Media\UrlGenerator;
use Hitso\Bundle\FileManagerBundle\Entity\File;
use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;
/**
* Class MediaUrlExtension
* @package Hitso\Bundle\CommonBundle\Twig
*/
class MediaUrlExtension extends AbstractExtension
{
/**
* @var UrlGenerator
*/
protected $urlGenerator;
/**
* MediaUrlExtension constructor.
* @param UrlGenerator $urlGenerator
*/
public function __construct(UrlGenerator $urlGenerator)
{
$this->urlGenerator = $urlGenerator;
}
public function getFilters()
{
return [
new TwigFilter('file_url', [$this, 'fileUrl']),
new TwigFilter('image_url', [$this, 'imageUrl']),
new TwigFilter('valid_url', [$this, 'validUrl']),
new TwigFilter('img_src', [$this->urlGenerator, 'imgSrc']),
new TwigFilter('file_org_url', [$this->urlGenerator, 'fileOrgUrl']),
];
}
public function fileUrl($file): ?string
{
if (null === $file) {
return null;
}
return $this->urlGenerator->fileUrl($file);
}
public function imageUrl($file, $imagineFilterName, $runtimeConfig = [], $version = null): ?string
{
if (null === $file) {
return null;
}
return $this->urlGenerator->imageUrl($file, $imagineFilterName, $runtimeConfig, $version);
}
public function validUrl($file): bool
{
if (null === $file) {
return false;
}
return $this->urlGenerator->validUrl($file);
}
}