Multi-images component, refactoring medias functions

This commit is contained in:
Ludovic CANDELLIER
2022-04-16 19:33:17 +02:00
parent 1dc815bf39
commit fe1e14d2c0
16 changed files with 559 additions and 9192 deletions

View File

@@ -51,7 +51,7 @@ class Species
public static function get($id)
{
return Specie::with('tags.group')->findOrFail($id);
return Specie::with('tags.tag_group')->findOrFail($id);
}
public static function storeFull($data)

View File

@@ -48,7 +48,7 @@ class Varieties
public static function get($id)
{
return Variety::with('tags.group')->findOrFail($id);
return Variety::with('tags.tag_group')->findOrFail($id);
}
public static function getFull($id)

View File

@@ -0,0 +1,10 @@
<?php
namespace App\Repositories\Core;
use App\Traits\Repository\Imageable;
class Images
{
use Imageable;
}

View File

@@ -80,33 +80,38 @@ class Medias
return null;
}
$id = $image['id'];
$image['name'] = str_replace(['#', '/', '\\', ' '], '-', $image['name']);
$filename = $image['name'] . self::getExtension($image['file_name']);
$filename = self::getFilename($image);
return "/storage/$id/$filename";
}
public static function getThumbSrc($image)
{
if (!$image) {
return null;
}
$id = $image['id'];
$image['name'] = str_replace(['#', '/', '\\', ' '], '-', $image['name']);
$filename = $image['name'] . '-thumb' . self::getExtension($image['file_name']);
return "/storage/$id/conversions/$filename";
return self::getSrcByType($image, 'thumb');
}
public static function getPreviewSrc($image)
{
if (!$image) {
return null;
}
$id = $image['id'];
$image['name'] = str_replace(['#', '/', '\\', ' '], '-', $image['name']);
$filename = $image['name'] . '-preview' . self::getExtension($image['file_name']);
return self::getSrcByType($image, 'preview');
}
return "/storage/$id/conversions/$filename";
public static function getNormalSrc($image)
{
return self::getSrcByType($image, 'normal');
}
public static function getSrcByType($image, $type)
{
return $image ? '/storage/' . $image['id'] . '/conversions/' . self::getFilename($image, $type) : false;
}
public static function getFilename($image, $type = false)
{
$image['name'] = self::convertName($image['name']);
return $image['name'] . ($type ? '-' . $type : '') . self::getExtension($image['file_name']);
}
public static function convertName($name)
{
return str_replace(['#', '/', '\\', ' '], '-', $name);
}
}

View File

@@ -82,9 +82,10 @@ class Articles
$data = $article->toArray();
$parents = self::getInheritedByProduct($article->product_id, $article->product_type);
$data['description'] = self::getFullDescriptionByArticle($article);
$image = self::getFullImageByArticle($article);
$data['image'] = self::getPreviewSrc($image);
$data['image_big'] = self::getImageSrc($image);
$images = self::getFullImagesByArticle($article);
$data['image'] = self::getPreviewSrc($images[0] ?? false);
$data['images'] = $images;
$data['image_big'] = self::getImageSrc($images[0] ?? false);
$data['inherited'] = self::getInherited($id);
$data['categories'] = self::getCategoriesNameByArticle($article);
$data['tags'] = self::getTagsSlugByArticle($article);
@@ -233,7 +234,7 @@ class Articles
public static function getInherited($id)
{
$article = Article::with('product.tags.group')->findOrFail($id);
$article = Article::with('product.tags.tag_group')->findOrFail($id);
$product_type = $article->product_type;
switch ($product_type) {
case 'App\Models\Botanic\Variety':
@@ -406,24 +407,23 @@ class Articles
public static function getFullImagesByArticle($article)
{
$images = count($article->images) ? $article->images : collect([]);
switch ($article->product_type) {
case 'App\Models\Botanic\Variety':
$variety = $article->product;
$specie = $variety->specie;
$images = count($variety->images) ? $variety->images : [];
$images = count($specie->images) ? $images->push($specie->images) : $images;
$images = $variety ? (count($variety->images) ? $images->merge($variety->images) : $images) : $images;
$images = $specie ? (count($specie->images) ? $images->merge($specie->images) : $images) : $images;
break;
case 'App\Models\Botanic\Specie':
$specie = $article->product;
$images = count($specie->images) ? $specie->images : [];
$images = count($specie->images) ? $specie->images : $images;
break;
case 'App\Models\Shop\Merchandise':
$merchandise = $article->product;
$images = count($merchandise->images) ? $merchandise->images : [];
$images = count($merchandise->images) ? $merchandise->images : $images;
break;
default:
$images = [];
}
$images = count($article->images) ? $images->push($article->images) : $images;
return $images;
}