From b8c49b992ee2e0bb41e8c21b6650350cd48a8f18 Mon Sep 17 00:00:00 2001 From: "florian.azizian" <florian.azizian@maarch.org> Date: Thu, 19 Sep 2019 09:28:45 +0100 Subject: [PATCH] FEAT #11279 TIME 2 actions list for indexing --- rest/index.php | 3 ++ .../action/controllers/ActionController.php | 4 +- src/app/group/models/GroupModelAbstract.php | 15 +++++++ .../controllers/IndexingController.php | 43 +++++++++++++++++++ 4 files changed, 62 insertions(+), 3 deletions(-) create mode 100755 src/app/resource/controllers/IndexingController.php diff --git a/rest/index.php b/rest/index.php index 0cd7ef9fac0..c07d0dda54b 100755 --- a/rest/index.php +++ b/rest/index.php @@ -307,6 +307,9 @@ $app->get('/natures', \Resource\controllers\ResController::class . ':getNatures' $app->get('/resources/{resId}/isAllowed', \Resource\controllers\ResController::class . ':isAllowedForCurrentUser'); $app->post('/resources/checkFileUpload', \Resource\controllers\StoreController::class . ':checkFileUpload'); +//Indexing +$app->get('/indexing/{groupId}/actions', \Resource\controllers\IndexingController::class . ':getIndexingActions'); + //ResourcesList $app->get('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}', \Resource\controllers\ResourceListController::class . ':get'); $app->get('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/actions', \Resource\controllers\ResourceListController::class . ':getActions'); diff --git a/src/app/action/controllers/ActionController.php b/src/app/action/controllers/ActionController.php index 4f9d52e1526..0df80360e68 100755 --- a/src/app/action/controllers/ActionController.php +++ b/src/app/action/controllers/ActionController.php @@ -258,9 +258,7 @@ class ActionController $obj['action']['id_status'] = '_NOSTATUS_'; $obj['categoriesList'] = ResModel::getCategories(); - foreach ($obj['categoriesList'] as $key => $value) { - $obj['action']['actionCategories'][] = $value['id']; - } + $obj['action']['actionCategories'] = array_column($obj['categoriesList'], 'id'); $obj['statuses'] = StatusModel::get(); array_unshift($obj['statuses'], ['id'=>'_NOSTATUS_','label_status'=> _UNCHANGED]); diff --git a/src/app/group/models/GroupModelAbstract.php b/src/app/group/models/GroupModelAbstract.php index 532f811e5e3..baa7d04b69a 100755 --- a/src/app/group/models/GroupModelAbstract.php +++ b/src/app/group/models/GroupModelAbstract.php @@ -216,6 +216,21 @@ abstract class GroupModelAbstract return $allGroups; } + public static function getGroupByLogin(array $aArgs = []) + { + ValidatorModel::notEmpty($aArgs, ['login', 'groupId']); + ValidatorModel::stringType($aArgs, ['login', 'groupId']); + + $aGroups = DatabaseModel::select([ + 'select' => empty($aArgs['select']) ? ['*'] : $aArgs['select'], + 'table' => ['usergroup_content, usergroups'], + 'where' => ['usergroup_content.group_id = usergroups.group_id', 'usergroup_content.user_id = ?', 'usergroups.id = ?'], + 'data' => [$aArgs['login'], $aArgs['groupId']] + ]); + + return $aGroups; + } + public static function getSecurityByGroupId(array $aArgs = []) { ValidatorModel::notEmpty($aArgs, ['groupId']); diff --git a/src/app/resource/controllers/IndexingController.php b/src/app/resource/controllers/IndexingController.php new file mode 100755 index 00000000000..76b902624f0 --- /dev/null +++ b/src/app/resource/controllers/IndexingController.php @@ -0,0 +1,43 @@ +<?php + +/** +* Copyright Maarch since 2008 under licence GPLv3. +* See LICENCE.txt file at the root folder for more details. +* This file is part of Maarch software. +* +*/ + +/** +* @brief Indexing Controller +* @author dev@maarch.org +*/ + +namespace Resource\controllers; + +use Action\models\ActionModel; +use Group\models\GroupModel; +use Slim\Http\Request; +use Slim\Http\Response; + +class IndexingController +{ + public function getIndexingActions(Request $request, Response $response, array $aArgs) + { + $group = GroupModel::getGroupByLogin(['login' => $GLOBALS['userId'], 'groupId' => $aArgs['groupId'], 'select' => ['can_index', 'indexation_parameters']]); + if (empty($group)) { + return $response->withStatus(403)->withJson(['errors' => 'This user is not in this group']); + } + if (!$group[0]['can_index']) { + return $response->withStatus(403)->withJson(['errors' => 'This group can not index document']); + } + + $group[0]['indexation_parameters'] = json_decode($group[0]['indexation_parameters'], true); + + $actions = []; + foreach ($group[0]['indexation_parameters']['actions'] as $value) { + $actions[] = ActionModel::getById(['id' => $value, 'select' => ['id', 'label_action', 'component']]); + } + + return $response->withJson(['actions' => $actions]); + } +} -- GitLab