mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-18 00:02:15 +00:00
added it_delete_multiple_folder_softly
This commit is contained in:
@@ -188,8 +188,7 @@ class EditItemsController extends Controller
|
||||
return Demo::response_204();
|
||||
}
|
||||
|
||||
foreach ($request->input('data') as $file) {
|
||||
$unique_id = $file['unique_id'];
|
||||
foreach ($request->input('items') as $file) {
|
||||
|
||||
// Check permission to delete item for authenticated editor
|
||||
if ($request->user()->tokenCan('editor')) {
|
||||
@@ -204,18 +203,18 @@ class EditItemsController extends Controller
|
||||
$shared = get_shared($request->cookie('shared_token'));
|
||||
|
||||
// Get file|folder item
|
||||
$item = get_item($file['type'], $unique_id, Auth::id());
|
||||
$item = get_item($file['type'], $file['id']);
|
||||
|
||||
// Check access to requested directory
|
||||
if ($file['type'] === 'folder') {
|
||||
Guardian::check_item_access($item->unique_id, $shared);
|
||||
Guardian::check_item_access($item->id, $shared);
|
||||
} else {
|
||||
Guardian::check_item_access($item->folder_id, $shared);
|
||||
}
|
||||
}
|
||||
|
||||
// Delete item
|
||||
Editor::delete_item($file, $unique_id);
|
||||
Editor::delete_item($file, $file['id']);
|
||||
}
|
||||
|
||||
return response(null, 204);
|
||||
|
||||
@@ -12,6 +12,7 @@ use App\Models\Zip;
|
||||
use Aws\Exception\MultipartUploadException;
|
||||
use Aws\S3\MultipartUploader;
|
||||
use Carbon\Carbon;
|
||||
use DB;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\File;
|
||||
@@ -269,30 +270,24 @@ class Editor
|
||||
/**
|
||||
* Delete file or folder
|
||||
*
|
||||
* @param $request
|
||||
* @param $unique_id
|
||||
* @param $item
|
||||
* @param $id
|
||||
* @param null $shared
|
||||
* @throws \Exception
|
||||
*/
|
||||
public static function delete_item($file, $unique_id, $shared = null)
|
||||
public static function delete_item($item, $id, $shared = null)
|
||||
{
|
||||
// Get user id
|
||||
$user = is_null($shared) ? Auth::user() : User::findOrFail($shared->user_id);
|
||||
|
||||
// Delete folder
|
||||
if ($file['type'] === 'folder') {
|
||||
if ($item['type'] === 'folder') {
|
||||
|
||||
// Get folder
|
||||
$folder = Folder::withTrashed()
|
||||
->with(['folders'])
|
||||
->where('user_id', $user->id)
|
||||
->where('unique_id', $unique_id)
|
||||
->first();
|
||||
->with('folders')
|
||||
->find($id);
|
||||
|
||||
// Get folder shared record
|
||||
$shared = Share::where('user_id', $user->id)
|
||||
->where('type', '=', 'folder')
|
||||
->where('item_id', $unique_id)
|
||||
$shared = Share::where('type', 'folder')
|
||||
->where('item_id', $id)
|
||||
->first();
|
||||
|
||||
// Delete folder shared record
|
||||
@@ -300,8 +295,20 @@ class Editor
|
||||
$shared->delete();
|
||||
}
|
||||
|
||||
// Soft delete items
|
||||
if (! $item['force_delete']) {
|
||||
|
||||
// Remove folder from user favourites
|
||||
DB::table('favourite_folder')
|
||||
->where('folder_id', $folder->id)
|
||||
->delete();
|
||||
|
||||
// Soft delete folder record
|
||||
$folder->delete();
|
||||
}
|
||||
|
||||
// Force delete children files
|
||||
if ($file['force_delete']) {
|
||||
if ($item['force_delete']) {
|
||||
|
||||
// Get children folder ids
|
||||
$child_folders = filter_folders_ids($folder->trashed_folders, 'unique_id');
|
||||
@@ -328,20 +335,10 @@ class Editor
|
||||
// Delete folder record
|
||||
$folder->forceDelete();
|
||||
}
|
||||
|
||||
// Soft delete items
|
||||
if (!$file['force_delete']) {
|
||||
|
||||
// Remove folder from user favourites
|
||||
$user->favourite_folders()->detach($unique_id);
|
||||
|
||||
// Soft delete folder record
|
||||
$folder->delete();
|
||||
}
|
||||
}
|
||||
|
||||
// Delete item
|
||||
if ($file['type'] !== 'folder') {
|
||||
if ($item['type'] !== 'folder') {
|
||||
|
||||
// Get file
|
||||
$item = File::withTrashed()
|
||||
|
||||
@@ -93,7 +93,7 @@ Route::group(['middleware' => ['auth:sanctum']], function () {
|
||||
// Edit items
|
||||
Route::patch('/rename/{id}', [EditItemsController::class, 'user_rename_item']);
|
||||
Route::post('/create-folder', [EditItemsController::class, 'user_create_folder']);
|
||||
Route::post('/remove-item', [EditItemsController::class, 'user_delete_item']);
|
||||
Route::post('/remove', [EditItemsController::class, 'user_delete_item']);
|
||||
Route::post('/zip', [EditItemsController::class, 'user_zip_multiple_files']);
|
||||
Route::get('/zip-folder/{unique_id}', [EditItemsController::class, 'user_zip_folder']);
|
||||
Route::post('/upload', [EditItemsController::class, 'user_upload']);
|
||||
|
||||
@@ -174,7 +174,6 @@ class FolderTest extends TestCase
|
||||
$this->assertEquals(
|
||||
$root->id, Folder::find($children->id)->parent_id
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -202,19 +201,55 @@ class FolderTest extends TestCase
|
||||
]);
|
||||
}
|
||||
|
||||
public function it_zip_and_download_folder_with_content_within()
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function it_delete_multiple_folder_softly()
|
||||
{
|
||||
$user = User::factory(User::class)
|
||||
->create();
|
||||
|
||||
}
|
||||
$folder_1 = Folder::factory(Folder::class)
|
||||
->create();
|
||||
|
||||
public function it_delete_single_folder()
|
||||
{
|
||||
$folder_2 = Folder::factory(Folder::class)
|
||||
->create();
|
||||
|
||||
}
|
||||
$user->favourite_folders()->attach($folder_1->id);
|
||||
$user->favourite_folders()->attach($folder_2->id);
|
||||
|
||||
public function it_delete_multiple_folder()
|
||||
{
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
$this->postJson("/api/remove", [
|
||||
'items' => [
|
||||
[
|
||||
'id' => $folder_1->id,
|
||||
'type' => 'folder',
|
||||
'force_delete' => false,
|
||||
],
|
||||
[
|
||||
'id' => $folder_2->id,
|
||||
'type' => 'folder',
|
||||
'force_delete' => false,
|
||||
],
|
||||
],
|
||||
])->assertStatus(204);
|
||||
|
||||
$this->assertSoftDeleted('folders', [
|
||||
'id' => $folder_1->id,
|
||||
]);
|
||||
|
||||
$this->assertSoftDeleted('folders', [
|
||||
'id' => $folder_2->id,
|
||||
]);
|
||||
|
||||
$this->assertDatabaseMissing('favourite_folder', [
|
||||
'folder_id' => $folder_1->id,
|
||||
]);
|
||||
|
||||
$this->assertDatabaseMissing('favourite_folder', [
|
||||
'folder_id' => $folder_2->id,
|
||||
]);
|
||||
}
|
||||
|
||||
public function it_delete_folder_softly()
|
||||
@@ -236,4 +271,9 @@ class FolderTest extends TestCase
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public function it_zip_and_download_folder_with_content_within()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user