akaunting/app/Traits/Uploads.php

98 lines
2.2 KiB
PHP
Raw Normal View History

2017-09-14 22:21:00 +03:00
<?php
namespace App\Traits;
2021-02-10 12:08:39 +03:00
use App\Models\Common\Media as MediaModel;
2021-04-16 00:59:43 +03:00
use MediaUploader;
2017-12-28 17:20:16 +03:00
2017-09-14 22:21:00 +03:00
trait Uploads
{
public function getUploadedFilePath($file, $folder = 'settings', $company_id = null)
{
$path = '';
if (!$file || !$file->isValid()) {
return $path;
}
if (!$company_id) {
2021-04-16 00:59:43 +03:00
$company_id = company_id();
2017-09-14 22:21:00 +03:00
}
$file_name = $file->getClientOriginalName();
2017-09-28 18:10:13 +03:00
// Upload file
$file->storeAs($company_id . '/' . $folder, $file_name);
// Prepare db path
$path = $folder . '/' . $file_name;
2017-09-14 22:21:00 +03:00
return $path;
}
2017-12-28 17:20:16 +03:00
2018-01-02 19:00:07 +03:00
public function getMedia($file, $folder = 'settings', $company_id = null)
2017-12-28 17:20:16 +03:00
{
2018-01-02 19:00:07 +03:00
$path = '';
if (!$file || !$file->isValid()) {
return $path;
}
2017-12-28 17:20:16 +03:00
if (!$company_id) {
2021-04-16 00:59:43 +03:00
$company_id = company_id();
2017-12-28 17:20:16 +03:00
}
2018-01-02 16:22:30 +03:00
$path = $company_id . '/' . $folder;
2017-12-28 17:20:16 +03:00
2018-01-02 16:22:30 +03:00
return MediaUploader::fromSource($file)->toDirectory($path)->upload();
2017-12-28 17:20:16 +03:00
}
2019-03-25 16:11:03 +03:00
public function importMedia($file, $folder = 'settings', $company_id = null, $disk = null)
{
$path = '';
if (!$disk) {
$disk = config('mediable.default_disk');
}
if (!$company_id) {
2021-04-16 00:59:43 +03:00
$company_id = company_id();
2019-03-25 16:11:03 +03:00
}
$path = $company_id . '/' . $folder . '/' . basename($file);
return MediaUploader::importPath($disk, $path);
}
2021-02-10 12:08:39 +03:00
public function deleteMediaModel($model, $parameter, $request = null)
{
$medias = $model->$parameter;
if (!$medias) {
return;
}
$already_uploaded = [];
if ($request && isset($request['uploaded_' . $parameter])) {
$uploaded = $request['uploaded_' . $parameter];
if (count($medias) == count($uploaded)) {
return;
}
foreach ($uploaded as $old_media) {
$already_uploaded[] = $old_media['id'];
}
}
foreach ((array)$medias as $media) {
if (in_array($media->id, $already_uploaded)) {
continue;
}
MediaModel::where('id', $media->id)->delete();
}
}
2017-12-28 17:20:16 +03:00
}