|
|
@@ -93,20 +93,24 @@ class LocalStorage implements FileStorageInterface
|
|
|
/**
|
|
|
* Retourne l'URL de l'image, à la bonne taille, contenu dans le File.
|
|
|
*/
|
|
|
- public function getImageUrl(File $file, string $size, bool $relativePath): string
|
|
|
+ public function getImageUrl(File $file, string $size, bool $relativePath, bool $uncropped = false): string
|
|
|
{
|
|
|
- $filterName = $this->getFilterFromSizeAndConfig($size, !empty($file->getConfig()));
|
|
|
+ $crop = !empty($file->getConfig()) && !$uncropped;
|
|
|
+
|
|
|
+ $filterName = $this->getFilterFromSizeAndConfig($size, $crop);
|
|
|
+
|
|
|
$path = $file->getSlug();
|
|
|
|
|
|
if (!$this->cacheManager->isStored($path, $filterName)) {
|
|
|
try {
|
|
|
- $this->imageFactory->createImageContent($file, $filterName);
|
|
|
+ $this->imageFactory->createImageContent($file, $filterName, $uncropped);
|
|
|
} catch (\Exception $e) {
|
|
|
$path = 'images/missing-file.png';
|
|
|
|
|
|
return $relativePath ? $path : $this->urlBuilder->getAbsoluteUrl($path);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
$url = $this->cacheManager->resolve($path, $filterName);
|
|
|
|
|
|
return $relativePath ? $this->urlBuilder->getRelativeUrl($url) : $url;
|
|
|
@@ -115,18 +119,18 @@ class LocalStorage implements FileStorageInterface
|
|
|
/**
|
|
|
* Retourne le filtre Liip correspondant à la taille désirée.
|
|
|
*/
|
|
|
- protected function getFilterFromSizeAndConfig(string $size, bool $configExist): string
|
|
|
+ protected function getFilterFromSizeAndConfig(string $size, bool $crop = true): string
|
|
|
{
|
|
|
switch ($size) {
|
|
|
case FileSizeEnum::SM->value :
|
|
|
- $filter = $configExist ? self::CROP_SM : self::SM_FOLDER;
|
|
|
+ $filter = $crop ? self::CROP_SM : self::SM_FOLDER;
|
|
|
break;
|
|
|
case FileSizeEnum::MD->value :
|
|
|
default:
|
|
|
- $filter = $configExist ? self::CROP_MD : self::MD_FOLDER;
|
|
|
+ $filter = $crop ? self::CROP_MD : self::MD_FOLDER;
|
|
|
break;
|
|
|
case FileSizeEnum::LG->value :
|
|
|
- $filter = $configExist ? self::CROP_LG : self::LG_FOLDER;
|
|
|
+ $filter = $crop ? self::CROP_LG : self::LG_FOLDER;
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
@@ -192,7 +196,12 @@ class LocalStorage implements FileStorageInterface
|
|
|
throw new \RuntimeException('File has no filename');
|
|
|
}
|
|
|
|
|
|
- $isNewFile = $file->getSlug() === null;
|
|
|
+ try {
|
|
|
+ $isNewFile = $file->getSlug() === null;
|
|
|
+ } catch (\Throwable) {
|
|
|
+ $isNewFile = true; // Catch case where slud has not been initialized
|
|
|
+ }
|
|
|
+
|
|
|
if ($isNewFile) {
|
|
|
// Try to get the Access owner from the organization_id and person_id
|
|
|
$access = null;
|