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