From 1dcf792a710a9112325dfc13afff0ec12d670901 Mon Sep 17 00:00:00 2001 From: Damien <damien.burel@maarch.org> Date: Fri, 15 Mar 2019 14:03:05 +0100 Subject: [PATCH] FEAT #9685 Redirect without mode --- rest/index.php | 3 +- sql/data_en.sql | 5 +- sql/data_fr.sql | 5 +- .../PreProcessActionController.php | 137 +++++++++--------- 4 files changed, 69 insertions(+), 81 deletions(-) diff --git a/rest/index.php b/rest/index.php index 2400a0ea101..214ea7a0d96 100755 --- a/rest/index.php +++ b/rest/index.php @@ -216,7 +216,6 @@ $app->get('/listTemplates/types/{typeId}/roles', \Entity\controllers\ListTemplat $app->put('/listTemplates/types/{typeId}/roles', \Entity\controllers\ListTemplateController::class . ':updateTypeRoles'); //Notes -$app->get('/res/{resId}/notes/templates', \Note\controllers\NoteController::class . ':getTemplatesByResId'); $app->get('/notes/templates', \Note\controllers\NoteController::class . ':getTemplates'); $app->get('/res/{resId}/notes', \Note\controllers\NoteController::class . ':getByResId'); $app->post('/res/{resId}/notes', \Note\controllers\NoteController::class . ':create'); @@ -278,7 +277,7 @@ $app->get('/resourcesList/exportTemplate', \Resource\controllers\ExportControlle $app->post('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/acknowledgementReceipt', \AcknowledgementReceipt\controllers\AcknowledgementReceiptController::class . ':createPaperAcknowledgement'); //PreProcess $app->post('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/checkAcknowledgementReceipt', \Action\controllers\PreProcessActionController::class . ':checkAcknowledgementReceipt'); -$app->get('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/actions/{actionId}/getRedirect/{mode}', \Action\controllers\PreProcessActionController::class . ':getRedirectInformations'); +$app->get('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/actions/{actionId}/getRedirect', \Action\controllers\PreProcessActionController::class . ':getRedirectInformations'); //SignatureBook $app->get('/signatureBook/users/{userId}/groups/{groupId}/baskets/{basketId}/resources', \SignatureBook\controllers\SignatureBookController::class . ':getResources'); diff --git a/sql/data_en.sql b/sql/data_en.sql index 26b63013f59..635f99e83ea 100644 --- a/sql/data_en.sql +++ b/sql/data_en.sql @@ -566,7 +566,6 @@ TRUNCATE TABLE listmodels; DELETE FROM entities WHERE entity_id = 'ACME'; INSERT INTO entities (entity_id, entity_label, short_label, enabled, adrs_1, adrs_2, adrs_3, zipcode, city, country, email, business_id, parent_entity_id, entity_type) VALUES ('ACME', 'ACME – A Company that Makes Everything', 'ACME – A Company that Makes Everything', 'Y', '', '', '', '', '', '', 'info@maarch.org', '', '', 'Direction'); DELETE FROM listmodels WHERE object_id = 'ACME' AND object_type = 'entity_id'; -INSERT INTO listmodels (object_id, object_type, "sequence", item_id, item_type, item_mode, title, description, process_comment, visible) VALUES ('ACME', 'entity_id', 0, '', 'user_id', 'dest', 'ACME – A Company that Makes Everything','ACME – A Company that Makes Everything', '', 'Y'); DELETE FROM entities WHERE entity_id = 'CAB'; INSERT INTO entities (entity_id, entity_label, short_label, enabled, adrs_1, adrs_2, adrs_3, zipcode, city, country, email, business_id, parent_entity_id, entity_type) VALUES ('CAB', 'Presidency', 'Presidency', 'Y', '', '', '', '', '', '', 'info@maarch.org', '', 'ACME', 'Direction'); DELETE FROM listmodels WHERE object_id = 'CAB' AND object_type = 'entity_id'; @@ -660,11 +659,9 @@ INSERT INTO listmodels (object_id, object_type, "sequence", item_id, item_type, DELETE FROM entities WHERE entity_id = 'ELUS'; INSERT INTO entities (entity_id, entity_label, short_label, enabled, adrs_1, adrs_2, adrs_3, zipcode, city, country, email, business_id, parent_entity_id, entity_type) VALUES ('ELUS', 'Board', 'Board', 'Y', '', '', '', '', '', '', 'info@maarch.org', '', 'ACME', 'Direction'); DELETE FROM listmodels WHERE object_id = 'ELUS' AND object_type = 'entity_id'; -INSERT INTO listmodels (object_id, object_type, "sequence", item_id, item_type, item_mode, title, description, process_comment, visible) VALUES ('ELUS', 'entity_id', 0, '', 'user_id', 'dest', 'Board','Board', '', 'Y'); DELETE FROM entities WHERE entity_id = 'ACME_FC'; INSERT INTO entities (entity_id, entity_label, short_label, enabled, adrs_1, adrs_2, adrs_3, zipcode, city, country, email, business_id, parent_entity_id, entity_type) VALUES ('ACME_FC', 'ACME Football Club', 'ACME Football Club', 'Y', '', '', '', '', '', '', 'info@maarch.org', '', '', 'Direction'); DELETE FROM listmodels WHERE object_id = 'ACME_FC' AND object_type = 'entity_id'; -INSERT INTO listmodels (object_id, object_type, "sequence", item_id, item_type, item_mode, title, description, process_comment, visible) VALUES ('ACME_FC', 'entity_id', 0, '', 'user_id', 'dest', 'ACME Football Club','ACME Football Club', '', 'Y'); -- Create BASKETS TRUNCATE TABLE baskets; @@ -1028,7 +1025,7 @@ INSERT INTO parameters (id, param_value_string, param_value_int, param_value_dat INSERT INTO parameters (id, param_value_string, param_value_int, param_value_date) VALUES ('folder_id_increment', '', 200, NULL); INSERT INTO parameters (id, param_value_string, param_value_int, param_value_date) VALUES ('work_batch_autoimport_id', NULL, 1, NULL); INSERT INTO parameters (id, param_value_string, param_value_int, param_value_date) VALUES ('postindexing_workbatch', NULL, 1, NULL); -INSERT INTO parameters (id, param_value_string, param_value_int, param_value_date) VALUES ('database_version', '18.10.1', NULL, NULL); +INSERT INTO parameters (id, param_value_string, param_value_int, param_value_date) VALUES ('database_version', '19.04.1', NULL, NULL); INSERT INTO parameters (id, param_value_string, param_value_int, param_value_date) VALUES ('user_quota', '', 0, NULL); INSERT INTO parameters (id, description, param_value_string, param_value_int, param_value_date) VALUES ('defaultDepartment', 'Département par défaut sélectionné dans le formulaire des adresses', NULL, 75, NULL); INSERT INTO parameters (id, description, param_value_string) VALUES ('homepage_message', 'Texte apparaissant dans la bannière sur la page d''accueil, mettre un espace pour supprimer la bannière.', 'Bienvenue dans votre <b>G</b>estion <b>E</b>lectronique du <b>C</b>ourrier.'); diff --git a/sql/data_fr.sql b/sql/data_fr.sql index c26fc047c3f..7eb561dd0e0 100755 --- a/sql/data_fr.sql +++ b/sql/data_fr.sql @@ -698,7 +698,6 @@ TRUNCATE TABLE listmodels; DELETE FROM entities WHERE entity_id = 'VILLE'; INSERT INTO entities (entity_id, entity_label, short_label, enabled, adrs_1, adrs_2, adrs_3, zipcode, city, country, email, business_id, parent_entity_id, entity_type) VALUES ('VILLE', 'Ville de Maarch-les-bains', 'Ville de Maarch-les-bains', 'Y', '', '', '', '', '', '', 'info@maarch.org', '', '', 'Direction'); DELETE FROM listmodels WHERE object_id = 'VILLE' AND object_type = 'entity_id'; -INSERT INTO listmodels (object_id, object_type, "sequence", item_id, item_type, item_mode, title, description, process_comment, visible) VALUES ('VILLE', 'entity_id', 0, '', 'user_id', 'dest', 'Ville de Maarch-les-bains','Ville de Maarch-les-bains', '', 'Y'); DELETE FROM entities WHERE entity_id = 'CAB'; INSERT INTO entities (entity_id, entity_label, short_label, enabled, adrs_1, adrs_2, adrs_3, zipcode, city, country, email, business_id, parent_entity_id, entity_type) VALUES ('CAB', 'Cabinet du Maire', 'Cabinet du Maire', 'Y', '', '', '', '', '', '', 'info@maarch.org', '', 'VILLE', 'Direction'); DELETE FROM listmodels WHERE object_id = 'CAB' AND object_type = 'entity_id'; @@ -792,11 +791,9 @@ INSERT INTO listmodels (object_id, object_type, "sequence", item_id, item_type, DELETE FROM entities WHERE entity_id = 'ELUS'; INSERT INTO entities (entity_id, entity_label, short_label, enabled, adrs_1, adrs_2, adrs_3, zipcode, city, country, email, business_id, parent_entity_id, entity_type) VALUES ('ELUS', 'Ensemble des élus', 'ELUS:Ensemble des élus', 'Y', '', '', '', '', '', '', 'info@maarch.org', '', 'VILLE', 'Direction'); DELETE FROM listmodels WHERE object_id = 'ELUS' AND object_type = 'entity_id'; -INSERT INTO listmodels (object_id, object_type, "sequence", item_id, item_type, item_mode, title, description, process_comment, visible) VALUES ('ELUS', 'entity_id', 0, '', 'user_id', 'dest', 'ELUS:Ensemble des élus','ELUS:Ensemble des élus', '', 'Y'); DELETE FROM entities WHERE entity_id = 'CCAS'; INSERT INTO entities (entity_id, entity_label, short_label, enabled, adrs_1, adrs_2, adrs_3, zipcode, city, country, email, business_id, parent_entity_id, entity_type) VALUES ('CCAS', 'Centre Communal d''Action Sociale', 'Centre Communal d''Action Sociale', 'Y', '', '', '', '', '', '', 'info@maarch.org', '', '', 'Direction'); DELETE FROM listmodels WHERE object_id = 'CCAS' AND object_type = 'entity_id'; -INSERT INTO listmodels (object_id, object_type, "sequence", item_id, item_type, item_mode, title, description, process_comment, visible) VALUES ('CCAS', 'entity_id', 0, '', 'user_id', 'dest', 'Centre Communal d''Action Sociale','Centre Communal d''Action Sociale', '', 'Y'); -- Create BASKETS TRUNCATE TABLE baskets; @@ -1166,7 +1163,7 @@ INSERT INTO parameters (id, param_value_string, param_value_int, param_value_dat INSERT INTO parameters (id, description, param_value_string, param_value_int, param_value_date) VALUES ('defaultDepartment', 'Département par défaut sélectionné dans le formulaire des adresses', NULL, 75, NULL); INSERT INTO parameters (id, description, param_value_string) VALUES ('homepage_message', 'Texte apparaissant dans la bannière sur la page d''accueil, mettre un espace pour supprimer la bannière.', 'Bienvenue dans votre <b>G</b>estion <b>E</b>lectronique du <b>C</b>ourrier.'); INSERT INTO parameters (id, description, param_value_string) VALUES ('thumbnailsSize', 'Taille des imagettes', '750x900'); -INSERT INTO parameters (id, description, param_value_int) VALUES ('keepDestForRedirection', 'Si activé (1), mets le destinataire en copie de la liste de diffusion lors d''une action de redirection', 0); +INSERT INTO parameters (id, description, param_value_int) VALUES ('keepDestForRedirection', 'Si activé (1), met le destinataire en copie de la liste de diffusion lors d''une action de redirection', 0); ------------ --DIFFLIST_TYPES ------------ diff --git a/src/app/action/controllers/PreProcessActionController.php b/src/app/action/controllers/PreProcessActionController.php index aa79ab03d03..40653b68250 100644 --- a/src/app/action/controllers/PreProcessActionController.php +++ b/src/app/action/controllers/PreProcessActionController.php @@ -59,94 +59,89 @@ class PreProcessActionController 'SAME_LEVEL_ENTITIES' => '@sisters_entities[@my_primary_entity]' ]; - if ($args['mode'] == 'users') { - $mode = 'USERS'; - } else { - $mode = 'ENTITY'; - } + $users = []; + $allEntities = []; + + foreach (['ENTITY', 'USERS'] as $mode) { + + $entityRedirects = GroupBasketRedirectModel::get([ + 'select' => ['entity_id', 'keyword'], + 'where' => ['basket_id = ?', 'group_id = ?', 'action_id = ?', 'redirect_mode = ?'], + 'data' => [$basket['basket_id'], $group['group_id'], $args['actionId'], $mode] + ]); - $entityRedirects = GroupBasketRedirectModel::get([ - 'select' => ['entity_id', 'keyword'], - 'where' => ['basket_id = ?', 'group_id = ?', 'action_id = ?', 'redirect_mode = ?'], - 'data' => [$basket['basket_id'], $group['group_id'], $args['actionId'], $mode] - ]); - - $allowedEntities = []; - $clauseToProcess = ''; - foreach ($entityRedirects as $entityRedirect) { - if (!empty($entityRedirect['entity_id'])) { - $allowedEntities[] = $entityRedirect['entity_id']; - } elseif (!empty($entityRedirect['keyword'])) { - if (!empty($keywords[$entityRedirect['keyword']])) { - if (!empty($clauseToProcess)) { - $clauseToProcess .= ', '; + $allowedEntities = []; + $clauseToProcess = ''; + foreach ($entityRedirects as $entityRedirect) { + if (!empty($entityRedirect['entity_id'])) { + $allowedEntities[] = $entityRedirect['entity_id']; + } elseif (!empty($entityRedirect['keyword'])) { + if (!empty($keywords[$entityRedirect['keyword']])) { + if (!empty($clauseToProcess)) { + $clauseToProcess .= ', '; + } + $clauseToProcess .= $keywords[$entityRedirect['keyword']]; } - $clauseToProcess .= $keywords[$entityRedirect['keyword']]; } } - } - if (!empty($clauseToProcess)) { - $preparedClause = PreparedClauseController::getPreparedClause(['clause' => $clauseToProcess, 'login' => $user['user_id']]); - $preparedEntities = EntityModel::get(['select' => ['entity_id'], 'where' => ['enabled = ?', "entity_id in {$preparedClause}"], 'data' => ['Y']]); - foreach ($preparedEntities as $preparedEntity) { - $allowedEntities[] = $preparedEntity['entity_id']; + if (!empty($clauseToProcess)) { + $preparedClause = PreparedClauseController::getPreparedClause(['clause' => $clauseToProcess, 'login' => $user['user_id']]); + $preparedEntities = EntityModel::get(['select' => ['entity_id'], 'where' => ['enabled = ?', "entity_id in {$preparedClause}"], 'data' => ['Y']]); + foreach ($preparedEntities as $preparedEntity) { + $allowedEntities[] = $preparedEntity['entity_id']; + } } - } - $allowedEntities = array_unique($allowedEntities); - - $redirectInformations = []; - if ($args['mode'] == 'users') { - $users = []; - if (!empty($allowedEntities)) { - $users = UserEntityModel::getWithUsers([ - 'select' => ['DISTINCT users.id', 'users.user_id', 'firstname', 'lastname'], - 'where' => ['users_entities.entity_id in (?)', 'status not in (?)'], - 'data' => [$allowedEntities, ['DEL', 'ABS']], - 'orderBy' => ['lastname', 'firstname'] - ]); + $allowedEntities = array_unique($allowedEntities); - foreach ($users as $key => $user) { - $users[$key]['labelToDisplay'] = "{$user['firstname']} {$user['lastname']}"; - } - } - $redirectInformations['users'] = $users; - } else { - $primaryEntity = UserModel::getPrimaryEntityByUserId(['userId' => $GLOBALS['userId']]); - - $allEntities = EntityModel::get(['select' => ['id', 'entity_id', 'entity_label', 'parent_entity_id'], 'where' => ['enabled = ?'], 'data' => ['Y'], 'orderBy' => ['parent_entity_id']]); - foreach ($allEntities as $key => $value) { - $allEntities[$key]['id'] = $value['entity_id']; - $allEntities[$key]['serialId'] = $value['id']; - if (empty($value['parent_entity_id'])) { - $allEntities[$key]['parent'] = '#'; - $allEntities[$key]['icon'] = "fa fa-building"; - } else { - $allEntities[$key]['parent'] = $value['parent_entity_id']; - $allEntities[$key]['icon'] = "fa fa-sitemap"; + if ($mode == 'USERS') { + if (!empty($allowedEntities)) { + $users = UserEntityModel::getWithUsers([ + 'select' => ['DISTINCT users.id', 'users.user_id', 'firstname', 'lastname'], + 'where' => ['users_entities.entity_id in (?)', 'status not in (?)'], + 'data' => [$allowedEntities, ['DEL', 'ABS']], + 'orderBy' => ['lastname', 'firstname'] + ]); + + foreach ($users as $key => $user) { + $users[$key]['labelToDisplay'] = "{$user['firstname']} {$user['lastname']}"; + $users[$key]['descriptionToDisplay'] = UserModel::getPrimaryEntityByUserId(['userId' => $user['user_id']])['entity_label']; + } } - if (in_array($value['entity_id'], $allowedEntities)) { - $allEntities[$key]['allowed'] = true; - $allEntities[$key]['state']['opened'] = true; - if ($primaryEntity['entity_id'] == $value['entity_id']) { - $allEntities[$key]['state']['selected'] = true; + } elseif ($mode == 'ENTITY') { + $primaryEntity = UserModel::getPrimaryEntityByUserId(['userId' => $GLOBALS['userId']]); + + $allEntities = EntityModel::get(['select' => ['id', 'entity_id', 'entity_label', 'parent_entity_id'], 'where' => ['enabled = ?'], 'data' => ['Y'], 'orderBy' => ['parent_entity_id']]); + foreach ($allEntities as $key => $value) { + $allEntities[$key]['id'] = $value['entity_id']; + $allEntities[$key]['serialId'] = $value['id']; + if (empty($value['parent_entity_id'])) { + $allEntities[$key]['parent'] = '#'; + $allEntities[$key]['icon'] = "fa fa-building"; + } else { + $allEntities[$key]['parent'] = $value['parent_entity_id']; + $allEntities[$key]['icon'] = "fa fa-sitemap"; } - } else { - $allEntities[$key]['allowed'] = false; - $allEntities[$key]['state']['disabled'] = true; $allEntities[$key]['state']['opened'] = false; + if (in_array($value['entity_id'], $allowedEntities)) { + $allEntities[$key]['allowed'] = true; + if ($primaryEntity['entity_id'] == $value['entity_id']) { + $allEntities[$key]['state']['opened'] = true; + $allEntities[$key]['state']['selected'] = true; + } + } else { + $allEntities[$key]['allowed'] = false; + $allEntities[$key]['state']['disabled'] = true; + } + $allEntities[$key]['text'] = $value['entity_label']; } - $allEntities[$key]['text'] = $value['entity_label']; } - $redirectInformations['entities'] = $allEntities; } $parameter = ParameterModel::getById(['select' => ['param_value_int'], 'id' => 'keepDestForRedirection']); - $redirectInformations['keepDestForRedirection'] = !empty($parameter['param_value_int']); - - return $response->withJson($redirectInformations); + return $response->withJson(['entities' => $allEntities, 'users' => $users, 'keepDestForRedirection' => !empty($parameter['param_value_int'])]); } public function checkAcknowledgementReceipt(Request $request, Response $response, array $aArgs) -- GitLab