mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-18 00:02:15 +00:00
trash api update
This commit is contained in:
@@ -2,57 +2,54 @@
|
||||
namespace Domain\Trash\Controllers;
|
||||
|
||||
use Domain\Files\Models\File;
|
||||
use Illuminate\Http\Response;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Domain\Folders\Models\Folder;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
|
||||
class DumpTrashController extends Controller
|
||||
{
|
||||
public function __invoke(): Response
|
||||
public function __invoke(): JsonResponse
|
||||
{
|
||||
abort_if(
|
||||
is_demo_account(),
|
||||
204,
|
||||
'Done.'
|
||||
);
|
||||
$successMessage = [
|
||||
'type' => 'success',
|
||||
'message' => 'The trash was successfully dumped.',
|
||||
];
|
||||
|
||||
$user_id = Auth::id();
|
||||
|
||||
// Get files and folders
|
||||
$folders = Folder::onlyTrashed()
|
||||
->where('user_id', $user_id)
|
||||
->get();
|
||||
|
||||
$files = File::onlyTrashed()
|
||||
->where('user_id', $user_id)
|
||||
->get();
|
||||
|
||||
// Force delete folder
|
||||
$folders->each->forceDelete();
|
||||
|
||||
// Force delete files
|
||||
foreach ($files as $file) {
|
||||
// Delete file
|
||||
Storage::delete("/files/$user_id/{$file->basename}");
|
||||
|
||||
// Delete thumbnail if exist
|
||||
if ($file->thumbnail) {
|
||||
collect([
|
||||
config('vuefilemanager.image_sizes.later'),
|
||||
config('vuefilemanager.image_sizes.immediately'),
|
||||
])->collapse()
|
||||
->each(function ($size) use ($file) {
|
||||
Storage::delete("/files/$file->user_id/{$size['name']}-{$file->basename}");
|
||||
});
|
||||
}
|
||||
|
||||
// Delete file permanently
|
||||
$file->forceDelete();
|
||||
if (is_demo_account()) {
|
||||
return response()->json($successMessage);
|
||||
}
|
||||
|
||||
// Delete folders
|
||||
Folder::onlyTrashed()
|
||||
->where('user_id', auth()->id())
|
||||
->cursor()
|
||||
->each(fn($folder) => $folder->forceDelete());
|
||||
|
||||
// Delete files
|
||||
File::onlyTrashed()
|
||||
->where('user_id', auth()->id())
|
||||
->cursor()
|
||||
->each(function ($file) {
|
||||
// Delete file
|
||||
Storage::delete("/files/$file->user_id/$file->basename");
|
||||
|
||||
// Delete thumbnail if exist
|
||||
if ($file->thumbnail) {
|
||||
collect([
|
||||
config('vuefilemanager.image_sizes.later'),
|
||||
config('vuefilemanager.image_sizes.immediately'),
|
||||
])->collapse()
|
||||
->each(function ($size) use ($file) {
|
||||
Storage::delete("/files/$file->user_id/{$size['name']}-$file->basename");
|
||||
});
|
||||
}
|
||||
|
||||
// Delete file permanently
|
||||
$file->forceDelete();
|
||||
});
|
||||
|
||||
// Return response
|
||||
return response('Done.', 204);
|
||||
return response()->json($successMessage);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user