diff --git a/src/app/folder/controllers/FolderController.php b/src/app/folder/controllers/FolderController.php index 896dcd1d603a56bec46ea8e0208f231d280ce062..f8808f5774549afef1ad3c73f8ba35686067130c 100755 --- a/src/app/folder/controllers/FolderController.php +++ b/src/app/folder/controllers/FolderController.php @@ -52,8 +52,8 @@ class FolderController $foldersWithResources = FolderModel::getWithEntitiesAndResources([ 'select' => ['COUNT(DISTINCT resources_folders.res_id)', 'resources_folders.folder_id'], - 'where' => ['(entities_folders.entity_id in (?) OR folders.user_id = ?)'], - 'data' => [$userEntities, $GLOBALS['id']], + 'where' => ['(entities_folders.entity_id in (?) OR folders.user_id = ? OR keyword = ?)'], + 'data' => [$userEntities, $GLOBALS['id'], 'ALL_ENTITIES'], 'groupBy' => ['resources_folders.folder_id'] ]); @@ -124,14 +124,14 @@ class FolderController if ($folder['public']) { $entitiesFolder = EntityFolderModel::getEntitiesByFolderId(['folder_id' => $args['id'], 'select' => ['entities_folders.entity_id', 'entities_folders.edition', 'entities.entity_label']]); foreach ($entitiesFolder as $value) { - $canDelete = FolderController::areChildrenInPerimeter(['folderId' => $args['id'], 'entityId' => $value['entity_id']]); + $canDelete = FolderController::areChildrenInPerimeter(['folderId' => $args['id']]); $canDelete = $canDelete && $value['edition'] == true; $folder['sharing']['entities'][] = ['entity_id' => $value['entity_id'], 'edition' => $value['edition'], 'canDelete' => $canDelete, 'label' => $value['entity_label']]; } $keywordsFolder = EntityFolderModel::getKeywordsByFolderId(['folder_id' => $args['id'], 'select' => ['edition', 'keyword']]); foreach ($keywordsFolder as $value) { - $canDelete = FolderController::areChildrenInPerimeter(['folderId' => $args['id'], 'keyword' => $value['keyword']]); + $canDelete = FolderController::areChildrenInPerimeter(['folderId' => $args['id']]); $canDelete = $canDelete && $value['edition'] == true; $folder['sharing']['entities'][] = ['keyword' => $value['keyword'], 'edition' => $value['edition'], 'canDelete' => $canDelete]; } @@ -539,8 +539,7 @@ class FolderController public static function areChildrenInPerimeter(array $args = []) { ValidatorModel::notEmpty($args, ['folderId']); - ValidatorModel::intVal($args, ['folderId', 'entityId']); - ValidatorModel::stringType($args, ['keyword']); + ValidatorModel::intVal($args, ['folderId']); $folder = FolderController::getScopeFolders(['login' => $GLOBALS['userId'], 'folderId' => $args['folderId'], 'edition' => true]); if (empty($folder[0])) { @@ -550,14 +549,6 @@ class FolderController $where = ['parent_id = ?']; $data = [$args['folderId']]; - if (!empty($args['entityId'])) { - $where[] = 'entity_id = ?'; - $data[] = $args['entityId']; - } else if (!empty($args['keyword'])) { - $where[] = 'keyword = ?'; - $data[] = $args['keyword']; - } - $children = FolderModel::getWithEntities([ 'select' => ['distinct (folders.id)', 'edition', 'user_id', 'keyword'], 'where' => $where, @@ -566,9 +557,8 @@ class FolderController $allEntitiesCanDelete = false; foreach ($children as $key => $child) { - if ($child['keyword'] == 'ALL_ENTITIES') { + if ($child['keyword'] == 'ALL_ENTITIES' && $child['edition'] == true) { $allEntitiesCanDelete = true; - unset($children[$key]); } } @@ -578,7 +568,7 @@ class FolderController if ($child['user_id'] != $GLOBALS['id'] && ($child['edition'] == false || $child['edition'] == null) && !$allEntitiesCanDelete) { return false; } - if (!FolderController::areChildrenInPerimeter(['folderId' => $child['id'], 'entityId' => $args['entityId'], 'keyword' => $args['keyword']])) { + if (!FolderController::areChildrenInPerimeter(['folderId' => $child['id']])) { return false; } } @@ -1030,7 +1020,7 @@ class FolderController $folders = FolderModel::getWithEntities([ 'select' => ['count(distinct folders.id)'], - 'where' => ['folders.id in (?)', '(user_id = ? OR entity_id in (?))'], + 'where' => ['folders.id in (?)', "(user_id = ? OR entity_id in (?) OR keyword = 'ALL_ENTITIES')"], 'data' => [$args['folders'], $args['userId'], $entities] ]); diff --git a/src/app/resource/controllers/ResController.php b/src/app/resource/controllers/ResController.php index 11d6300e9d11e56a8559485f788705300b89551b..3abdb91464d5a025c30e5d39a4cc9106c9b3afad 100755 --- a/src/app/resource/controllers/ResController.php +++ b/src/app/resource/controllers/ResController.php @@ -217,8 +217,8 @@ class ResController extends ResourceControlController $entities = array_column($entities, 'id'); $folders = FolderModel::getWithEntitiesAndResources([ 'select' => ['distinct(resources_folders.folder_id)'], - 'where' => ['resources_folders.res_id = ?', '(entities_folders.entity_id in (?) OR folders.user_id = ?)'], - 'data' => [$args['resId'], $entities, $GLOBALS['id']] + 'where' => ['resources_folders.res_id = ?', '(entities_folders.entity_id in (?) OR folders.user_id = ? OR keyword = ?)'], + 'data' => [$args['resId'], $entities, $GLOBALS['id'], 'ALL_ENTITIES'] ]); $formattedData['folders'] = array_column($folders, 'folder_id'); @@ -1044,8 +1044,8 @@ class ResController extends ResourceControlController $entities = array_column($entities, 'id'); $idToDelete = FolderModel::getWithEntitiesAndResources([ 'select' => ['resources_folders.id'], - 'where' => ['resources_folders.res_id = ?', '(entities_folders.entity_id in (?) OR folders.user_id = ?)'], - 'data' => [$args['resId'], $entities, $GLOBALS['id']] + 'where' => ['resources_folders.res_id = ?', '(entities_folders.entity_id in (?) OR folders.user_id = ? OR keyword = ?)'], + 'data' => [$args['resId'], $entities, $GLOBALS['id'], 'ALL_ENTITIES'] ]); $idToDelete = array_column($idToDelete, 'id'); if (!empty($idToDelete)) { diff --git a/src/app/resource/controllers/ResourceListController.php b/src/app/resource/controllers/ResourceListController.php index 39e4d7ec1f0b18104ee96adf82dd968df4d81eee..6fa95efe3318b3a726a9a910dbc74f51d240ec2d 100644 --- a/src/app/resource/controllers/ResourceListController.php +++ b/src/app/resource/controllers/ResourceListController.php @@ -740,8 +740,8 @@ class ResourceListController $folders = FolderModel::getWithEntitiesAndResources([ 'select' => ['DISTINCT(folders.id)', 'folders.label'], - 'where' => ['res_id = ?', '(user_id = ? OR entity_id in (?))'], - 'data' => [$args['resId'], $args['userId'], $entities] + 'where' => ['res_id = ?', '(user_id = ? OR entity_id in (?) OR keyword = ?)'], + 'data' => [$args['resId'], $args['userId'], $entities, 'ALL_ENTITIES'] ]); return $folders; @@ -1155,8 +1155,8 @@ class ResourceListController $rawFolders = FolderModel::getWithEntitiesAndResources([ 'select' => ['folders.id', 'folders.label', 'count(resources_folders.res_id) as count'], - 'where' => ['resources_folders.res_id in (?)', '(folders.user_id = ? OR entities_folders.entity_id in (?))'], - 'data' => [$resIds, $GLOBALS['id'], $userEntities], + 'where' => ['resources_folders.res_id in (?)', '(folders.user_id = ? OR entities_folders.entity_id in (?) or keyword = ?)'], + 'data' => [$resIds, $GLOBALS['id'], $userEntities, 'ALL_ENTITIES'], 'groupBy' => ['folders.id', 'folders.label'] ]); foreach ($rawFolders as $key => $value) {