From 29870dafee23dd4337400a3eabd8cb3a54c2e26a Mon Sep 17 00:00:00 2001 From: Guillaume Heurtier <guillaume.heurtier@maarch.org> Date: Fri, 25 Oct 2019 18:03:28 +0200 Subject: [PATCH] FEAT #11454 TIME 2:30 unsharing folder unpin folder if necessary --- .../folder/controllers/FolderController.php | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/src/app/folder/controllers/FolderController.php b/src/app/folder/controllers/FolderController.php index d4eb11933bc..f97a25d06f1 100755 --- a/src/app/folder/controllers/FolderController.php +++ b/src/app/folder/controllers/FolderController.php @@ -35,6 +35,7 @@ use Slim\Http\Response; use SrcCore\controllers\PreparedClauseController; use SrcCore\models\DatabaseModel; use SrcCore\models\ValidatorModel; +use User\models\UserEntityModel; use User\models\UserModel; class FolderController @@ -342,7 +343,7 @@ class FolderController 'data' => [$args['folderId']] ]); - if (!empty($args['remove'])) { + if (!empty($entitiesToRemove)) { EntityFolderModel::delete(['entity_id' => $entitiesToRemove, 'folder_id' => $args['folderId']]); } if (!empty($args['add'])) { @@ -355,6 +356,41 @@ class FolderController } } + $entitiesOfFolder = EntityFolderModel::getByFolderId([ + 'select' => ['entities.entity_id'], + 'folder_id' => $args['folderId'] + ]); + $entitiesOfFolder = array_column($entitiesOfFolder, 'entity_id'); + + $users = UserPinnedFolderModel::get([ + 'select' => ['user_id'], + 'where' => ['folder_id = ?'], + 'data' => [$args['folderId']] + ]); + + if (!empty($users) && empty($entitiesOfFolder)) { + UserPinnedFolderModel::delete([ + 'where' => ['folder_id = ?', 'user_id != ?'], + 'data' => [$args['folderId'], $folder[0]['user_id']] + ]); + } else { + foreach ($users as $user) { + if ($user['user_id'] != $folder[0]['user_id']) { + $inEntities = UserEntityModel::getWithUsers([ + 'select' => ['users.id'], + 'where' => ['users.id = ?', 'entity_id in (?)'], + 'data' => [$user['user_id'], $entitiesOfFolder] + ]); + if (empty($inEntities)) { + UserPinnedFolderModel::delete([ + 'where' => ['folder_id = ?', 'user_id = ?'], + 'data' => [$args['folderId'], $user['user_id']] + ]); + } + } + } + } + $folderChild = FolderModel::getChild(['id' => $args['folderId'], 'select' => ['id']]); if (!empty($folderChild)) { foreach ($folderChild as $child) { -- GitLab