<?php
/*
* This file is part of the nellapp package.
*
* (c) Benjamin Georgeault <https://www.drosalys-web.fr/>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace App\Service\Channel\Image;
use App\Entity\Channel\Image;
use Liip\ImagineBundle\Imagine\Cache\CacheManager;
use Symfony\Component\Asset\Packages;
use Symfony\Component\HttpFoundation\UrlHelper;
/**
* Class ImageUrlGenerator
*
* @author Benjamin Georgeault
*/
class ImageUrlGenerator
{
/**
* @var Packages
*/
private $packages;
/**
* @var UrlHelper
*/
private $urlHelper;
/**
* @var CacheManager
*/
private $cache;
/**
* ImageUrlGenerator constructor.
* @param Packages $packages
* @param UrlHelper $urlHelper
* @param CacheManager $cache
*/
public function __construct(Packages $packages, UrlHelper $urlHelper, CacheManager $cache)
{
$this->packages = $packages;
$this->urlHelper = $urlHelper;
$this->cache = $cache;
}
/**
* @param Image|null $image
* @param string|null $default
* @param string $filter
* @return string
*/
public function getImageUrl(?Image $image = null, string $default = null, string $filter = 'card_thumbnail'): string
{
if (null === $image) {
if (null === $default) {
$path = $this->packages->getUrl('build/common/default.jpg', 'common');
} else {
$path = $default;
}
} else {
return $this->cache->getBrowserPath(parse_url(
'uploads/channel_images/'.$image->getName().'.'.$image->getExtension(),
PHP_URL_PATH
), $filter);
}
return $this->urlHelper->getAbsoluteUrl($path);
}
public function getImageOriginalUrl(?Image $image = null): string
{
return parse_url('/uploads/channel_images/'.$image->getName().'.'.$image->getExtension(), PHP_URL_PATH);
}
}