From 4955d0eb0cebea9e56edef21c28b5766baf23c09 Mon Sep 17 00:00:00 2001 From: "florian.azizian" <florian.azizian@maarch.org> Date: Thu, 25 Jul 2019 22:34:34 +0100 Subject: [PATCH] FEAT #11296 TIME 1:30 delete resources folders --- .../folder/controllers/FolderController.php | 25 ++++++++++++++++++- src/app/folder/models/FolderModelAbstract.php | 3 ++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/app/folder/controllers/FolderController.php b/src/app/folder/controllers/FolderController.php index 029a88d7058..5d0758e3033 100755 --- a/src/app/folder/controllers/FolderController.php +++ b/src/app/folder/controllers/FolderController.php @@ -35,8 +35,30 @@ class FolderController { $folders = FolderController::getScopeFolders(['login' => $GLOBALS['userId']]); + $userEntities = EntityModel::getEntitiesByUserId([ + 'select' => ['entities.id'], + 'user_id' => $GLOBALS['userId'] + ]); + + $userEntities = array_column($userEntities, 'id'); + if (empty($userEntities)) { + $userEntities = 0; + } + + $foldersWithResources = FolderModel::getWithEntitiesAndResources([ + 'select' => ['COUNT(resources_folders.folder_id)', 'resources_folders.folder_id'], + 'where' => ['(entities_folders.entity_id in (?) OR folders.user_id = ?)'], + 'data' => [$userEntities, $GLOBALS['id']], + 'groupBy' => ['resources_folders.folder_id'] + ]); + $tree = []; foreach ($folders as $folder) { + $key = array_keys(array_column($foldersWithResources, 'folder_id'), $folder['id']); + $count = 0; + if (isset($key[0])) { + $count = $foldersWithResources[$key[0]]['count']; + } $insert = [ 'name' => $folder['label'], 'id' => $folder['id'], @@ -45,6 +67,7 @@ class FolderController 'user_id' => $folder['user_id'], 'parent_id' => $folder['parent_id'], 'level' => $folder['level'], + 'countResources' => $count ]; if ($folder['level'] == 0) { $tree[] = $insert; @@ -196,7 +219,7 @@ class FolderController 'level' => $level ]); - if ($public) { + if ($public && !empty($data['parent_id'])) { $entitiesSharing = EntityFolderModel::getByFolderId(['folder_id' => $data['parent_id']]); foreach ($entitiesSharing as $entity) { EntityFolderModel::create([ diff --git a/src/app/folder/models/FolderModelAbstract.php b/src/app/folder/models/FolderModelAbstract.php index a6c6bf40ef6..0db2fae9ce8 100755 --- a/src/app/folder/models/FolderModelAbstract.php +++ b/src/app/folder/models/FolderModelAbstract.php @@ -129,7 +129,8 @@ class FolderModelAbstract 'table' => ['folders', 'entities_folders', 'resources_folders'], 'left_join' => ['folders.id = entities_folders.folder_id', 'folders.id = resources_folders.folder_id'], 'where' => empty($args['where']) ? [] : $args['where'], - 'data' => empty($args['data']) ? [] : $args['data'] + 'data' => empty($args['data']) ? [] : $args['data'], + 'groupBy' => empty($args['groupBy']) ? [] : $args['groupBy'] ]); return $folders; -- GitLab