mirror of
https://git.meshkee.com/cssd/cssd-back.git
synced 2026-10-10 20:01:07 +03:30
88 lines
2.4 KiB
PHP
88 lines
2.4 KiB
PHP
<?php
|
|
|
|
namespace App\Services\Media;
|
|
|
|
use App\FakeModel;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
|
|
class MediaHelper
|
|
{
|
|
public static function moveMediaTo($model) {
|
|
|
|
request()->validate([
|
|
'file_batch_id' => 'nullable|string',
|
|
]);
|
|
|
|
if ($fakeModel = FakeModel::where('batch_id', request('file_batch_id'))->first()) {
|
|
foreach($fakeModel->getMedia('temp_medias') as $media) {
|
|
if(substr($media->mime_type, 0, 5) == 'image') {
|
|
dd($model,$media);
|
|
$media->move($model, 'images');
|
|
} else {
|
|
$media->move($model, 'files');
|
|
}
|
|
}
|
|
$fakeModel->delete();
|
|
}
|
|
|
|
}
|
|
|
|
public static function storeMediaFor(Model $model, string $batchId = null)
|
|
{
|
|
if (is_null($batchId)) {
|
|
$batchId = request()->input('file_batch_id');
|
|
}
|
|
|
|
$modelName = self::getNamespaceMap($model);
|
|
|
|
if ($fakeModel = FakeModel::where('batch_id', $batchId)->where('model_name', $modelName)->first()) {
|
|
|
|
foreach($fakeModel->media()->get() as $media) {
|
|
$media->move($model, $media->collection_name);
|
|
}
|
|
|
|
$fakeModel->delete();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
private static function getNamespaceMap(Model $model)
|
|
{
|
|
return $model->getMorphClass();
|
|
}
|
|
|
|
public static function moveTinyMCEMediaTo($model) {
|
|
|
|
request()->validate([
|
|
'tinymce_batch_id' => 'nullable|string',
|
|
]);
|
|
|
|
if ($fakeModel = FakeModel::where('batch_id', request('tinymce_batch_id'))->first()) {
|
|
foreach($fakeModel->getMedia('temp_medias') as $media) {
|
|
if(substr($media->mime_type, 0, 5) == 'image') {
|
|
$media->assign($model, 'tinymce_images');
|
|
} else {
|
|
$media->assign($model, 'temp_medias');
|
|
}
|
|
}
|
|
$fakeModel->delete();
|
|
}
|
|
|
|
}
|
|
|
|
public static function loadMedia($model, ...$collections) {
|
|
$model->loadMissing(['media' => function($query) use ($collections) {
|
|
$query->select('*');
|
|
if (! empty($collections)) {
|
|
$query->whereIn('collection_name', $collections);
|
|
}
|
|
}]);
|
|
if ($model->media) {
|
|
foreach ($model->media as $media) {
|
|
$media->address = $media->getUrl();
|
|
}
|
|
}
|
|
}
|
|
}
|