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