From 7b267da5d6fc5ff1095cfeb3f0ee65a95442d8b4 Mon Sep 17 00:00:00 2001 From: Guillaume Heurtier <guillaume.heurtier@maarch.org> Date: Thu, 20 Feb 2020 10:49:44 +0100 Subject: [PATCH] FEAT #13243 TIME 1:00 added keyword folders to perimeter --- .../folder/controllers/FolderController.php | 26 ++++++------------- .../resource/controllers/ResController.php | 8 +++--- .../controllers/ResourceListController.php | 8 +++--- 3 files changed, 16 insertions(+), 26 deletions(-) diff --git a/src/app/folder/controllers/FolderController.php b/src/app/folder/controllers/FolderController.php index 896dcd1d603..f8808f57745 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 11d6300e9d1..3abdb91464d 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 39e4d7ec1f0..6fa95efe331 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) { -- GitLab