Files
opensem/app/Repositories/Core/Medias.php

128 lines
3.2 KiB
PHP

<?php
namespace App\Repositories\Core;
class Medias
{
public static function getImage($model, $conversion = 'normal', $collection = 'images')
{
$img = $model->getMedia($collection)->first();
return $img ? $img->getUrl($conversion) : false;
}
public static function getImages($model)
{
if (! $model) {
return false;
}
$model->getMedia();
foreach ($model->media as $key => $media) {
$model->media[$key]['url'] = $media->getUrl();
}
return $model->media;
}
public static function storeImages($model, $files)
{
if ($files) {
foreach ($files as $file) {
self::storeImage($model, $file);
}
}
}
public static function storeImage($model, $file, $collection = 'images')
{
return $model->addMedia($file)->sanitizingFileName(function ($fileName) {
return str_replace(['#', '/', '\\', ' '], '-', $fileName);
})->toMediaCollection($collection);
}
public static function deleteImages($model, $collection = 'images')
{
$ret = $model->clearMediaCollection($collection);
return true;
}
public static function deleteImage($model, $index)
{
$model->getMedia();
$ret = $model->media[$index]->delete();
return true;
}
public static function buildURL($image, $conversion = '')
{
return self::getPath($image).self::getConversion($image, $conversion);
}
public static function getPath($image)
{
$model = basename(str_replace('\\', '/', $image->model_type));
return '/storage/'.$model.'/'.$image->collection_name.'/'.$image->id;
}
public static function getConversion($image, $conversion = '')
{
return $conversion ? '/conversions/'.$image->name.'-'.$conversion.'.jpg' : $image->file_name;
}
public static function getExtension($filename)
{
return '.'.pathinfo($filename, PATHINFO_EXTENSION);
}
public static function getImageSrc($image)
{
if (! $image) {
return null;
}
$id = $image['id'];
$filename = self::getFilename($image);
return "/storage/{$id}/{$filename}";
}
public static function getThumbSrc($image)
{
return self::getSrcByType($image, 'thumb');
}
public static function getPreviewSrc($image)
{
return self::getSrcByType($image, 'preview');
}
public static function getNormalSrc($image)
{
return self::getSrcByType($image, 'normal');
}
public static function getZoomSrc($image)
{
return self::getSrcByType($image, 'zoom');
}
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);
}
}