diff --git a/src/app/folder/controllers/FolderController.php b/src/app/folder/controllers/FolderController.php index 029a88d705893aaf8a4c78ba3b1ea74879fdfe5a..5d0758e3033ebff25e1535d02c2cf6586b164973 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 a6c6bf40ef6f8db26ef6e2bc862ff100ec76a7a0..0db2fae9ce8e00afe25ac907621ddd4eca731bce 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;