From da6f8acf5839b06b20c94d5ac9f03111d5136321 Mon Sep 17 00:00:00 2001
From: Damien <damien.burel@maarch.org>
Date: Mon, 22 Jul 2019 16:03:31 +0200
Subject: [PATCH] FEAT #11266 TIME 1:30 Shortcuts home

---
 src/app/group/controllers/GroupController.php | 24 +++++++------
 src/app/user/models/UserModelAbstract.php     |  2 +-
 src/core/controllers/CoreController.php       | 36 +++++++++++++------
 3 files changed, 41 insertions(+), 21 deletions(-)

diff --git a/src/app/group/controllers/GroupController.php b/src/app/group/controllers/GroupController.php
index 0713b8f3c8f..f76ccf3f867 100755
--- a/src/app/group/controllers/GroupController.php
+++ b/src/app/group/controllers/GroupController.php
@@ -280,24 +280,28 @@ class GroupController
         $set = [];
         $indexationParameters = json_decode($group['indexation_parameters'], true);
 
-        if (!empty($body['canIndex']) && is_bool($body['canIndex'])) {
+        if (isset($body['canIndex']) && is_bool($body['canIndex'])) {
             $set['can_index'] = $body['canIndex'] ? 'true' : 'false';
         }
-        if (!empty($body['actions']) && is_array($body['actions'])) {
-            $countActions = ActionModel::get(['select' => ['count(1)'], 'where' => ['id in (?)'], 'data' => [$body['actions']]]);
-            if ($countActions[0]['count'] != count($body['actions'])) {
-                return $response->withStatus(400)->withJson(['errors' => 'Body actions contains invalid actions']);
+        if (isset($body['actions']) && is_array($body['actions'])) {
+            if (!empty($body['actions'])) {
+                $countActions = ActionModel::get(['select' => ['count(1)'], 'where' => ['id in (?)'], 'data' => [$body['actions']]]);
+                if ($countActions[0]['count'] != count($body['actions'])) {
+                    return $response->withStatus(400)->withJson(['errors' => 'Body actions contains invalid actions']);
+                }
             }
             $indexationParameters['actions'] = $body['actions'];
         }
-        if (!empty($body['entities']) && is_array($body['entities'])) {
-            $countEntities = EntityModel::get(['select' => ['count(1)'], 'where' => ['id in (?)'], 'data' => [$body['entities']]]);
-            if ($countEntities[0]['count'] != count($body['entities'])) {
-                return $response->withStatus(400)->withJson(['errors' => 'Body entities contains invalid entities']);
+        if (isset($body['entities']) && is_array($body['entities'])) {
+            if (!empty($body['entities'])) {
+                $countEntities = EntityModel::get(['select' => ['count(1)'], 'where' => ['id in (?)'], 'data' => [$body['entities']]]);
+                if ($countEntities[0]['count'] != count($body['entities'])) {
+                    return $response->withStatus(400)->withJson(['errors' => 'Body entities contains invalid entities']);
+                }
             }
             $indexationParameters['entities'] = $body['entities'];
         }
-        if (!empty($body['keywords']) && is_array($body['keywords'])) {
+        if (isset($body['keywords']) && is_array($body['keywords'])) {
             $indexationParameters['keywords'] = $body['keywords'];
         }
         $set['indexation_parameters'] = json_encode($indexationParameters);
diff --git a/src/app/user/models/UserModelAbstract.php b/src/app/user/models/UserModelAbstract.php
index fdf0702ce0f..7f1830e3438 100755
--- a/src/app/user/models/UserModelAbstract.php
+++ b/src/app/user/models/UserModelAbstract.php
@@ -422,7 +422,7 @@ abstract class UserModelAbstract
         ValidatorModel::stringType($aArgs, ['userId']);
 
         $aGroups = DatabaseModel::select([
-            'select'    => ['usergroups.id', 'usergroup_content.group_id', 'usergroups.group_desc', 'usergroup_content.primary_group', 'usergroup_content.role', 'security.maarch_comment', 'security.where_clause'],
+            'select'    => ['usergroups.id', 'usergroups.can_index', 'usergroup_content.group_id', 'usergroups.group_desc', 'usergroup_content.primary_group', 'usergroup_content.role', 'security.maarch_comment', 'security.where_clause'],
             'table'     => ['usergroup_content, usergroups, security'],
             'where'     => ['usergroup_content.group_id = usergroups.group_id', 'usergroup_content.user_id = ?','usergroups.group_id = security.group_id'],
             'data'      => [$aArgs['userId']]
diff --git a/src/core/controllers/CoreController.php b/src/core/controllers/CoreController.php
index 63d9d54d58b..2cd812e0d0a 100755
--- a/src/core/controllers/CoreController.php
+++ b/src/core/controllers/CoreController.php
@@ -85,6 +85,10 @@ class CoreController
         $user['entities'] = UserModel::getEntitiesById(['userId' => $GLOBALS['userId']]);
         $user['indexingGroups'] = [];
 
+        $shortcuts = [
+            ['id' => 'home']
+        ];
+
         if ($GLOBALS['userId'] == 'superadmin') {
             $menu = ServiceModel::getApplicationServicesByXML(['type' => 'menu']);
             foreach ($menu as $key => $value) {
@@ -96,20 +100,32 @@ class CoreController
             $menu = array_merge($menu, $menuModules);
         } else {
             $menu = ServiceController::getMenuServicesByUserId(['userId' => $GLOBALS['userId']]);
-            foreach ($menu as $value) {
-                if ($value['id'] == 'index_mlb') {
-                    foreach ($user['groups'] as $group) {
-                        if (GroupBasketModel::hasBasketByGroupId(['groupId' => $group['group_id'], 'basketId' => 'IndexingBasket'])) {
-                            $user['indexingGroups'][] = ['groupId' => $group['group_id'], 'label' => $group['group_desc']];
-                        }
-                    }
-                }
+        }
+
+        foreach ($menu as $value) {
+            if ($value['id'] == 'admin') {
+                $shortcuts[] = ['id' => 'administration'];
+            } elseif ($value['id'] == 'adv_search_mlb') {
+                $shortcuts[] = ['id' => 'search'];
+            }
+        }
+        $indexingGroups = [];
+        foreach ($user['groups'] as $group) {
+            if ($group['can_index']) {
+                $indexingGroups[] = ['id' => $group['id'], 'label' => $group['group_desc']];
             }
         }
+        if (!empty($indexingGroups)) {
+            $shortcuts[] = [
+                'id'        => 'indexing',
+                'groups'    => $indexingGroups
+            ];
+        }
 
         return $response->withJson([
-            'user'  => $user,
-            'menu'  => $menu
+            'user'      => $user,
+            'menu'      => $menu,
+            'shortcuts' => $shortcuts
         ]);
     }
 
-- 
GitLab