init without trunk
This commit is contained in:
parent
ed24ac4994
commit
bb809e7233
14652 changed files with 177862 additions and 94817 deletions
166
vendor/gregwar/image-bundle/Services/ImageHandling.php
vendored
Normal file
166
vendor/gregwar/image-bundle/Services/ImageHandling.php
vendored
Normal file
|
|
@ -0,0 +1,166 @@
|
|||
<?php
|
||||
|
||||
namespace Gregwar\ImageBundle\Services;
|
||||
|
||||
use Gregwar\ImageBundle\ImageHandler;
|
||||
use Symfony\Component\Config\FileLocatorInterface;
|
||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
||||
use Symfony\Component\Asset\Packages;
|
||||
use Symfony\Component\HttpKernel\KernelInterface;
|
||||
|
||||
/**
|
||||
* Image manipulation service.
|
||||
*
|
||||
* @author Gregwar <g.passault@gmail.com>
|
||||
* @author Sullivan Senechal <soullivaneuh@gmail.com>
|
||||
*/
|
||||
class ImageHandling
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $cacheDirectory;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
private $cacheDirMode;
|
||||
|
||||
/**
|
||||
* @var ContainerInterface
|
||||
*/
|
||||
private $container;
|
||||
|
||||
/**
|
||||
* @var Packages
|
||||
*/
|
||||
private $assetsPackages;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $handlerClass;
|
||||
|
||||
/**
|
||||
* @var FileLocatorInterface|KernelInterface
|
||||
*/
|
||||
private $fileLocator;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
private $throwException;
|
||||
|
||||
/**
|
||||
* @param string $cacheDirectory
|
||||
* @param int $cacheDirMode
|
||||
* @param string $handlerClass
|
||||
* @param ContainerInterface $container
|
||||
* @param KernelInterface|FileLocatorInterface $fileLocator
|
||||
* @param bool $throwException
|
||||
* @param string $fallbackImage
|
||||
*/
|
||||
public function __construct($cacheDirectory, $cacheDirMode, $handlerClass, ContainerInterface $container, Packages $assetsPackages, $fileLocator, $throwException, $fallbackImage)
|
||||
{
|
||||
if (!$fileLocator instanceof FileLocatorInterface && $fileLocator instanceof KernelInterface) {
|
||||
throw new \InvalidArgumentException(
|
||||
'Argument 5 passed to '.__METHOD__.' must be an instance of '.
|
||||
'Symfony\Component\Config\FileLocatorInterface or Symfony\Component\HttpKernel\KernelInterface.'
|
||||
);
|
||||
}
|
||||
|
||||
if ($fileLocator instanceof KernelInterface) {
|
||||
@trigger_error(
|
||||
'Pass Symfony\Component\HttpKernel\KernelInterface to '.__CLASS__.
|
||||
' is deprecated since version 2.1.0 and will be removed in 3.0.'.
|
||||
' Use Symfony\Component\Config\FileLocatorInterface instead.',
|
||||
E_USER_DEPRECATED
|
||||
);
|
||||
}
|
||||
|
||||
$this->cacheDirectory = $cacheDirectory;
|
||||
$this->cacheDirMode = intval($cacheDirMode);
|
||||
$this->handlerClass = $handlerClass;
|
||||
$this->container = $container;
|
||||
$this->assetsPackages = $assetsPackages;
|
||||
$this->fileLocator = $fileLocator;
|
||||
$this->throwException = $throwException;
|
||||
$this->fallbackImage = $fallbackImage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a manipulable image instance.
|
||||
*
|
||||
* @param string $file the image path
|
||||
*
|
||||
* @return ImageHandler a manipulable image instance
|
||||
*/
|
||||
public function open($file)
|
||||
{
|
||||
if (strlen($file) >= 1 && $file[0] == '@') {
|
||||
try {
|
||||
if ($this->fileLocator instanceof FileLocatorInterface) {
|
||||
$file = $this->fileLocator->locate($file);
|
||||
} else {
|
||||
$this->fileLocator->locateResource($file);
|
||||
}
|
||||
} catch (\InvalidArgumentException $exception) {
|
||||
if ($this->throwException || false == $this->fallbackImage) {
|
||||
throw $exception;
|
||||
}
|
||||
|
||||
$file = $this->fallbackImage;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->createInstance($file);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a new image.
|
||||
*
|
||||
* @param string $w the width
|
||||
* @param string $h the height
|
||||
*
|
||||
* @return ImageHandler a manipulable image instance
|
||||
*/
|
||||
public function create($w, $h)
|
||||
{
|
||||
return $this->createInstance(null, $w, $h);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an instance defining the cache directory.
|
||||
*
|
||||
* @param string $file
|
||||
* @param string|null $w
|
||||
* @param string|null $h
|
||||
*
|
||||
* @return ImageHandler
|
||||
*/
|
||||
private function createInstance($file, $w = null, $h = null)
|
||||
{
|
||||
$container = $this->container;
|
||||
$webDir = $container->getParameter('gregwar_image.web_dir');
|
||||
|
||||
$handlerClass = $this->handlerClass;
|
||||
/** @var ImageHandler $image */
|
||||
$image = new $handlerClass($file, $w, $h, $this->throwException, $this->fallbackImage);
|
||||
|
||||
$image->setCacheDir($this->cacheDirectory);
|
||||
$image->setCacheDirMode($this->cacheDirMode);
|
||||
$image->setActualCacheDir($webDir.'/'.$this->cacheDirectory);
|
||||
|
||||
if ($container->has('templating.helper.assets')) {
|
||||
$image->setFileCallback(function ($file) use ($container) {
|
||||
return $container->get('templating.helper.assets')->getUrl($file);
|
||||
});
|
||||
} else {
|
||||
$image->setFileCallback(function ($file) use ($container) {
|
||||
return $this->assetsPackages->getUrl($file);
|
||||
});
|
||||
}
|
||||
|
||||
return $image;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue