diff --git a/apps/maarch_entreprise/class/class_list_show_Abstract.php b/apps/maarch_entreprise/class/class_list_show_Abstract.php index 1a369e02330339fbdf3e619c448aeecf320fe6fd..2b247c36364b461d9e1eb427f078dd37bbc1cff2 100755 --- a/apps/maarch_entreprise/class/class_list_show_Abstract.php +++ b/apps/maarch_entreprise/class/class_list_show_Abstract.php @@ -1127,34 +1127,7 @@ class list_show_Abstract extends functions $path_ban = preg_replace('/(&(?!amp;))/', '&', $path_ban); $item_mode = null; if ($_REQUEST['page'] == 'users_management_controler') { - //var_dump($result[$theline][0][$key]); - $db = new Database(); - $stmt = $db->query("select item_id, item_mode, entity_id, entity_label from listmodels, entities where item_id = ? and item_mode = 'dest' and listmodels.object_id = entities.entity_id", array($result[$theline][0][$key])); - $entity_label = array(); - while ($res = $stmt->fetchObject()) { - $item_mode = null; - $item_mode = $res->item_mode; - $entity_label[] = addslashes($res->entity_label); - } - if ($item_mode == 'dest') { - ?> - <a href="<?php echo $path_ban.$param_comp; ?>" class="actionList" onclick="alert('<?php echo _THE_USER_JS.$admin_id._PLEASE_CHECK_LISTDIFF; - if (count($entity_label) == 1) { - echo $entity_label[0]; - } else { - for ($i = 0; $i < count($entity_label); ++$i) { - echo $entity_label[$i]; - if ($i < count($entity_label) - 1) { - echo _AND; - } - } - } - - echo ' .'; ?>');"><i class="fa fa-pause fa-2x" title="<?php echo _SUSPEND; ?>"></i></a> - - - <?php - } else { + } else { ?> <a href="<?php echo $path_ban.$param_comp; ?>" class="actionList" onclick="return(confirm('<?php echo _REALLY_SUSPEND.' '; if (isset($page_name) && $page_name == 'users') { diff --git a/migration/19.12/1912-postScript.sql b/migration/19.12/1912-postScript.sql index 4de50d0f6c0944ca432428a5111568b00116a22f..527ff3fbbc69be2167ddfa7c5b54b24ebda2980a 100644 --- a/migration/19.12/1912-postScript.sql +++ b/migration/19.12/1912-postScript.sql @@ -56,6 +56,8 @@ ALTER TABLE priorities DROP COLUMN IF EXISTS default_priority; DROP TABLE IF EXISTS doctypes_indexes; +DROP TABLE IF EXISTS listmodels; + ALTER TABLE res_letterbox DROP COLUMN IF EXISTS custom_t1; ALTER TABLE res_letterbox DROP COLUMN IF EXISTS custom_t2; ALTER TABLE res_letterbox DROP COLUMN IF EXISTS custom_t3; diff --git a/migration/19.12/1912.sql b/migration/19.12/1912.sql index 70160614c07890450c795bb31d066108211f1e25..f8149032943c1a849dadd55aed4d4404d8bf55a0 100644 --- a/migration/19.12/1912.sql +++ b/migration/19.12/1912.sql @@ -553,6 +553,32 @@ UPDATE listmodels SET title = object_id WHERE title IS NULL; UPDATE baskets SET basket_clause = REGEXP_REPLACE(basket_clause, 'coll_id(\s*)=(\s*)''letterbox_coll''(\s*)AND', '', 'gmi') WHERE basket_id in ('CopyMailBasket', 'DdeAvisBasket'); UPDATE baskets SET basket_clause = REGEXP_REPLACE(basket_clause, 'coll_id(\s*)=(\s*)''letterbox_coll''(\s*)and', '', 'gmi') WHERE basket_id in ('CopyMailBasket', 'DdeAvisBasket'); +/* ListTemplates */ +DROP TABLE IF EXISTS list_templates; +CREATE TABLE list_templates +( + id SERIAL NOT NULL, + title text NOT NULL, + description text, + type CHARACTER VARYING(32) NOT NULL, + entity_id INTEGER, + CONSTRAINT list_templates_pkey PRIMARY KEY (id) +) +WITH (OIDS=FALSE); + +DROP TABLE IF EXISTS list_templates_items; +CREATE TABLE list_templates_items +( + id SERIAL NOT NULL, + list_template_id INTEGER NOT NULL, + item_id INTEGER NOT NULL, + item_type CHARACTER VARYING(32) NOT NULL, + item_mode CHARACTER VARYING(64) NOT NULL, + sequence INTEGER NOT NULL, + CONSTRAINT list_templates_items_pkey PRIMARY KEY (id) +) +WITH (OIDS=FALSE); + /* REFACTORING MODIFICATION */ ALTER TABLE notif_email_stack ALTER COLUMN attachments TYPE text; diff --git a/migration/19.12/migrate.sh b/migration/19.12/migrate.sh index 3d720e9319921b149d09e795f7c462576cfc71b0..1d82adc5576a5046270a479853ed1fc070f73596 100755 --- a/migration/19.12/migrate.sh +++ b/migration/19.12/migrate.sh @@ -10,6 +10,7 @@ php ./migrateFolders.php php ./migrateFullText.php php ./migrateRedirectKeywords.php php ./migrateIndexing.php +php ./migrateListTemplates.php php ./migrateServicesEntities.php php ./migrateMenuEntities.php php ./removeProcessModes.php diff --git a/migration/19.12/migrateListTemplates.php b/migration/19.12/migrateListTemplates.php new file mode 100644 index 0000000000000000000000000000000000000000..f9b59ec7f6fbc6ef3b1681ee5d28b210b991f584 --- /dev/null +++ b/migration/19.12/migrateListTemplates.php @@ -0,0 +1,96 @@ +<?php + +require '../../vendor/autoload.php'; + +chdir('../..'); + +$customs = scandir('custom'); +foreach ($customs as $custom) { + if ($custom == 'custom.xml' || $custom == '.' || $custom == '..') { + continue; + } + + $migrated = 0; + + \SrcCore\models\DatabasePDO::reset(); + new \SrcCore\models\DatabasePDO(['customId' => $custom]); + + $listModels = \SrcCore\models\DatabaseModel::select([ + 'select' => ['*'], + 'table' => ['listmodels'], + 'order_by' => ['sequence', 'id'] + ]); + + $formattedListModels = []; + foreach ($listModels as $listModel) { + $formattedId = $listModel['object_id'].$listModel['object_type']; + if (empty($formattedListModels[$formattedId])) { + $formattedListModels[$formattedId] = [ + 'object_id' => $listModel['object_id'], + 'object_type' => $listModel['object_type'], + 'title' => $listModel['title'], + 'description' => $listModel['description'], + 'items' => [$listModel] + ]; + } else { + $formattedListModels[$formattedId]['items'][] = $listModel; + } + } + + foreach ($formattedListModels as $value) { + $entityId = null; + if (strpos($value['object_id'], 'VISA_CIRCUIT_') === false && strpos($value['object_id'], 'AVIS_CIRCUIT_') === false) { + $entity = \Entity\models\EntityModel::getByEntityId(['entityId' => $value['object_id'], 'select' => ['id']]); + $entityId = $entity['id']; + } + + $type = $value['object_type'] == 'entity_id' ? 'diffusionList' : ($value['object_type'] == 'VISA_CIRCUIT' ? 'visaCircuit' : 'opinionCircuit'); + if (!empty($value['title'])) { + $title = $value['title']; + } elseif (!empty($value['description'])) { + $title = $value['description']; + } else { + $title = $value['object_id']; + } + if (!empty($value['title'])) { + $title = $value['title']; + } elseif (!empty($value['description'])) { + $title = $value['description']; + } else { + $title = $value['object_id']; + } + + $listTemplateId = \Entity\models\ListTemplateModel::create([ + 'title' => $title, + 'description' => $value['description'], + 'type' => $type, + 'entity_id' => $entityId + ]); + + foreach ($value['items'] as $key => $item) { + if (empty($item['item_id'])) { + continue; + } + if ($item['item_type'] == 'user_id') { + $itemId = \User\models\UserModel::getByLogin(['login' => $item['item_id'], 'select' => ['id']]); + } else { + $itemId = \Entity\models\EntityModel::getByEntityId(['entityId' => $item['item_id'], 'select' => ['id']]); + } + if (empty($itemId['id'])) { + continue; + } + + \Entity\models\ListTemplateItemModel::create([ + 'list_template_id' => $listTemplateId, + 'item_id' => $itemId['id'], + 'item_type' => $item['item_type'] == 'user_id' ? 'user' : 'entity', + 'item_mode' => $item['item_mode'], + 'sequence' => $key + ]); + } + + ++$migrated; + } + + printf("Migration List templates (CUSTOM {$custom}) : " . $migrated . " modèles de listes trouvé(s) et migré(s).\n"); +} diff --git a/modules/avis/class/avis_controler_Abstract.php b/modules/avis/class/avis_controler_Abstract.php index 1f3cf5ba997cc5ba8c2b6cde0c233fa1c6778274..272d86a6d91831bca80236beffd9fdb387b64f22 100755 --- a/modules/avis/class/avis_controler_Abstract.php +++ b/modules/avis/class/avis_controler_Abstract.php @@ -79,15 +79,9 @@ abstract class avis_controler_Abstract $str .= '$j("#avisUserList").chosen({width: "250px", disable_search_threshold: 10});'; $str .= '</script>'; - include_once 'modules/entities/class/class_manage_listdiff.php'; - $diff_list = new diffusion_list(); - $listModels = $diff_list->select_listmodels($typeList); $str .= ' <select data-placeholder="'._ADD_AVIS_MODEL.'" name="modelList" id="modelList" onchange="loadAvisModelUsers();">'; $str .= '<option value=""></option>'; - foreach ($listModels as $lm) { - $str .= '<option value="'.$lm['object_id'].'">'.$lm['title'].'</option>'; - } $str .= '</select>'; $str .= '<script>'; @@ -253,15 +247,6 @@ abstract class avis_controler_Abstract public function saveModelWorkflow($id_list, $workflow, $typeList, $title) { - require_once 'modules/entities/class/class_manage_listdiff.php'; - $diff_list = new diffusion_list(); - - $diff_list->save_listmodel( - $workflow, - $typeList, - $id_list, - $title - ); } public function saveWorkflow($res_id, $coll_id, $workflow, $typeList) diff --git a/modules/avis/load_listmodel_avis.php b/modules/avis/load_listmodel_avis.php deleted file mode 100755 index d354c9ec77b82746bf580a9991439232b44d9320..0000000000000000000000000000000000000000 --- a/modules/avis/load_listmodel_avis.php +++ /dev/null @@ -1,135 +0,0 @@ -<?php -/** -* File : load_listmodel_avis.php -* -* Script called by an ajax object load list avis during -* avis workflow -* -* @package maarch -* @version 1 -* @since 01/2016 -* @license GPL v3 -* @author Alex Orluc <dev@maarch.org> -*/ -require_once 'modules/entities/class/class_manage_listdiff.php'; -require_once "modules" . DIRECTORY_SEPARATOR . "avis" . DIRECTORY_SEPARATOR - . "class" . DIRECTORY_SEPARATOR - . "avis_controler.php"; - - - $db = new Database(); - $core = new core_tools(); - $core->load_lang(); - $diffList = new diffusion_list(); - - $objectType = $_REQUEST['objectType']; - $objectId = $_REQUEST['objectId']; - $origin = 'avis'; - - // Get listmodel_parameters - $_SESSION[$origin]['difflist_type'] = $diffList->get_difflist_type($objectType); - - if ($objectId <> '') { - $_SESSION[$origin]['difflist_object']['object_id'] = $objectId; - if ($objectType == 'entity_id') { - $stmt = $db->query("select entity_label from entities where entity_id = ?",array($objectId)); - $res = $stmt->fetchObject(); - if ($res->entity_label <> '') { - $_SESSION[$origin]['difflist_object']['object_label'] = $res->entity_label; - } - } - } - - // Fill session with listmodel - $_SESSION[$origin]['diff_list'] = $diffList->get_listmodel($objectType, $objectId); - $_SESSION[$origin]['diff_list']['difflist_type'] = $_SESSION[$origin]['diff_list']['object_type']; - $roles = $diffList->list_difflist_roles(); - $circuit = $_SESSION[$origin]['diff_list']; - if (!isset($circuit['avis']['users'])){ - echo "{status : 1, error_txt : 'Modèle inexistant'}"; - exit(); - } - if ( $circuit['object_type'] == 'AVIS_CIRCUIT'){ - $id_tab="tab_avisSetWorkflow"; - $id_form="form_avisSetWorkflow"; - } - - $content = ""; - - $content .= '<thead><tr>'; - $content .= '<th style="width:40%;" align="left" valign="bottom"><span>Avis</span></th>'; - $content .= '<th style="width:5%;"></th>'; - $content .= '<th style="width:5%;"></th>'; - $content .= '<th style="width:5%;"></th>'; - $content .= '<th style="width:5%;"></th>'; - $content .= '<th style="width:45%;" align="left" valign="bottom"><span>Consigne</span></th>'; - $content .= '<th style="width:0;display:none" align="left" valign="bottom"></th>'; - $content .= '<th style="width:0;display:none" align="center" valign="bottom"></th>'; - - $content .= '</tr></thead>'; - $content .= '<tbody>'; - $color = ""; - $avis = new avis_controler(); - if (isset($circuit['avis']['users'])){ - foreach($circuit['avis']['users'] as $seq=>$step){ - if($color == ' class="col"') { - $color = ''; - } else { - $color = ' class="col"'; - } - - $content .= '<tr ' . $color . '>'; - $content .= '<td>'; - - $content .= '<span id="avis_rank_' . $seq . '"> <span class="nbResZero" style="font-weight:bold;opacity:0.5;">'. ($seq + 1) .'</span> </span>'; - $content .= '<select id="avis_'.$seq.'" name="avis_'.$seq.'" >'; - $content .= '<option value="" >Sélectionnez un utilisateur</option>'; - - $tab_userentities = $avis->getEntityAvis(); - $tab_users = $avis->getUsersAvis(); - - /** Order by parent entity **/ - foreach ($tab_userentities as $key => $value) { - $content .= '<optgroup label="'.$tab_userentities[$key]['entity_id'].'">'; - foreach($tab_users as $user){ - if($tab_userentities[$key]['entity_id'] == $user['entity_id']){ - $selected = " "; - if ($user['id'] == $step['user_id']) - $selected = " selected"; - $content .= '<option value="'.$user['id'].'" '.$selected.'>'.$user['lastname'].', '.$user['firstname'].'</option>'; - } - - } - $content .= '</optgroup>'; - } - $content .= "</select>"; - $content .= "<span id=\"lastAvis_" . $seq . "\">"; - $content .= "</span></td>"; - - $up = ' style="visibility:visible"'; - $down = ' style="visibility:visible"'; - if ($seq == count ($circuit['avis']['users'])-1){ - $add = ' style="visibility:visible"'; - $down = ' style="visibility:hidden"'; - } else { - $add = ' style="visibility:hidden"'; - } - if ($seq == 0) - $up = ' style="visibility:hidden"'; - - $content .= '<td><a href="javascript://" '.$down.' id="avis_down_'.$seq.'" name="avis_down_'.$seq.'" onclick="deplacerLigneAvis(this.parentNode.parentNode.rowIndex, this.parentNode.parentNode.rowIndex+2,\''.$id_tab.'\')" ><i class="fa fa-arrow-down fa-2x"></i></a></td>'; - $content .= '<td><a href="javascript://" '.$up.' id="avis_up_'.$seq.'" name="avis_up_'.$seq.'" onclick="deplacerLigneAvis(this.parentNode.parentNode.rowIndex, this.parentNode.parentNode.rowIndex-1,\''.$id_tab.'\')" ><i class="fa fa-arrow-up fa-2x"></i></a></td>'; - $content .= '<td><a href="javascript://" onclick="delRowAvis(this.parentNode.parentNode.rowIndex,\''.$id_tab.'\')" id="avis_suppr_'.$j.'" name="avis_suppr_'.$j.'" style="visibility:visible;" ><i class="fa fa-user-times fa-2x"></i></a></td>'; - $content .= '<td><a href="javascript://" '.$add.' id="avis_add_'.$seq.'" name="avis_add_'.$seq.'" onclick="addRowAvis(\''.$id_tab.'\')" ><i class="fa fa-user-plus fa-2x"></i></a></td>'; - $content .= '<td><input type="text" id="avis_consigne_'.$seq.'" name="avis_consigne_'.$seq.'" value="'.$step['process_comment'].'" onmouseover="setTitle(this);" style="width:95%;"/></td>'; - $content .= '<td style="display:none"><input type="hidden" value="'.$step['process_date'].'" id="avis_date_'.$seq.'" name="avis_date_'.$seq.'"/></td>'; - $content .= '<td style="display:none"><input type="checkbox" style="visibility:hidden" id="avis_isSign_'.$seq.'" name="avis_isSign_'.$seq.'" /></td>'; - $content .= '<td><i class="fa fa-plus fa-lg" title="Nouvel utilisateur ajouté"></i></td>'; - $content .= "</tr>"; - } - } - - $content .= '</tbody>'; - - echo "{status : 0, div_content : '" . addslashes($content.'<br>') . "'}"; - exit(); diff --git a/modules/avis/load_listmodel_avis_popup.php b/modules/avis/load_listmodel_avis_popup.php deleted file mode 100755 index d38a483e46d04bb371e060238ab3b3d318590fbf..0000000000000000000000000000000000000000 --- a/modules/avis/load_listmodel_avis_popup.php +++ /dev/null @@ -1,139 +0,0 @@ -<?php -/** -* File : load_listmodel_avis.php. -* -* Script called by an ajax object load list avis during -* avis workflow -* -* @version 1 -* -* @since 01/2016 -* -* @license GPL v3 -* @author Alex Orluc <dev@maarch.org> -*/ -require_once 'modules/entities/class/class_manage_listdiff.php'; -require_once 'modules'.DIRECTORY_SEPARATOR.'avis'.DIRECTORY_SEPARATOR - .'class'.DIRECTORY_SEPARATOR - .'avis_controler.php'; - - $db = new Database(); - $core = new core_tools(); - $core->load_lang(); - $diffList = new diffusion_list(); - - $objectType = $_REQUEST['objectType']; - $objectId = $_REQUEST['objectId']; - $origin = 'avis'; - - // Get listmodel_parameters - $_SESSION[$origin]['difflist_type'] = $diffList->get_difflist_type($objectType); - - if ($objectId != '') { - $_SESSION[$origin]['difflist_object']['object_id'] = $objectId; - if ($objectType == 'entity_id') { - $stmt = $db->query('select entity_label from entities where entity_id = ?', array($objectId)); - $res = $stmt->fetchObject(); - if ($res->entity_label != '') { - $_SESSION[$origin]['difflist_object']['object_label'] = $res->entity_label; - } - } - } - - // Fill session with listmodel - $_SESSION[$origin]['diff_list'] = $diffList->get_listmodel($objectType, $objectId); - $_SESSION[$origin]['diff_list']['difflist_type'] = $_SESSION[$origin]['diff_list']['object_type']; - $roles = $diffList->list_difflist_roles(); - $circuit = $_SESSION[$origin]['diff_list']; - if (!isset($circuit['avis']['users'])) { - echo "{status : 1, error_txt : 'Modèle inexistant'}"; - exit(); - } - if ($circuit['object_type'] == 'AVIS_CIRCUIT') { - $id_tab = 'tab_avisSetWorkflowPopup'; - $id_form = 'form_avisSetWorkflowPopup'; - } - - $content = ''; - - $content .= '<thead><tr>'; - $content .= '<th style="width:40%;" align="left" valign="bottom"><span>Avis</span></th>'; - $content .= '<th style="width:5%;"></th>'; - $content .= '<th style="width:5%;"></th>'; - $content .= '<th style="width:5%;"></th>'; - $content .= '<th style="width:5%;"></th>'; - $content .= '<th style="width:45%;" align="left" valign="bottom"><span>Consigne</span></th>'; - $content .= '<th style="width:0;display:none" align="left" valign="bottom"></th>'; - $content .= '<th style="width:0;display:none" align="center" valign="bottom"></th>'; - - $content .= '</tr></thead>'; - $content .= '<tbody>'; - $color = ''; - $avis = new avis_controler(); - if (isset($circuit['avis']['users'])) { - foreach ($circuit['avis']['users'] as $seq => $step) { - if ($color == ' class="col"') { - $color = ''; - } else { - $color = ' class="col"'; - } - - $content .= '<tr '.$color.'>'; - $content .= '<td>'; - - $content .= '<span id="avisPopup_rank_'.$seq.'"> <span class="nbResZero" style="font-weight:bold;opacity:0.5;">'.($seq + 1).'</span> </span>'; - $content .= '<select id="avisPopup_'.$seq.'" name="avisPopup_'.$seq.'" >'; - $content .= '<option value="" >Sélectionnez un utilisateur</option>'; - - $tab_userentities = $avis->getEntityAvis(); - $tab_users = $avis->getUsersAvis(); - - /* Order by parent entity **/ - foreach ($tab_userentities as $key => $value) { - $content .= '<optgroup label="'.$tab_userentities[$key]['entity_id'].'">'; - foreach ($tab_users as $user) { - if ($tab_userentities[$key]['entity_id'] == $user['entity_id']) { - $selected = ' '; - if ($user['id'] == $step['user_id']) { - $selected = ' selected'; - } - $content .= '<option value="'.$user['id'].'" '.$selected.'>'.$user['lastname'].', '.$user['firstname'].'</option>'; - } - } - $content .= '</optgroup>'; - } - $content .= '</select>'; - $content .= '<span id="lastAvisPopup_'.$seq.'">'; - if (empty($circuit['sign']['users']) && $seq == count($circuit['avis']['users']) - 1) { - $content .= ' <i title="'._LAST_AVIS.'" style="color : #F99830" class="fa fa-certificate fa-lg fa-fw"></i>'; - } - $content .= '</span></td>'; - - $up = ' style="visibility:visible"'; - $down = ' style="visibility:visible"'; - if ($seq == count($circuit['avis']['users']) - 1) { - $add = ' style="visibility:visible"'; - $down = ' style="visibility:hidden"'; - } else { - $add = ' style="visibility:hidden"'; - } - if ($seq == 0) { - $up = ' style="visibility:hidden"'; - } - - $content .= '<td><a href="javascript://" '.$down.' id="avisPopup_down_'.$seq.'" name="avisPopup_down_'.$seq.'" onclick="deplacerLigneAvisPopup(this.parentNode.parentNode.rowIndex, this.parentNode.parentNode.rowIndex+2,\''.$id_tab.'\')" ><i class="fa fa-arrow-down fa-2x"></i></a></td>'; - $content .= '<td><a href="javascript://" '.$up.' id="avisPopup_up_'.$seq.'" name="avisPopup_up_'.$seq.'" onclick="deplacerLigneAvisPopup(this.parentNode.parentNode.rowIndex, this.parentNode.parentNode.rowIndex-1,\''.$id_tab.'\')" ><i class="fa fa-arrow-up fa-2x"></i></a></td>'; - $content .= '<td><a href="javascript://" onclick="delRowAvisPopup(this.parentNode.parentNode.rowIndex,\''.$id_tab.'\')" id="avisPopup_suppr_'.$j.'" name="avisPopup_suppr_'.$j.'" style="visibility:visible;" ><i class="fa fa-user-times fa-2x"></i></a></td>'; - $content .= '<td><a href="javascript://" '.$add.' id="avisPopup_add_'.$seq.'" name="avisPopup_add_'.$seq.'" onclick="addRowAvisPopup(\''.$id_tab.'\')" ><i class="fa fa-user-plus fa-2x"></i></a></td>'; - $content .= '<td><input type="text" id="avisPopup_consigne_'.$seq.'" name="avisPopup_consigne_'.$seq.'" value="'.$step['process_comment'].'" onmouseover="setTitle(this);" style="width:95%;"/></td>'; - $content .= '<td style="display:none"><input type="hidden" value="'.$step['process_date'].'" id="avisPopup_date_'.$seq.'" name="avisPopup_date_'.$seq.'"/></td>'; - $content .= '<td style="display:none"><input type="checkbox" style="visibility:hidden" id="avisPopup_isSign_'.$seq.'" name="avisPopup_isSign_'.$seq.'" /></td>'; - $content .= '<td><i class="fa fa-plus fa-lg" title="Nouvel utilisateur ajouté"></i></td>'; - $content .= '</tr>'; - } - } - - $content .= '</tbody>'; - - echo "{status : 0, div_content : '".addslashes($content.'<br>')."'}"; - exit(); diff --git a/modules/avis/load_listmodel_avis_users.php b/modules/avis/load_listmodel_avis_users.php deleted file mode 100755 index 2e998683a4634dc5ea1b275d4533cf4e1e4df307..0000000000000000000000000000000000000000 --- a/modules/avis/load_listmodel_avis_users.php +++ /dev/null @@ -1,44 +0,0 @@ -<?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 load_listmodel_avis_users - * @author dev@maarch.org - * @ingroup avis - * - */ -require_once 'modules/entities/class/class_manage_listdiff.php'; -require_once "modules" . DIRECTORY_SEPARATOR . "avis" . DIRECTORY_SEPARATOR - . "class" . DIRECTORY_SEPARATOR - . "avis_controler.php"; - - -$db = new Database(); -$core = new core_tools(); -$core->load_lang(); -$diffList = new diffusion_list(); - -$objectType = $_REQUEST['objectType']; -$objectId = $_REQUEST['objectId']; -$origin = 'avis'; - -// Get listmodel_parameters -$contentListModel = $diffList->get_listmodel($objectType, $objectId); - -if (!$contentListModel['avis']['users']) { - $contentListModel['avis']['users'] = array(); -} - -$userList = $contentListModel['avis']['users']; - -$userList = json_encode($userList); - - -echo "{\"status\" : 0, \"result\" :" . $userList . "}"; -exit(); diff --git a/modules/avis/xml/IVS/requests_definitions.xml b/modules/avis/xml/IVS/requests_definitions.xml index a23ecd8a60c45ea6c387adcf9c9dd9ae5c3d6e4a..0948a5b1de7d2abc413eb74e458e645dc8f1d3e7 100755 --- a/modules/avis/xml/IVS/requests_definitions.xml +++ b/modules/avis/xml/IVS/requests_definitions.xml @@ -12,14 +12,6 @@ <parameter name="module" value="avis"/> <parameter name="page" value="resetAvisWF"/> </requestDefinition> - <requestDefinition method="POST" path="/apps/maarch_entreprise/index.php" validationRule="load_listmodel_Avis" > - <parameter name="page" value="load_listmodel_Avis"/> - <parameter name="module" value="Avis"/> - </requestDefinition> - <requestDefinition method="GET" path="/apps/maarch_entreprise/index.php" validationRule="load_listmodel_Avis" > - <parameter name="page" value="load_listmodel_Avis"/> - <parameter name="module" value="Avis"/> - </requestDefinition> <requestDefinition method="GET" path="/apps/maarch_entreprise/index.php" validationRule="getAvisModelByTitle" > <parameter name="display" value="true"/> <parameter name="module" value="avis"/> @@ -54,4 +46,4 @@ <parameter name="module" value="Avis"/> </requestDefinition> </requestDefinitions> -</inputValidation> \ No newline at end of file +</inputValidation> diff --git a/modules/entities/admin_listmodel.php b/modules/entities/admin_listmodel.php deleted file mode 100755 index 74deedbbaf07bf678d09ce7a971dad80996cf462..0000000000000000000000000000000000000000 --- a/modules/entities/admin_listmodel.php +++ /dev/null @@ -1,341 +0,0 @@ -<?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 admin_listmodel -* @author dev <dev@maarch.org> -* @ingroup entities -*/ - -require_once 'modules/entities/class/class_manage_listdiff.php'; -require_once 'core/class/usergroups_controler.php'; -$core_tools = new core_tools(); - -$admin = new core_tools(); -$admin->test_admin('admin_listmodels', 'entities'); - /****************Management of the location bar ************/ -$init = false; -if (isset($_REQUEST['reinit']) && $_REQUEST['reinit'] == "true") { - $init = true; -} -$level = ""; -if (isset($_REQUEST['level']) &&($_REQUEST['level'] == 2 || $_REQUEST['level'] == 3 || $_REQUEST['level'] == 4 || $_REQUEST['level'] == 1)) { - $level = $_REQUEST['level']; -} -$page_path = $_SESSION['config']['businessappurl'].'index.php?page=amdin_listmodel&module=entities'; -$page_label = _ADMIN_LISTMODEL; -$page_id = "amdin_listmodel"; -$admin->manage_location_bar($page_path, $page_label, $page_id, $init, $level); - -$difflist = new diffusion_list(); - -//all roles available -$roles = $difflist->list_difflist_roles(); - -//list difflist_types -$difflistTypes = $difflist->list_difflist_types(); - -$mode = $_REQUEST['mode']; - -$objectType = trim(strtok($_REQUEST['id'], '|')); -$objectId = strtok('|'); - -//Load listmodel into session -if (!isset($_SESSION['m_admin']['entity']['listmodel'])) { - //Listmodel to be loaded (up action on list or reload in add mode) - $_SESSION['m_admin']['entity']['difflist_type'] = $difflist->get_difflist_type($objectType); - - $_SESSION['m_admin']['entity']['listmodel'] = $difflist->get_listmodel($objectType, $objectId); - - $title = $_SESSION['m_admin']['entity']['listmodel']['title']; - $description = $_SESSION['m_admin']['entity']['listmodel']['description']; -} else { - //list already loaded and managed (reload after update of list) - $objectType = $_SESSION['m_admin']['entity']['listmodel']['object_type']; - $objectId = $_SESSION['m_admin']['entity']['listmodel']['object_id']; - $title = $_SESSION['m_admin']['entity']['listmodel']['title']; - $description = $_SESSION['m_admin']['entity']['listmodel']['description']; -} -?> - -<script type="text/javascript"> -/** - * [OnChange ObjectType / onLoad] - */ -function listmodel_setObjectType() -{ - var objectType = $('objectType').value; - var objectType_info = $('objectType_info'); - new Ajax.Request( - 'index.php?display=true&module=entities&page=admin_listmodel_setObjectType', - { - method:'post', - parameters: - { - objectType : objectType - }, - onSuccess: function(answer){ - objectType_info.innerHTML = answer.responseText; - objectType_info.style.display = 'block'; - } - } - ); -} - -function listmodel_setObjectId(objectId) -{ - var mode = $('mode').value; - - var objectType = $('objectType').value; - var objectId_input = $('objectId_input'); - - new Ajax.Request( - 'index.php?display=true&module=entities&page=admin_listmodel_setObjectId', - { - method:'post', - parameters: - { - mode : mode, - objectType : objectType, - objectId : objectId - }, - onSuccess: function(answer){ - objectId_input.innerHTML = answer.responseText; - objectId_input.style.display = 'block'; - if(objectId != ''){ - new Chosen($('objectId'),{width: "300px", disable_search_threshold: 10, search_contains: true}); - } - } - } - ); - -} - -function listmodel_validate() { - // Control input values - var main_error = $('main_error'); - - var mode = $('mode').value; - var objectType = $('objectType').value; - var objectId = $('objectId').value; - var title = $('title').value; - var description = $('description').value; - - main_error.innerHTML = ""; - - new Ajax.Request( - 'index.php?display=true&module=entities&page=admin_listmodel_validateHeader', - { - method:'post', - asynchronous:false, - parameters: - { - mode : mode, - objectType : objectType, - objectId : objectId, - title : title, - description : description - }, - onSuccess: function(answer) { - if(answer.responseText) { - main_error.innerHTML += answer.responseText; - this.valid = false; - main_error.style.display = 'table-cell'; - Element.hide.delay(10, 'main_error'); - } else { - this.valid = true; - } - } - } - ); - return this.valid; -} - -function listmodel_save() -{ - var mode = $('mode').value; - var objectType = $('objectType').value; - var objectId = $('objectId').value; - var title = $('title').value; - var description = $('description').value; - - - // Validate form - var valid = listmodel_validate(); - if(valid == false) - return; - - // Check if type/id already used - new Ajax.Request( - 'index.php?display=true&module=entities&page=admin_listmodel_save', - { - method:'post', - parameters: - { - mode : mode, - objectType : objectType, - objectId : objectId, - title : title, - description : description - }, - onSuccess: function(answer){ - if(answer.responseText) - main_error.innerHTML = answer.responseText; - else { - goTo('index.php?module=entities&page=admin_listmodels'); - } - } - } - ); -} - -function listmodel_del( - objectType, - objectId -) { - new Ajax.Request( - 'index.php?display=true&module=entities&page=admin_listmodel_save', - { - method:'post', - parameters: - { - mode : 'del', - objectType : objectType, - objectId : objectId, - }, - onSuccess: function(answer){ - if(answer.responseText) - main_error.innerHTML = answer.responseText; - else { - goTo('index.php?module=entities&page=admin_listmodels'); - } - } - } - ); - -} -</script> - -<?php -$frm = ''; -if ($mode != 'del') { - //TITLE - $frm .= '<h1><i class="fa fa-share-alt-square fa-2x"></i> '._ADMIN_LISTMODEL; - if ($objectType) { - $frm .= ' : '.$difflistTypes[$objectType]; - } - if ($objectId) { - $frm .= ' '.$objectId; - } - $frm .= '</h1>'; - - $frm .= '<br/>'; - - //RIGHT BOX - $frm .= '<div id="listmodel_box" class="block" style="height:550px;">'; - $frm .= '<h2 class="tit">'._LINKED_DIFF_LIST.'</h2>'; - $difflist = $_SESSION['m_admin']['entity']['listmodel']; - echo $frm; - include_once 'modules/entities/difflist_display.php'; - $frm = '<p class="buttons" style="text-align:center;margin-top:5px;">'; - $frm .= '<input type="button" class="button" value="'._MODIFY_LIST.'"'; - $frm .= '</p>'; - $frm .= '</div>'; - - //LEFT BOX - $frm .= '<div class="block" style="float:left;width:65%;height:550px;">'; - $frm .= '<table style="margin:auto;">'; - $frm .= '<tr height="20px;">'; - $frm .= '<td>'; - $frm .= '<input type="hidden" id="mode" value="'.$_REQUEST['mode'].'" />'; - $frm .= '</td>'; - $frm .= '</tr>'; - $frm .= '<tr>'; - $frm .= '<td width="33%">'; - $frm .= '<label for="objectType" >'._OBJECT_TYPE.' : </label>'; - $frm .= '</td>'; - $frm .= '<td>'; - $frm .= '<select name="objectType" id="objectType" onChange="listmodel_setObjectType();listmodel_setObjectId();" style="width:300px;"'; - if ($mode == 'up') { - $frm .= ' disabled="true" '; - } - $frm .= '>'; - $frm .= '<option value="" >'._SELECT_OBJECT_TYPE.'</option>'; - foreach ($difflistTypes as $difflistTypeId => $difflistTypeLabel) { - $frm .= '<option value="'.$difflistTypeId.'"'; - if ($objectType == $difflistTypeId) { - $frm .= ' selected="true" '; - } - $frm .= '>'; - $frm .= $difflistTypeLabel; - $frm .= '</option>'; - } - $frm .= '</select>'; - $frm .= '<script type="text/javascript">new Chosen($(\'objectType\'),{width: "300px", disable_search_threshold: 10, search_contains: true});</script>'; - $frm .= '</td>'; - $frm .= '</tr>'; - $frm .= '<tr>'; - $frm .= '<td>'; - $frm .= '<label for="objectId" >'._ID.' : </label>'; - $frm .= '</td>'; - $frm .= '<td>'; - $frm .= '<div id="objectId_input">'; - if ($mode == 'up') { - $frm .= ' <input type="text" id="objectId" disabled="true" value="'.$objectId.'" />'; - } else { - $frm .= '<script type="text/javascript">'; - $frm .= 'listmodel_setObjectId(\''.$objectId.'\');'; - $frm .= '</script>'; - } - $frm .= '</div>'; - $frm .= '</td>'; - $frm .= '</tr>'; - $frm .= '<tr>'; - $frm .= '<td>'; - $frm .= '<label for="title" >'._TITLE.' : </label>'; - $frm .= '</td>'; - $frm .= '<td>'; - $frm .= '<textarea id="title" style="width:294px;">'.$title.'</textarea>'; - $frm .= '</td>'; - $frm .= '</tr>'; - $frm .= '<tr>'; - $frm .= '<td>'; - $frm .= '<label for="description" >'._DESCRIPTION.' : </label>'; - $frm .= '</td>'; - $frm .= '<td>'; - $frm .= '<textarea id="description" style="width:294px;">'.$description.'</textarea>'; - $frm .= '</td>'; - $frm .= '</tr>'; - $frm .= '<tr>'; - $frm .= '<td>'; - $frm .= '<label for="objectType_info" >'._DIFFLIST_TYPE_ROLES.' : </label>'; - $frm .= '</td>'; - $frm .= '<td>'; - $frm .= '<span id="objectType_info">'.trim($_SESSION['m_admin']['entity']['difflist_type']->difflist_type_roles).'</span>'; - $frm .= '</td>'; - $frm .= '</tr>'; - $frm .= '</table>'; - $frm .= '<br/>'; - $frm .= '<br/>'; - $frm .= '<p class="buttons" style="text-align:center;">'; - if ($objectType && $objectId) { - $frm .= '<input type="button" onclick="listmodel_save();" class="button" value="'._SAVE_LISTMODEL.'" />'; - } - $frm .= ' <input type="button" onclick="goTo(\'index.php?module=entities&page=admin_listmodels\');" class="button" value="'._CANCEL.'" />'; - $frm .= '</p>'; - $frm .= '</div>'; - $frm .= '</div>'; - - $frm .= '<div class="clearfix"></div>'; -} - -//DEL => REDIRECT TO AJAX SAVE -if ($_REQUEST['mode'] == 'del') { - $frm .= '<script type="text/javascript">'; - $frm .= 'listmodel_del(\''.$objectType.'\',\''.$objectId.'\');'; - $frm .= '</script>'; -} - -echo $frm; diff --git a/modules/entities/admin_listmodel_save.php b/modules/entities/admin_listmodel_save.php deleted file mode 100755 index 48e5d5902a2d57b122e6c4f6634aa5ebf140d708..0000000000000000000000000000000000000000 --- a/modules/entities/admin_listmodel_save.php +++ /dev/null @@ -1,45 +0,0 @@ -<?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 admin_listmodel_save -* @author dev <dev@maarch.org> -* @ingroup entities -*/ - -//AJAX save listmodel from admin_listmodel -require_once "modules/entities/class/class_manage_listdiff.php"; -$difflist = new diffusion_list(); - -switch($_REQUEST['mode']) { -case 'up': - $difflist->save_listmodel( - $_SESSION['m_admin']['entity']['listmodel'], - $objectType = $_REQUEST['objectType'], - $objectId = $_REQUEST['objectId'], - $title = $_REQUEST['title'], - $description = $_REQUEST['description'] - ); - $_SESSION['info'] = _ADMIN_LISTMODEL.' '._UPDATED; - break; -case 'add': - $difflist->save_listmodel( - $_SESSION['m_admin']['entity']['listmodel'], - $objectType = $_REQUEST['objectType'], - $objectId = $_REQUEST['objectId'], - $title = $_REQUEST['title'], - $description = $_REQUEST['description'] - ); - $_SESSION['info'] = _ADMIN_LISTMODEL.' '._ADDED; - break; - -case 'del': - $difflist->delete_listmodel( - $objectType = $_REQUEST['objectType'], - $objectId = $_REQUEST['objectId'] - ); - $_SESSION['info'] = _ADMIN_LISTMODEL.' '._DELETED; - break; -} \ No newline at end of file diff --git a/modules/entities/admin_listmodel_setObjectId.php b/modules/entities/admin_listmodel_setObjectId.php deleted file mode 100755 index f1733056ff831da4a6b9eebdb94bc8c0df53b9f0..0000000000000000000000000000000000000000 --- a/modules/entities/admin_listmodel_setObjectId.php +++ /dev/null @@ -1,147 +0,0 @@ -<?php -# AJAX script to list objects to be linked with list model - -function asSelect( - $items, - $objectId = false -) { - $return = "<select id='objectId' style='width:300px;'>"; - - foreach($items as $id => $label) { - $return .= "<option value='".$id."'"; - if($id == $objectId) $return .= " selected='true' "; - $return .= ">"; - if($id) $return .= $id . ' '; - $return .= $label; - - $return .= "</option>"; - } - $return .= "</select>"; - return $return; -} - -require_once 'core/class/class_core_tools.php'; -$core = new core_tools(); -$core->load_lang(); - -require_once 'modules/entities/class/class_manage_listdiff.php'; -$difflist = new diffusion_list(); - -$mode = $_REQUEST['mode']; -$objectType = $_REQUEST['objectType']; -$objectId = $_REQUEST['objectId']; - -if(!$objectType) { - echo ""; - return; -} - -switch($objectType) { -case 'entity_id': - require_once 'modules/entities/class/class_manage_entities.php'; - $ent = new entity(); - $entity_ids = $ent->get_all_entities_id_user(); - $entities = array(); - for($i=0, $l=count($entity_ids); - $i<$l; - $i++ - ) { - $entity_id = substr($entity_ids[$i], 1, -1); - $existinglist = - $difflist->get_listmodel( - 'entity_id', - $entity_id - ); - if(!$existinglist) { - $entities[$entity_id] = $ent->getentitylabel($entity_id); - } - } - if(count($entities) > 0) - echo asSelect($entities, $objectId); - else { - echo asSelect(array("" => _ALL_OBJECTS_ARE_LINKED)); - } - break; -case 'VISA_CIRCUIT': - require_once 'modules/entities/class/class_manage_entities.php'; - $ent = new entity(); - $entity_ids = $ent->get_all_entities_id_user(); - $entities = array(); - for($i=0, $l=count($entity_ids); - $i<$l; - $i++ - ) { - $entity_id = substr($entity_ids[$i], 1, -1); - $existinglist = - $difflist->get_listmodel( - 'VISA_CIRCUIT', - $entity_id - ); - if(!$existinglist) { - $entities[$entity_id] = $ent->getentitylabel($entity_id); - } - } - if(count($entities) > 0) - echo asSelect($entities, $objectId); - else { - echo asSelect(array("" => _ALL_OBJECTS_ARE_LINKED)); - } - break; - -case 'AVIS_CIRCUIT': - require_once 'modules/entities/class/class_manage_entities.php'; - $ent = new entity(); - $entity_ids = $ent->get_all_entities_id_user(); - $entities = array(); - for($i=0, $l=count($entity_ids); - $i<$l; - $i++ - ) { - $entity_id = substr($entity_ids[$i], 1, -1); - $existinglist = - $difflist->get_listmodel( - 'VISA_CIRCUIT', - $entity_id - ); - if(!$existinglist) { - $entities[$entity_id] = $ent->getentitylabel($entity_id); - } - } - if(count($entities) > 0) - echo asSelect($entities, $objectId); - else { - echo asSelect(array("" => _ALL_OBJECTS_ARE_LINKED)); - } - break; - -case 'type_id': - require_once 'core/class/class_db_pdo.php'; - require_once 'core/core_tables.php'; - $db = new Database(); - $stmt = $db->query("SELECT type_id, description FROM " . DOCTYPES_TABLE); - while($doctype = $stmt->fetchObject()) { - $type_id = $doctype->type_id; - $existinglist = - $difflist->get_listmodel( - 'type_id', - $type_id - ); - if(!$existinglist) { - $doctypes[$type_id] = $doctype->description; - } - } - if(count($doctypes) > 0) - echo asSelect($doctypes, $objectId); - else - echo asSelect(array("" => _ALL_OBJECTS_ARE_LINKED)); - - break; - -case 'user_defined_id': -default: - if(!$objectId) - $objectId = $objectType . '_' . strtoupper(base_convert(date('U'), 10, 36)); - echo "<input type='text' id='objectId' style='width:300px;' value='$objectId' />"; - break; -} - diff --git a/modules/entities/admin_listmodel_setObjectType.php b/modules/entities/admin_listmodel_setObjectType.php deleted file mode 100755 index 3052c5bbbe56f957c38aa74e82aef220f2559ef2..0000000000000000000000000000000000000000 --- a/modules/entities/admin_listmodel_setObjectType.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -# AJAX script to load objectType/difflist_type onto session - -require_once 'modules/entities/class/class_manage_listdiff.php'; -$difflist = new diffusion_list(); - -$objectType = $_REQUEST['objectType']; - -$_SESSION['m_admin']['entity']['difflist_type'] = $difflist->get_difflist_type($objectType); - -echo str_replace(' ', ', ', trim($_SESSION['m_admin']['entity']['difflist_type']->difflist_type_roles)); diff --git a/modules/entities/admin_listmodel_validateHeader.php b/modules/entities/admin_listmodel_validateHeader.php deleted file mode 100755 index 122759ae62d0e5379a29ca6c7bda883502307cff..0000000000000000000000000000000000000000 --- a/modules/entities/admin_listmodel_validateHeader.php +++ /dev/null @@ -1,47 +0,0 @@ -<?php -# AJAX Script to validate listmodel header values -# and load into session if needed - -require_once 'core/class/class_core_tools.php'; -$core = new core_tools(); -$core->load_lang(); - -require_once("core".DIRECTORY_SEPARATOR."class".DIRECTORY_SEPARATOR."class_request.php"); -require_once("modules/entities/entities_tables.php"); - -$db = new Database(); - -$mode = $_REQUEST['mode']; -$objectType = $_REQUEST['objectType']; -$objectId = $_REQUEST['objectId']; -$description = $_REQUEST['description']; -$title = $_REQUEST['title']; - -//print_r($description); exit; - -$return = ""; - -if($objectId == '' || $objectType == '') - $return .= _SELECT_OBJECT_TYPE_AND_ID . "<br/>"; - -if($title == '') - $return .= _ENTER_TITLE . "<br/>"; - -if($mode == 'add' && $objectId && $objectType && $collId) { - $stmt = $db->query( - "select count(1) as nb from " . ENT_LISTMODELS - . " where object_type = ?" - . " and object_id = ?",array($objectType,$objectId) - ); - $res = $stmt->fetchObject(); - if($res->nb > 0) - $return .= _LISTMODEL_ID_ALREADY_USED . "<br/>"; -} - -# Load header into session -$_SESSION['m_admin']['entity']['listmodel']['object_type'] = $objectType; -$_SESSION['m_admin']['entity']['listmodel']['object_id'] = $objectId; -$_SESSION['m_admin']['entity']['listmodel']['description'] = $description; -$_SESSION['m_admin']['entity']['listmodel']['title'] = $title; -# Return messages -echo $return; \ No newline at end of file diff --git a/modules/entities/admin_listmodels.php b/modules/entities/admin_listmodels.php deleted file mode 100755 index a22ac75374a16225be3ded18c273e257284808e0..0000000000000000000000000000000000000000 --- a/modules/entities/admin_listmodels.php +++ /dev/null @@ -1,171 +0,0 @@ -<?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 admin_listmodels -* @author dev <dev@maarch.org> -* @ingroup entities -*/ - -$admin = new core_tools(); -$admin->test_admin('admin_listmodels', 'entities'); -$_SESSION['m_admin']= array(); -/****************Management of the location bar ************/ -$init = false; -if (isset($_REQUEST['reinit']) && $_REQUEST['reinit'] == "true") { - $init = true; -} -$level = ""; -if (isset($_REQUEST['level']) && ($_REQUEST['level'] == 2 || $_REQUEST['level'] == 3 || $_REQUEST['level'] == 4 || $_REQUEST['level'] == 1)) { - $level = $_REQUEST['level']; -} -$page_path = $_SESSION['config']['businessappurl'].'index.php?page=admin_listmodels&module=entities'; -$page_label = _LISTMODELS; -$page_id = "admin_listmodels"; -$admin->manage_location_bar($page_path, $page_label, $page_id, $init, $level); -/***********************************************************/ - -require_once "apps".DIRECTORY_SEPARATOR.$_SESSION['config']['app_id'].DIRECTORY_SEPARATOR."class".DIRECTORY_SEPARATOR."class_list_show.php"; -require_once "core".DIRECTORY_SEPARATOR."class".DIRECTORY_SEPARATOR."class_request.php"; -require_once 'modules'.DIRECTORY_SEPARATOR.'entities'.DIRECTORY_SEPARATOR.'class'.DIRECTORY_SEPARATOR.'class_manage_entities.php'; -require_once 'modules/entities/class/class_manage_listdiff.php'; -require_once "modules/entities/entities_tables.php"; - -$ent = new entity(); -$func = new functions(); -$request = new request; - -$listdiff = new diffusion_list(); -$roles = $listdiff->list_difflist_roles(); -$difflist_types = $listdiff->list_difflist_types(); - -$what = ''; -$where = ''; - -$list = new list_show(); -$arrayPDO = array(); - -if (isset($_REQUEST['what']) && !empty($_REQUEST['what'])) { - $what = $func->protect_string_db($_REQUEST['what']); - $where = " (lower(object_id) like lower(?) or lower(description) like lower(?)) and "; - $arrayPDO = array_merge($arrayPDO, array("%".$what."%", "%".$what."%")); -} - -if ($_SESSION['user']['UserId'] != 'superadmin') { - $my_tab_entities_id = $ent->get_all_entities_id_user($_SESSION['user']['entities']); - if (count($my_tab_entities_id)>0) { - //we need all entities that are managed by connected user - $where.= '('.ENT_LISTMODELS.'.object_id in ('.join(',', $my_tab_entities_id).') OR '.ENT_LISTMODELS.'.object_id LIKE \'VISA_%\' OR '.ENT_LISTMODELS.'.object_id LIKE \'AVIS_%\') and'; - } -} - -$order = 'asc'; -if (isset($_REQUEST['order']) && !empty($_REQUEST['order'])) { - - $order = trim($_REQUEST['order']); -} -$field = 'object_id'; -if (isset($_REQUEST['order_field']) && !empty($_REQUEST['order_field'])) { - $field = trim($_REQUEST['order_field']); -} - -$orderstr = $list->define_order($order, $field); - -$select[ENT_LISTMODELS] = array(); -array_push($select[ENT_LISTMODELS], "object_type || '|' || object_id as list_id", 'object_type', 'object_id', 'title', 'description'); - -$where .= ' 1=1 group by object_type, object_id, title, description'; -// var_dump($select); -// var_dump($where); -$tab = $request->PDOselect($select, $where, $arrayPDO, $orderstr, $_SESSION['config']['databasetype']); - -for ($i=0;$i<count($tab);$i++) { - - for ($j=0;$j<count($tab[$i]);$j++) { - - foreach (array_keys($tab[$i][$j]) as $value) { - - if ($tab[$i][$j][$value]=="list_id") { - - $tab[$i][$j]['value']=$request->show_string($tab[$i][$j]['value']); - $tab[$i][$j]["list_id"]=$tab[$i][$j]['value']; - $tab[$i][$j]["label"]=_ID; - $tab[$i][$j]["size"]="25"; - $tab[$i][$j]["label_align"]="left"; - $tab[$i][$j]["align"]="left"; - $tab[$i][$j]["order"]=$tab[$i][$j][$value]; - $tab[$i][$j]["valign"]="bottom"; - $tab[$i][$j]["show"]=false; - } - - if ($tab[$i][$j][$value]=="object_type") { - - $objectType = $tab[$i][$j]['value']; - $tab[$i][$j]['value'] = $difflist_types[$objectType]; - $tab[$i][$j]["label"]= _OBJECT_TYPE; - $tab[$i][$j]["size"]="18"; - $tab[$i][$j]["label_align"]="left"; - $tab[$i][$j]["align"]="left"; - $tab[$i][$j]["order"]=$tab[$i][$j][$value]; - $tab[$i][$j]["valign"]="bottom"; - $tab[$i][$j]["show"]=true; - } - - if ($tab[$i][$j][$value]=="object_id") { - - $tab[$i][$j]["object_id"]=$tab[$i][$j]['value']; - $tab[$i][$j]["label"]= _ID; - $tab[$i][$j]["size"]="18"; - $tab[$i][$j]["label_align"]="left"; - $tab[$i][$j]["align"]="left"; - $tab[$i][$j]["order"]=$tab[$i][$j][$value]; - $tab[$i][$j]["valign"]="bottom"; - $tab[$i][$j]["show"]=true; - } - - if ($tab[$i][$j][$value]=="title") { - $tab[$i][$j]['value']=$request->show_string($tab[$i][$j]['value']); - $tab[$i][$j]["title"]=$tab[$i][$j]['value']; - $tab[$i][$j]["label"]=_TITLE; - $tab[$i][$j]["size"]="30"; - $tab[$i][$j]["label_align"]="left"; - $tab[$i][$j]["align"]="left"; - $tab[$i][$j]["order"]=$tab[$i][$j][$value]; - $tab[$i][$j]["valign"]="bottom"; - $tab[$i][$j]["show"]=true; - } - - if ($tab[$i][$j][$value]=="description") { - - $tab[$i][$j]['value']=$request->show_string($tab[$i][$j]['value']); - $tab[$i][$j]["description"]=$tab[$i][$j]['value']; - $tab[$i][$j]["label"]=_DESCRIPTION; - $tab[$i][$j]["size"]="20"; - $tab[$i][$j]["label_align"]="left"; - $tab[$i][$j]["align"]="left"; - $tab[$i][$j]["order"]=$tab[$i][$j][$value]; - $tab[$i][$j]["valign"]="bottom"; - $tab[$i][$j]["show"]=true; - } - - } - } -} - -$page_name = "admin_listmodels"; -$page_name_up = "admin_listmodel&mode=up"; -$page_name_add = "admin_listmodel&mode=add"; -$page_name_del = "admin_listmodel&mode=del"; -$label_add = _ADD_LISTMODEL; -$_SESSION['m_admin']['init'] = true; - -$title = _LISTMODELS." : ".$i." "._LISTMODEL; -//$autoCompletionArray = false;//array(); -$autoCompletionArray = array(); -$autoCompletionArray["list_script_url"] = $_SESSION['config']['businessappurl'].'index.php?display=true&module=entities&page=listmodels_list_by_label'; -$autoCompletionArray["number_to_begin"] = 1; - -$list->admin_list($tab, $i, $title, 'list_id','admin_listmodels','entities', 'list_id', true, $page_name_up, $page_name_val, $page_name_ban, $page_name_del, $page_name_add, $label_add, false, false, _ALL_LISTMODELS, _LISTMODEL, "share-alt-square", true, true, false, true, "", true, $autoCompletionArray, false, true); -?> diff --git a/modules/entities/class/class_manage_entities_Abstract.php b/modules/entities/class/class_manage_entities_Abstract.php index 05defd428731658a803d6348cf77d8f1ce0ab07b..ebde6cbfcb98b8f7e5edbd132ca32dfecea91dab 100755 --- a/modules/entities/class/class_manage_entities_Abstract.php +++ b/modules/entities/class/class_manage_entities_Abstract.php @@ -1416,11 +1416,6 @@ abstract class entity_Abstract extends functions $element_found = true; $nb_listinstances = $stmt->rowCount(); } - $stmt = $db->query("select object_id from ".$_SESSION['tablename']['ent_listmodels']." where object_id = ?",array($s_id)); - if($stmt->rowCount() > 0) - { - $nb_listmodels = $stmt->rowCount(); - } } } if($element_found) @@ -1452,7 +1447,6 @@ abstract class entity_Abstract extends functions { echo "<br> - ".$nb_redirect_baskets." "._BASKET_REDIRECTIONS_OCCURS_LINKED_TO; echo "<br> - ".$nb_listinstances." "._LISTISTANCES_OCCURS_LINKED_TO; - echo "<br> - ".$nb_listmodels." "._LISTMODELS_OCCURS_LINKED_TO; } if($admin->is_module_loaded('templates')) { diff --git a/modules/entities/class/class_manage_listdiff_Abstract.php b/modules/entities/class/class_manage_listdiff_Abstract.php index 123a1df5c539d13eedf903f7a60bf3af02dcb495..09534cad6bcf1aab45f45e48ff070d34b2e96e3f 100755 --- a/modules/entities/class/class_manage_listdiff_Abstract.php +++ b/modules/entities/class/class_manage_listdiff_Abstract.php @@ -15,290 +15,6 @@ require_once 'core/core_tables.php'; abstract class diffusion_list_Abstract extends functions { - //************************************************************************** - // LISTMODELS - // Administration and use of diffusion list templates - //************************************************************************** - public function select_listmodels( - $objectType = 'entity_id' - ) { - $listmodels = array(); - $db = new Database(); - - $query = - 'SELECT distinct object_type, object_id, description, title' - .' FROM '.ENT_LISTMODELS - .' WHERE object_type = ?' - .' GROUP BY object_type, object_id, description, title ' - .' ORDER BY object_type ASC, object_id ASC'; - - $stmt = $db->query($query, array($objectType)); - - while ($listmodel = $stmt->fetch(PDO::FETCH_ASSOC)) { - if ($listmodel['title'] == '') { - $listmodel['title'] = $listmodel['object_id']; - } - - $listmodels[] = $listmodel; - } - - return $listmodels; - } - - /** - * Gets the diffusion list model for a given entity. - * - * @param string $entityId Entity identifier - * @param array $collId Collection identifier ('letterbox_coll' by default) - * - * @return array $listmodel['dest] : Data of the dest_user - * ['user_id'] : identifier of the dest_user - * ['lastname'] : Lastname of the dest_user - * ['firstname'] : firstname of the dest_user - * ['entity_id'] : entity identifier of the dest_user - * ['entity_label'] : entity label of the dest_user - * ['copy'] : Data of the copies - * ['users'][$i] : Users in copy data - * ['user_id'] : identifier of the user in copy - * ['lastname'] : Lastname of the user in copy - * ['firstname'] : firstname of the user in copy - * ['entity_id'] : entity identifier of the user in copy - * ['entity_label'] : entity label of the user in copy - * ['entities'][$i] : Entities in copy data - * ['entity_id'] : entity identifier of the entity in copy - * ['entity_label'] : entity label of the entity in copy - */ - public function get_listmodel( - $objectType = 'entity_id', - $objectId - ) { - $objectId = $objectId; - $objectType = $objectType; - - $db = new Database(); - $roles = $this->list_difflist_roles(); - $listmodel = array(); - - if (empty($objectId) || empty($objectType)) { - return $listmodel; - } - - // Load header - $query = - 'SELECT distinct object_type, object_id, description, title' - .' FROM '.ENT_LISTMODELS - .' WHERE object_type = ?' - .'and object_id = ?' - .' GROUP BY object_type, object_id, description, title'; - $stmt = $db->query($query, array($objectType, $objectId)); - - $listmodel = $stmt->fetch(PDO::FETCH_ASSOC); - - // Load list - foreach ($roles as $role_id => $role_label) { - if ($role_id == 'copy') { - $item_mode = 'cc'; - } else { - $item_mode = $role_id; - } - // Users - $stmt = $db->query( - 'SELECT l.item_id, l.item_mode, u.firstname, u.lastname, e.entity_id, e.entity_label, l.process_comment ' - .' FROM '.ENT_LISTMODELS.' l ' - .' JOIN '.USERS_TABLE.' u ON l.item_id = u.user_id ' - .' JOIN '.ENT_USERS_ENTITIES.' ue ON u.user_id = ue.user_id ' - .' JOIN '.ENT_ENTITIES.' e ON ue.entity_id = e.entity_id' - .' WHERE ' - ."ue.primary_entity = 'Y' " - .'and l.item_mode = ? ' - ."and l.item_type = 'user_id' " - .'and l.object_type = ? ' - .'and l.object_id = ? ' - ."and u.status != 'SPD' " - ."and u.status != 'DEL' " - .'ORDER BY l.sequence', - array($item_mode, $objectType, $objectId) - ); - while ($user = $stmt->fetchObject()) { - if (!isset($listmodel[$role_id])) { - $listmodel[$role_id] = array(); - } - if (!isset($listmodel[$role_id]['users'])) { - $listmodel[$role_id]['users'] = array(); - } - - if ($user->process_comment === null) { - $user->process_comment = ''; - } - - if ($user->item_mode == 'sign') { - $user->requested_signature = true; - } else { - $user->requested_signature = false; - } - - array_push( - $listmodel[$role_id]['users'], - array( - 'user_id' => functions::show_string($user->item_id), - 'lastname' => functions::show_string($user->lastname), - 'firstname' => functions::show_string($user->firstname), - 'entity_id' => functions::show_string($user->entity_id), - 'entity_label' => functions::show_string($user->entity_label), - 'process_comment' => $user->process_comment, - 'requested_signature' => $user->requested_signature, - ) - ); - } - - // Entities - $stmt = $db->query( - 'SELECT l.item_id, e.entity_label, l.item_mode ' - .'FROM '.ENT_LISTMODELS.' l ' - .'JOIN '.ENT_ENTITIES.' e ON l.item_id = e.entity_id ' - .'WHERE ' - .' l.item_mode = ? ' - ."and l.item_type = 'entity_id' " - .'and l.object_type = ? ' - .'and l.object_id = ? ' - .'ORDER BY l.sequence ', - array($item_mode, $objectType, $objectId) - ); - - while ($entity = $stmt->fetchObject()) { - if (!isset($listmodel[$role_id])) { - $listmodel[$role_id] = array(); - } - if (!isset($listmodel[$role_id]['entities'])) { - $listmodel[$role_id]['entities'] = array(); - } - - array_push( - $listmodel[$role_id]['entities'], - array( - 'entity_id' => functions::show_string($entity->item_id), - 'entity_label' => functions::show_string($entity->entity_label), - ) - ); - } - } - - return $listmodel; - } - - public function save_listmodel( - $diffList, - $objectType = 'entity_id', - $objectId, - $title = false, - $description = false - ) { - $db = new Database(); - $roles = $this->list_difflist_roles(); - - require_once 'core/class/class_history.php'; - $hist = new history(); - - //echo "bug"; print_r($description); exit; - - $objectType = trim($objectType); - $objectId = trim($objectId); - $title = trim($title); - $description = trim($description); - - // Delete all and replace full list - //********************************************************************** - $stmt = $db->query( - 'delete from '.ENT_LISTMODELS - .' where ' - .'object_type = ? ' - .'and object_id = ? ', - array($objectType, $objectId) - ); - foreach ($roles as $role_id => $role_label) { - if ($role_id == 'copy') { - $item_mode = 'cc'; - } else { - $item_mode = $role_id; - } - - // users - //********************************************************************** - $l = 0; - if (!empty($diffList[$role_id]['users']) && is_array($diffList[$role_id]['users'])) { - $l = count($diffList[$role_id]['users']); - } - for ($i = 0; - $i < $l; - ++$i - ) { - $user = $diffList[$role_id]['users'][$i]; - //print_r($description); exit; - $stmt = $db->query( - 'insert into '.ENT_LISTMODELS - .' (object_id, object_type, sequence, item_id, item_type, item_mode, description, title, process_comment ) ' - .' values (' - .'? , ' - .'?, ?, ' - .'?, ' - ."'user_id', " - .'?, ' - .'?,' - .'?,' - .'?,' - .'?' - .')', - array($objectId, $objectType, $i, $user['user_id'], $item_mode, $description, $title, $user['process_comment']) - ); - } - // Entities - //********************************************************************** - $l = 0; - if (!empty($diffList[$role_id]['entities']) && is_array($diffList[$role_id]['entities'])) { - $l = count($diffList[$role_id]['entities']); - } - for ($i = 0; $i < $l; ++$i) { - $entity = $diffList[$role_id]['entities'][$i]; - //print_r($description); exit; - $stmt = $db->query( - 'insert into '.ENT_LISTMODELS - .' (object_id, object_type, sequence, item_id, item_type, item_mode, description, title ) ' - .' values (' - .'? , ' - .'?, ?, ' - .'?, ' - ."'entity_id', " - .'?, ' - .'?, ' - .'?,' - .'?' - .')', - array($objectId, $objectType, $i, $entity['entity_id'], $item_mode, $description, $title) - ); - } - } - } - - public function delete_listmodel( - $objectType = 'entity_id', - $objectId - ) { - $db = new Database(); - - $objectType = trim($objectType); - $objectId = trim($objectId); - - // Delete all and replace full list - //********************************************************************** - $stmt = $db->query( - 'delete from '.ENT_LISTMODELS - .' where ' - .'object_type = ? ' - .'and object_id = ? ', - array($objectType, $objectId) - ); - } - //************************************************************************** // LISTINSTANCE // Management of diffusion lists for documents and folders diff --git a/modules/entities/class/class_modules_tools_Abstract.php b/modules/entities/class/class_modules_tools_Abstract.php index 4bb69cce13dbc4ed3e97c8fd57df5d00c43bcfd3..7da89663306f72d85999b79536e20de47e0966f8 100755 --- a/modules/entities/class/class_modules_tools_Abstract.php +++ b/modules/entities/class/class_modules_tools_Abstract.php @@ -65,8 +65,6 @@ abstract class entities_Abstract extends functions (string) $tablename->ent_entities; $_SESSION['tablename']['ent_users_entities'] = (string) $tablename->ent_users_entities; - $_SESSION['tablename']['ent_listmodels'] = - (string) $tablename->ent_listmodels; $_SESSION['tablename']['ent_listinstance'] = (string) $tablename->ent_listinstance; $_SESSION['tablename']['ent_groupbasket_redirect'] = diff --git a/modules/entities/entities_tables.php b/modules/entities/entities_tables.php index 2cb22ecd17f4006b0a99944bd822f978df2ba696..e0bb50e95dd6b9adb987040a324f7e64a24dc2e5 100755 --- a/modules/entities/entities_tables.php +++ b/modules/entities/entities_tables.php @@ -35,9 +35,6 @@ if (! defined('ENT_ENTITIES')) { if (! defined('ENT_USERS_ENTITIES')) { define('ENT_USERS_ENTITIES', 'users_entities'); } -if (! defined('ENT_LISTMODELS')) { - define('ENT_LISTMODELS', 'listmodels'); -} if (! defined('ENT_LISTINSTANCE')) { define('ENT_LISTINSTANCE', 'listinstance'); } diff --git a/modules/entities/js/functions.js b/modules/entities/js/functions.js index 62d93f1dda332a03d53682d6fe2efa27355b504e..0f3e842b1aac9f0792c76b9d5926e0591e26426d 100755 --- a/modules/entities/js/functions.js +++ b/modules/entities/js/functions.js @@ -94,36 +94,6 @@ function change_entity( } } -// Load list of listmodels to fill select list (index, validate) -// >>> type of list (entity_id, type_id, custom list type) -// >>> type of element to fill (select or list) -// >>> id of element to fill -function select_listmodels( - objectType, - returnElementType, - returnElementId -) { - console.log('appel select_listmodels'); - - new Ajax.Request( - 'index.php?display=true&module=entities&page=select_listmodels', - { - method:'post', - parameters: { - objectType : objectType, - returnElementType : returnElementType - }, - onSuccess: function(answer) - { - var returnElement = $(returnElementId); - if(returnElement != null && returnElement.nodeName.toUpperCase() == returnElementType.toUpperCase()) { - returnElement.innerHTML += answer.responseText; - } - } - } - ); -} - // Load listmodel to session[origin] // >>> type of list (entity_id, type_id, custom list type) // >>> id of list (entity_id, type_id, custom id) @@ -425,4 +395,4 @@ function moveToDest(user_id,role_id,origin) { } }); -} \ No newline at end of file +} diff --git a/modules/entities/listmodels_list_by_label.php b/modules/entities/listmodels_list_by_label.php deleted file mode 100755 index 966bc3cf94bd528f2c7864f99d11ab0077abaf78..0000000000000000000000000000000000000000 --- a/modules/entities/listmodels_list_by_label.php +++ /dev/null @@ -1,61 +0,0 @@ -<?php -/** -* File : entities_list_by_label.php -* -* List of entities for autocompletion -* -* @package Maarch Framework 3.0 -* @version 3 -* @since 10/2005 -* @license GPL -* @author Cédric Ndoumba <dev@maarch.org> -*/ - -require_once("core".DIRECTORY_SEPARATOR."class".DIRECTORY_SEPARATOR."class_request.php"); -require_once('modules'.DIRECTORY_SEPARATOR.'entities'.DIRECTORY_SEPARATOR.'class'.DIRECTORY_SEPARATOR.'class_manage_entities.php'); -require_once("modules/entities/entities_tables.php"); -$ent = new entity(); -$db = new Database(); - -$select = "select distinct(description) from ".ENT_LISTMODELS; -$where = " where (lower(description) like lower(?) "; -$where .= " or lower(object_id) like lower(?)) "; - -if($_SESSION['user']['UserId'] != 'superadmin') -{ - $my_tab_entities_id = $ent->get_all_entities_id_user($_SESSION['user']['entities']); - if (count($my_tab_entities_id)>0) - { - $where.= ' and object_id in ('.join(',', $my_tab_entities_id).')'; - } -} - -$sql = $select.$where." order by description"; -//var_dump($sql); -$stmt = $db->query($sql,array("%".$_REQUEST['what']."%","%".$_REQUEST['what']."%")); -$listModels = array(); -while($line = $stmt->fetchObject()) -{ - array_push($listModels, $line->description); -} - -echo "<ul>\n"; -$authViewList = 0; -foreach($listModels as $description) -{ - if($authViewList >= 10) - { - $flagAuthView = true; - } - // if(stripos($entity, $_REQUEST['what']) === 0) - // { - echo "<li>".$description."</li>\n"; - if(isset($flagAuthView) && $flagAuthView) - { - echo "<li>...</li>\n"; - break; - } - $authViewList++; - // } -} -echo "</ul>"; diff --git a/modules/entities/load_listinstance.php b/modules/entities/load_listinstance.php index fce5a00627638e0e10e6844fa8b355da1064212f..1d675de9a874768685762ed068ae8d9f8a7ac4dc 100755 --- a/modules/entities/load_listinstance.php +++ b/modules/entities/load_listinstance.php @@ -74,11 +74,6 @@ $objectId = $_REQUEST['objectId']; // Get listmodel_parameters $_SESSION[$origin]['difflist_type'] = $diffList->get_difflist_type($objectType); -if ($_REQUEST['load_from_model'] == 'true') { - $_SESSION[$origin]['diff_list'] = $diffList->get_listmodel($objectType, $objectId); - $_SESSION[$origin]['diff_list']['difflist_type'] = $_SESSION[$origin]['diff_list']['object_type']; -} - if ($objectId <> '') { $_SESSION[$origin]['difflist_object']['object_id'] = $objectId; if ($objectType == 'entity_id') { diff --git a/modules/entities/load_listmodel.php b/modules/entities/load_listmodel.php deleted file mode 100755 index abf0068cd54ef04c6edd83e48a90aa709061ccdf..0000000000000000000000000000000000000000 --- a/modules/entities/load_listmodel.php +++ /dev/null @@ -1,108 +0,0 @@ -<?php -/** -* File : change_doctype.php -* -* Script called by an ajax object to process the document type change during -* indexing (index_mlb.php) -* -* @package maarch -* @version 1 -* @since 10/2005 -* @license GPL v3 -* @author Cyril Vazquez <dev@maarch.org> -*/ -require_once 'modules/entities/class/class_manage_listdiff.php'; - -$db = new Database(); -$core = new core_tools(); -$core->load_lang(); -$diffList = new diffusion_list(); - -$objectType = $_REQUEST['objectType']; -$objectId = $_REQUEST['objectId']; -$origin = $_REQUEST['origin']; -$category = $_REQUEST['category']; - -// Get listmodel_parameters -$_SESSION[$origin]['difflist_type'] = $diffList->get_difflist_type($objectType); - -if ($objectId <> '') { - $_SESSION[$origin]['difflist_object']['object_id'] = $objectId; - if ($objectType == 'entity_id') { - $query = "SELECT entity_label FROM entities WHERE entity_id = ?"; - $stmt = $db->query($query, array($objectId)); - $res = $stmt->fetchObject(); - if ($res->entity_label <> '') { - $_SESSION[$origin]['difflist_object']['object_label'] = $res->entity_label; - } - } -} - -// Fill session with listmodel -$_SESSION[$origin]['diff_list'] = $diffList->get_listmodel($objectType, $objectId); -//Permet de bloquer la liste diffusion avec celle de l'utilisateur qui enregistre le courrier. -if ($category == 'outgoing' && $origin == 'indexing' && $objectId == $_SESSION['user']['primaryentity']['id']) { - $_SESSION[$origin]['diff_list']['dest']['users'] = array(); - - //Get the right primary entity - $primaryEntityId = $_SESSION['user']['primaryentity']['id']; - foreach ($_SESSION['user']['entities'] as $entity) { - if ($entity['ENTITY_ID']==$primaryEntityId) { - $primaryEntityLabel = $entity['ENTITY_LABEL']; - } - } - - $diffListOutgoing = array( - 'user_id' => $_SESSION['user']['UserId'], - 'lastname' => $_SESSION['user']['LastName'], - 'firstname' => $_SESSION['user']['FirstName'], - 'entity_id' => $primaryEntityId, - 'entity_label' => $primaryEntityLabel, - 'visible' => 'Y', - 'process_comment' => '' - ); - - $_SESSION[$origin]['diff_list']['dest']['users'][]=$diffListOutgoing; - $_SESSION[$origin]['diff_list']['copy'] = array(); -} - -$_SESSION[$origin]['diff_list']['difflist_type'] = $_SESSION[$origin]['diff_list']['object_type']; -$roles = $diffList->list_difflist_roles(); -$difflist = $_SESSION[$origin]['diff_list']; - -$content = ''; -if (! $onlyCC) { - if (isset($_SESSION['validStep']) && $_SESSION['validStep'] == 'ok') { - $content .= ""; - } -} - -# Get content from buffer of difflist_display -ob_start(); -require_once 'modules/entities/difflist_display.php'; -$content .= str_replace(array("\r", "\n", "\t"), array("", "", ""), ob_get_contents()); -ob_end_clean(); - -$labelButton = _UPDATE_LIST_DIFF; -$arg = '&mode=up'; - -if (!$core->test_service('edit_recipient_outside_process', 'entities', false) && $origin == 'indexing') { - $onlyCC = true; -} - -if ($onlyCC) { - $arg .= '&only_cc'; -} -$content_standard = '<center><b>' . _DIFF_LIST . '</b> | '; -$content_standard .= '<span class="button" >'; -$content_standard .= '<small><input type="button" style="margin-top:0px;" class="button" title="'.$labelButton.'" value="'.$labelButton.'" ' - . 'onclick="window.open(\'' - . $_SESSION['config']['businessappurl'] . 'index.php?display=true' - . '&module=entities&page=manage_listinstance&cat='.$category.'&origin=' . $origin . $arg - . '\', \'\', \'scrollbars=yes,menubar=no,toolbar=no,status=no,' - . 'resizable=yes,width=1280,height=800,location=no\');"/></small>'; -$content_standard .= '</span></center>'; - -echo "{status : 0, div_content : '" . addslashes($content_standard . $content . '<br>') - . "', div_content_action : '" . addslashes($content) . "'}"; -exit(); diff --git a/modules/entities/select_listmodels.php b/modules/entities/select_listmodels.php deleted file mode 100755 index 94fc2250cc44dcb3d631de1f7822aa38b1ec140b..0000000000000000000000000000000000000000 --- a/modules/entities/select_listmodels.php +++ /dev/null @@ -1,36 +0,0 @@ -<?php - -// AJAX -// Loads a list of listmodels onto a html structure -// >>> difflist_type : type of list (listmodels.object_type) -// >>> return type : type of list to return [select | ul] -require_once 'modules/entities/class/class_manage_listdiff.php'; -$difflist = new diffusion_list(); - -$objectType = $_REQUEST['objectType']; -$returnElementType = $_REQUEST['returnElementType']; - -$listmodels = $difflist->select_listmodels($objectType); -$l = count($listmodels); - -$return = ""; - -switch($returnElementType) { -case 'select': - for($i=0; $i<$l; $i++) { - $listmodel = $listmodels[$i]; - $return .= "<option value='".functions::xecho($listmodel['object_id'])."' >" - . functions::xecho($listmodel['description']) ."</option>"; - } - break; - -case 'list': - for($i=0; $i<$l; $i++) { - $listmodel = $listmodels[$i]; - $return .= "<li id='" . functions::xecho($listmodel['object_id']) - ."'>" . functions::xecho($listmodel['description']) . "</li>"; - } - break; -} - -echo $return; diff --git a/modules/entities/xml/IVS/requests_definitions.xml b/modules/entities/xml/IVS/requests_definitions.xml index ae8333a232fddf311b78eb0f22c2316ea77aee89..00c717cfcdddf145c1b11b1a1a8e1d434ba07031 100755 --- a/modules/entities/xml/IVS/requests_definitions.xml +++ b/modules/entities/xml/IVS/requests_definitions.xml @@ -14,11 +14,6 @@ <parameter name="display" value="true"/> <parameter name="module" value="entities"/> </requestDefinition> - <requestDefinition method="POST" path="/apps/maarch_entreprise/index.php" validationRule="select_listmodels" > - <parameter name="page" value="select_listmodels"/> - <parameter name="display" value="true"/> - <parameter name="module" value="entities"/> - </requestDefinition> <requestDefinition method="POST" path="/apps/maarch_entreprise/index.php" validationRule="save_list_diff" > <parameter name="page" value="save_list_diff"/> <parameter name="display" value="true"/> @@ -86,47 +81,6 @@ <parameter name="page" value="admin_difflist_type_validate"/> <parameter name="module" value="entities"/> </requestDefinition> - <requestDefinition method="GET" path="/apps/maarch_entreprise/index.php" validationRule="admin_listmodels" > - <parameter name="page" value="admin_listmodels"/> - <parameter name="module" value="entities"/> - </requestDefinition> - <requestDefinition method="GET" path="/apps/maarch_entreprise/index.php" validationRule="admin_listmodel" > - <parameter name="page" value="admin_listmodel"/> - <parameter name="module" value="entities"/> - </requestDefinition> - <requestDefinition method="POST" path="/apps/maarch_entreprise/index.php" validationRule="admin_listmodel" > - <parameter name="page" value="admin_listmodel"/> - <parameter name="display" value="true"/> - <parameter name="module" value="entities"/> - </requestDefinition> - <requestDefinition method="POST" path="/apps/maarch_entreprise/index.php" validationRule="admin_listmodel_setObjectId"> - <parameter name="page" value="admin_listmodel_setObjectId"/> - <parameter name="display" value="true"/> - <parameter name="module" value="entities"/> - </requestDefinition> - <requestDefinition method="POST" path="/apps/maarch_entreprise/index.php" validationRule="admin_listmodel_validateHeader"> - <parameter name="page" value="admin_listmodel_validateHeader"/> - <parameter name="display" value="true"/> - <parameter name="module" value="entities"/> - </requestDefinition> - <requestDefinition method="POST" path="/apps/maarch_entreprise/index.php" validationRule="admin_listmodel_save"> - <parameter name="page" value="admin_listmodel_save"/> - <parameter name="display" value="true"/> - <parameter name="module" value="entities"/> - </requestDefinition> - <requestDefinition method="GET" path="/apps/maarch_entreprise/index.php" validationRule="admin_listmodel_save"> - <parameter name="page" value="admin_listmodel_save"/> - <parameter name="module" value="entities"/> - </requestDefinition> - <requestDefinition method="GET" path="/apps/maarch_entreprise/index.php" validationRule="admin_listmodel_setObjectType"> - <parameter name="page" value="admin_listmodel_setObjectType"/> - <parameter name="module" value="entities"/> - </requestDefinition> - <requestDefinition method="POST" path="/apps/maarch_entreprise/index.php" validationRule="admin_listmodel_setObjectType"> - <parameter name="page" value="admin_listmodel_setObjectType"/> - <parameter name="display" value="true"/> - <parameter name="module" value="entities"/> - </requestDefinition> <requestDefinition method="GET" path="/apps/maarch_entreprise/index.php" validationRule="check_user_entities"> <parameter name="page" value="check_user_entities"/> <parameter name="module" value="entities"/> diff --git a/modules/entities/xml/IVS/validation_rules.xml b/modules/entities/xml/IVS/validation_rules.xml index 8f478edc6bfe8c88653a5cf42d279b4081dd3844..f4c89e9ac591d7d24c581ab7afd084180a305451 100755 --- a/modules/entities/xml/IVS/validation_rules.xml +++ b/modules/entities/xml/IVS/validation_rules.xml @@ -11,11 +11,6 @@ <parameter name="module" type="identifier" /> <parameter name="entities" type="ajax_ids" /> </validationRule> - <validationRule name="select_listmodels" extends="standardForm" mode="error"> - <parameter name="module" type="identifier" /> - <parameter name="objectType" type="string" /> - <parameter name="returnElementType" type="string" /> - </validationRule> <validationRule name="save_list_diff" extends="standardForm" mode="error"> <parameter name="module" type="identifier" /> <parameter name="mode" type="entities_table_list" /> @@ -86,44 +81,6 @@ <parameter name="allow_entities" type="string" /> <parameter name="mode" type="mode" /> </validationRule> - <validationRule name="admin_listmodels" extends="standardForm" mode="error"> - <parameter name="module" type="identifier" /> - </validationRule> - <validationRule name="admin_listmodel" extends="standardForm" mode="error"> - <parameter name="module" type="identifier" /> - <parameter name="id" type="string" /> - <parameter name="mode" type="mode" /> - </validationRule> - <validationRule name="admin_listmodel_setObjectId" extends="standardForm" mode="error"> - <parameter name="module" type="identifier" /> - <parameter name="objectId" type="string" /> - <parameter name="objectType" type="string" /> - <parameter name="mode" type="mode" /> - </validationRule> - <validationRule name="admin_listmodel_validateHeader" extends="standardForm" mode="error"> - <parameter name="description" type="string" /> - <parameter name="objectId" type="string" /> - <parameter name="objectType" type="string" /> - <parameter name="title" type="string" /> - </validationRule> - <validationRule name="admin_listmodel_save" extends="standardForm" mode="error"> - <parameter name="module" type="identifier" /> - <parameter name="objectId" type="string" /> - <parameter name="objectType" type="string" /> - <parameter name="description" type="string" /> - <parameter name="title" type="string" /> - </validationRule> - <validationRule name="admin_listmodel_setObjectType" extends="standardForm" mode="error"> - <parameter name="module" type="identifier" /> - <parameter name="objectType" type="identifier" /> - </validationRule> - <validationRule name="load_listmodel" extends="standardForm" mode="error"> - <parameter name="module" type="identifier" /> - <parameter name="objectType" type="string" /> - <parameter name="objectId" type="string" /> - <parameter name="category" type="string" /> - <parameter name="origin" type="identifier" /> - </validationRule> <validationRule name="check_user_entities" extends="standardForm" mode="error"> <parameter name="module" type="identifier" /> <parameter name="form_values" type="string" /> diff --git a/modules/entities/xml/config.xml b/modules/entities/xml/config.xml index e357c4b19c476a33c66097a388d0f3f067cf4286..e766dfeeb9a02630d918957478ad1d2281adfdfe 100755 --- a/modules/entities/xml/config.xml +++ b/modules/entities/xml/config.xml @@ -9,7 +9,6 @@ <TABLENAME> <ent_entities>entities</ent_entities> <ent_users_entities>users_entities</ent_users_entities> - <ent_listmodels>listmodels</ent_listmodels> <ent_listinstance>listinstance</ent_listinstance> <ent_groupbasket_redirect>groupbasket_redirect</ent_groupbasket_redirect> </TABLENAME> @@ -20,4 +19,4 @@ <entityval>true</entityval> <entityban>true</entityban> </HISTORY> -</root> \ No newline at end of file +</root> diff --git a/modules/visa/class/class_modules_tools_Abstract.php b/modules/visa/class/class_modules_tools_Abstract.php index b4ed9ad244c57675f05c0fab1a0a085a823aff30..a090da200a277165a9c9bc818e563f36b2ed9371 100755 --- a/modules/visa/class/class_modules_tools_Abstract.php +++ b/modules/visa/class/class_modules_tools_Abstract.php @@ -149,15 +149,6 @@ abstract class visa_Abstract extends Database public function saveModelWorkflow($id_list, $workflow, $typeList, $title) { - require_once 'modules/entities/class/class_manage_listdiff.php'; - $diff_list = new diffusion_list(); - - $diff_list->save_listmodel( - $workflow, - $typeList, - $id_list, - $title - ); } protected function getWorkflowsNumberByTitle($title) @@ -402,15 +393,8 @@ abstract class visa_Abstract extends Database $str .= ' $j("#visaUserList").chosen({width: "250px", disable_search_threshold: 10});'; $str .= '</script>'; - require_once 'modules/entities/class/class_manage_listdiff.php'; - $diff_list = new diffusion_list(); - $listModels = $diff_list->select_listmodels($typeList); - $str .= ' <select data-placeholder="'._ADD_VISA_MODEL.'" name="modelList" id="modelList" onchange="loadVisaModelUsers();">'; $str .= '<option value=""></option>'; - foreach ($listModels as $lm) { - $str .= '<option value="'.$lm['object_id'].'">'.$lm['title'].'</option>'; - } $str .= '</select>'; $str .= '<script>'; diff --git a/modules/visa/load_listmodel_visa.php b/modules/visa/load_listmodel_visa.php index 13f09a56adcc451d6795179ea8914f60ccde80d9..4fe6c6a5bebc1505df97a0f0271a5b0970cfa5e3 100755 --- a/modules/visa/load_listmodel_visa.php +++ b/modules/visa/load_listmodel_visa.php @@ -40,9 +40,6 @@ require_once 'modules'.DIRECTORY_SEPARATOR.'visa'.DIRECTORY_SEPARATOR } } - // Fill session with listmodel - $_SESSION[$origin]['diff_list'] = $diffList->get_listmodel($objectType, $objectId); - $_SESSION[$origin]['diff_list']['difflist_type'] = $_SESSION[$origin]['diff_list']['object_type']; $roles = $diffList->list_difflist_roles(); $circuit = $_SESSION[$origin]['diff_list']; if (!isset($circuit['visa']['users']) && !isset($circuit['sign']['users'])) { diff --git a/modules/visa/redirect_visa_entity.php b/modules/visa/redirect_visa_entity.php index c8793932654197dfca21c386af8589f5e6760c7c..db69f7fc8420f11830e60f3aa768bd66d9f8d13c 100755 --- a/modules/visa/redirect_visa_entity.php +++ b/modules/visa/redirect_visa_entity.php @@ -11,12 +11,7 @@ function manage_empty_error($arr_id, $history, $id_action, $label_action, $statu $stmt = $db->query('SELECT initiator FROM res_letterbox WHERE res_id = ?', [$res_id]); $resInitiator = $stmt->fetch(); - $stmt = $db->query("SELECT item_id, item_type FROM listmodels WHERE object_id = ? and item_mode = 'dest'", [$resInitiator['initiator']]); - $resListModel = $stmt->fetch(); - if (!empty($resListModel)) { - $db->query("UPDATE listinstance SET item_id = ?, item_type = ? WHERE res_id = ? AND item_mode = 'dest'", [$resListModel['item_id'], $resListModel['item_type'], $res_id]); - $db->query("UPDATE res_letterbox SET dest_user = ?, destination = ? WHERE res_id = ?", [$resListModel['item_id'], $resInitiator['initiator'], $res_id]); - } + $resListModel = []; $stmt = $db->query("SELECT entity_label FROM entities WHERE entity_id = ?", [$resInitiator['initiator']]); $resEntity = $stmt->fetch(); diff --git a/sql/structure.sql b/sql/structure.sql index 6137cae0d11acafb737d7111f1e7005bf9a495de..07c46f625e9162d0232cc7d8fe6a459148eb7708 100755 --- a/sql/structure.sql +++ b/sql/structure.sql @@ -427,22 +427,6 @@ CREATE TABLE listinstance ) WITH (OIDS=FALSE); -CREATE TABLE listmodels -( - id serial NOT NULL, - object_id character varying(50) NOT NULL, - object_type character varying(255) NOT NULL, - "sequence" bigint NOT NULL, - item_id character varying(128) NOT NULL, - item_type character varying(255) NOT NULL, - item_mode character varying(50) NOT NULL, - title character varying(255), - description character varying(255), - process_comment character varying(255), - visible character varying(1) NOT NULL DEFAULT 'Y'::bpchar -) -WITH (OIDS=FALSE); - CREATE TABLE difflist_types ( difflist_type_id character varying(50) NOT NULL, @@ -1455,6 +1439,29 @@ CREATE TABLE contacts_custom_fields_list ) WITH (OIDS=FALSE); +CREATE TABLE list_templates +( + id SERIAL NOT NULL, + title text NOT NULL, + description text, + type CHARACTER VARYING(32) NOT NULL, + entity_id INTEGER, + CONSTRAINT list_templates_pkey PRIMARY KEY (id) +) +WITH (OIDS=FALSE); + +CREATE TABLE list_templates_items +( + id SERIAL NOT NULL, + list_template_id INTEGER NOT NULL, + item_id INTEGER NOT NULL, + item_type CHARACTER VARYING(32) NOT NULL, + item_mode CHARACTER VARYING(64) NOT NULL, + sequence INTEGER NOT NULL, + CONSTRAINT list_templates_items_pkey PRIMARY KEY (id) +) +WITH (OIDS=FALSE); + /* users followed resources */ CREATE TABLE users_followed_resources ( diff --git a/src/app/contact/controllers/ContactController.php b/src/app/contact/controllers/ContactController.php index 2bc62f43d70a64deee57fc6257bb820783beb467..b5a8d8f369cc5d20ed863163445697688a7f2904 100755 --- a/src/app/contact/controllers/ContactController.php +++ b/src/app/contact/controllers/ContactController.php @@ -951,7 +951,7 @@ class ContactController if (strpos($mandatoryParameter['identifier'], 'contactCustomField_') !== false) { $customId = explode('_', $mandatoryParameter['identifier'])[1]; if (empty($body['customFields'][$customId])) { - return ['errors' => "Body {$body['customFields'][$customId]} is mandatory"]; + return ['errors' => "Body customFields[{$customId}] is mandatory"]; } } else { if (empty($body[$mandatoryParameter['identifier']])) { diff --git a/src/app/entity/controllers/EntityController.php b/src/app/entity/controllers/EntityController.php index 9c46e96ff824e284b089174cb4d3a97c7ee11d2c..bca2211b0349de8304ce1905757338f04971559b 100755 --- a/src/app/entity/controllers/EntityController.php +++ b/src/app/entity/controllers/EntityController.php @@ -17,6 +17,7 @@ namespace Entity\controllers; use Basket\models\GroupBasketRedirectModel; use Entity\models\EntityModel; use Entity\models\ListInstanceModel; +use Entity\models\ListTemplateItemModel; use Entity\models\ListTemplateModel; use Group\controllers\PrivilegeController; use Group\models\GroupModel; @@ -89,59 +90,59 @@ class EntityController $entity['roles'][$key]['id'] = 'cc'; } } - //Diffusion list + + //List Templates $listTemplates = ListTemplateModel::get([ - 'select' => ['id', 'object_type', 'item_id', 'item_type', 'item_mode', 'title', 'description', 'sequence'], - 'where' => ['object_id = ?'], - 'data' => [$aArgs['id']] + 'select' => ['id', 'title', 'description', 'type'], + 'where' => ['entity_id = ?'], + 'data' => [$entity['id']] ]); $entity['listTemplate'] = []; foreach ($rolesForService as $role) { $role == 'copy' ? $entity['listTemplate']['cc'] = [] : $entity['listTemplate'][$role] = []; } - $entity['visaTemplate'] = []; + $entity['visaCircuit'] = []; + $entity['opinionCircuit'] = []; foreach ($listTemplates as $listTemplate) { - if ($listTemplate['object_type'] == 'entity_id' && !empty($listTemplate['item_id'])) { - $entity['listTemplate']['id'] = $listTemplate['id']; - if ($listTemplate['item_type'] == 'user_id') { - $statusUser = UserModel::getByLogin(['select' => ['status', 'firstname', 'lastname'], 'login' => $listTemplate['item_id']]); - if ($statusUser['status'] != 'DEL') { - $entity['listTemplate'][$listTemplate['item_mode']][] = [ - 'item_type' => $listTemplate['item_type'], - 'item_id' => $listTemplate['item_id'], - 'sequence' => $listTemplate['sequence'], - 'title' => $listTemplate['title'], - 'description' => $listTemplate['description'], - 'labelToDisplay' => $statusUser['firstname']. ' ' .$statusUser['lastname'], - 'descriptionToDisplay' => UserModel::getPrimaryEntityByUserId(['userId' => $listTemplate['item_id']])['entity_label'] + $listTemplateItems = ListTemplateItemModel::get(['select' => ['*'], 'where' => ['list_template_id = ?'], 'data' => [$listTemplate['id']]]); + + if ($listTemplate['type'] == 'diffusionList') { + $entity['listTemplate'] = $listTemplate; + $entity['listTemplate']['items'] = []; + foreach ($listTemplateItems as $listTemplateItem) { + if ($listTemplateItem['item_type'] == 'user') { + $entity['listTemplate']['items'][$listTemplateItem['item_mode']][] = [ + 'id' => $listTemplateItem['item_id'], + 'type' => $listTemplateItem['item_type'], + 'sequence' => $listTemplateItem['sequence'], + 'labelToDisplay' => UserModel::getLabelledUserById(['id' => $listTemplateItem['item_id']]), + 'descriptionToDisplay' => UserModel::getPrimaryEntityById(['id' => $listTemplateItem['item_id'], 'select' => ['entities.entity_label']])['entity_label'] + ]; + } elseif ($listTemplateItem['item_type'] == 'entity') { + $entity['listTemplate']['items'][$listTemplateItem['item_mode']][] = [ + 'id' => $listTemplateItem['item_id'], + 'type' => $listTemplateItem['item_type'], + 'sequence' => $listTemplateItem['sequence'], + 'labelToDisplay' => EntityModel::getById(['id' => $listTemplateItem['item_id'], 'select' => ['entity_label']])['entity_label'], + 'descriptionToDisplay' => '' ]; } - } elseif ($listTemplate['item_type'] == 'entity_id') { - $entity['listTemplate'][$listTemplate['item_mode']][] = [ - 'item_type' => $listTemplate['item_type'], - 'item_id' => $listTemplate['item_id'], - 'sequence' => $listTemplate['sequence'], - 'title' => $listTemplate['title'], - 'description' => $listTemplate['description'], - 'labelToDisplay' => EntityModel::getByEntityId(['entityId' => $listTemplate['item_id'], 'select' => ['entity_label']])['entity_label'], - 'descriptionToDisplay' => '' + } + } else { + $entity[$listTemplate['type']] = $listTemplate; + $entity[$listTemplate['type']]['items'] = []; + foreach ($listTemplateItems as $listTemplateItem) { + $entity[$listTemplate['type']]['items'][] = [ + 'id' => $listTemplateItem['item_id'], + 'type' => $listTemplateItem['item_type'], + 'mode' => $listTemplateItem['item_mode'], + 'sequence' => $listTemplateItem['sequence'], + 'idToDisplay' => UserModel::getLabelledUserById(['id' => $listTemplateItem['item_id']]), + 'descriptionToDisplay' => UserModel::getPrimaryEntityById(['id' => $listTemplateItem['item_id'], 'select' => ['entities.entity_label']])['entity_label'] ]; } } - if ($listTemplate['object_type'] == 'VISA_CIRCUIT' && !empty($listTemplate['item_id'])) { - $entity['visaTemplate'][] = [ - 'id' => $listTemplate['id'], - 'item_type' => $listTemplate['item_type'], - 'item_id' => $listTemplate['item_id'], - 'item_mode' => $listTemplate['item_mode'], - 'sequence' => $listTemplate['sequence'], - 'title' => $listTemplate['title'], - 'description' => $listTemplate['description'], - 'idToDisplay' => UserModel::getLabelledUserById(['login' => $listTemplate['item_id']]), - 'descriptionToDisplay' => UserModel::getPrimaryEntityByUserId(['userId' => $listTemplate['item_id']])['entity_label'] - ]; - } } $entity['templates'] = TemplateModel::getByEntity([ diff --git a/src/app/entity/controllers/ListTemplateController.php b/src/app/entity/controllers/ListTemplateController.php index f99b2b7864d3a93b0470b6f3156acaa75ed6806f..e6db8450861e49f2241623821e258837d46d2001 100755 --- a/src/app/entity/controllers/ListTemplateController.php +++ b/src/app/entity/controllers/ListTemplateController.php @@ -15,6 +15,7 @@ namespace Entity\controllers; use Entity\models\EntityModel; +use Entity\models\ListTemplateItemModel; use Entity\models\ListTemplateModel; use Group\controllers\PrivilegeController; use History\controllers\HistoryController; @@ -32,54 +33,47 @@ class ListTemplateController { public function get(Request $request, Response $response) { - $rawListTemplates = ListTemplateModel::get(['select' => ['id', 'object_id', 'object_type', 'title', 'description']]); - - $listTemplates = []; - $tmpTemplates = []; - foreach ($rawListTemplates as $rawListTemplate) { - if (empty($tmpTemplates[$rawListTemplate['object_type']][$rawListTemplate['object_id']])) { - $listTemplates[] = $rawListTemplate; - $tmpTemplates[$rawListTemplate['object_type']][$rawListTemplate['object_id']] = 1; - } - } + $listTemplates = ListTemplateModel::get(['select' => ['id', 'type', 'entity_id as "entityId"', 'title', 'description']]); return $response->withJson(['listTemplates' => $listTemplates]); } - public function getById(Request $request, Response $response, array $aArgs) + public function getById(Request $request, Response $response, array $args) { - $listTemplates = ListTemplateModel::getById(['id' => $aArgs['id']]); - if (empty($listTemplates)) { + $listTemplate = ListTemplateModel::getById(['id' => $args['id'], 'select' => ['title', 'description', 'type', 'entity_id']]); + if (empty($listTemplate)) { return $response->withStatus(400)->withJson(['errors' => 'List template not found']); } - foreach ($listTemplates as $key => $value) { - if ($value['item_type'] == 'entity_id') { - $listTemplates[$key]['idToDisplay'] = entitymodel::getByEntityId(['entityId' => $value['item_id'], 'select' => ['entity_label']])['entity_label']; - $listTemplates[$key]['descriptionToDisplay'] = ''; + $listTemplateItems = ListTemplateItemModel::get(['select' => ['*'], 'where' => ['list_template_id = ?'], 'data' => [$args['id']]]); + foreach ($listTemplateItems as $key => $value) { + if ($value['item_type'] == 'entity') { + $listTemplateItems[$key]['idToDisplay'] = EntityModel::getById(['id' => $value['item_id'], 'select' => ['entity_label']])['entity_label']; + $listTemplateItems[$key]['descriptionToDisplay'] = ''; } else { - $listTemplates[$key]['idToDisplay'] = UserModel::getLabelledUserById(['login' => $value['item_id']]); - $listTemplates[$key]['descriptionToDisplay'] = UserModel::getPrimaryEntityByUserId(['userId' => $value['item_id']])['entity_label']; + $listTemplateItems[$key]['idToDisplay'] = UserModel::getLabelledUserById(['id' => $value['item_id']]); + $listTemplateItems[$key]['descriptionToDisplay'] = UserModel::getPrimaryEntityById(['id' => $value['item_id'], 'select' => ['entity_label']])['entity_label']; } } $roles = EntityModel::getRoles(); - $listTemplateTypes = ListTemplateModel::getTypes(['select' => ['difflist_type_roles'], 'where' => ['difflist_type_id = ?'], 'data' => [$listTemplates[0]['object_type']]]); + $difflistType = $listTemplate['type'] == 'diffusionList' ? 'entity_id' : $listTemplate['type'] == 'visaCircuit' ? 'VISA_CIRCUIT' : 'AVIS_CIRCUIT'; + $listTemplateTypes = ListTemplateModel::getTypes(['select' => ['difflist_type_roles'], 'where' => ['difflist_type_id = ?'], 'data' => [$difflistType]]); $rolesForService = empty($listTemplateTypes[0]['difflist_type_roles']) ? [] : explode(' ', $listTemplateTypes[0]['difflist_type_roles']); foreach ($roles as $key => $role) { if (!in_array($role['id'], $rolesForService)) { unset($roles[$key]); } elseif ($role['id'] == 'copy') { - $entity['roles'][$key]['id'] = 'cc'; + $roles[$key]['id'] = 'cc'; } } $listTemplate = [ - 'object_id' => $listTemplates[0]['object_id'], - 'object_type' => $listTemplates[0]['object_type'], - 'title' => $listTemplates[0]['title'], - 'description' => $listTemplates[0]['description'], - 'diffusionList' => $listTemplates, + 'title' => $listTemplate['title'], + 'description' => $listTemplate['description'], + 'type' => $listTemplate['type'], + 'entityId' => $listTemplate['entity_id'], + 'items' => $listTemplateItems, 'roles' => array_values($roles) ]; @@ -88,64 +82,64 @@ class ListTemplateController public function create(Request $request, Response $response) { - $data = $request->getParams(); + $body = $request->getParsedBody(); - if (!PrivilegeController::hasPrivilege(['privilegeId' => 'manage_entities', 'userId' => $GLOBALS['id']]) && !strstr($data['object_id'], 'VISA_CIRCUIT_') && !strstr($data['object_id'], 'AVIS_CIRCUIT_')) { + if (!PrivilegeController::hasPrivilege(['privilegeId' => 'manage_entities', 'userId' => $GLOBALS['id']]) && !empty($body['entityId'])) { return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']); } - if (!PrivilegeController::hasPrivilege(['privilegeId' => 'admin_listmodels', 'userId' => $GLOBALS['id']]) && (strstr($data['object_id'], 'VISA_CIRCUIT_') || strstr($data['object_id'], 'AVIS_CIRCUIT_'))) { + if (!PrivilegeController::hasPrivilege(['privilegeId' => 'admin_listmodels', 'userId' => $GLOBALS['id']]) && empty($body['entityId'])) { return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']); } - $allowedObjectTypes = ['entity_id', 'VISA_CIRCUIT', 'AVIS_CIRCUIT']; - $check = Validator::stringType()->notEmpty()->validate($data['object_type']) && in_array($data['object_type'], $allowedObjectTypes); - $check = $check && (Validator::stringType()->notEmpty()->validate($data['object_id']) || $data['object_type'] != 'entity_id'); - $check = $check && Validator::arrayType()->notEmpty()->validate($data['items']); - $check = $check && (Validator::stringType()->notEmpty()->validate($data['title']) || Validator::stringType()->notEmpty()->validate($data['description'])); + $allowedTypes = ['diffusionList', 'visaCircuit', 'opinionCircuit']; + $check = Validator::stringType()->notEmpty()->validate($body['type']) && in_array($body['type'], $allowedTypes); + $check = $check && Validator::arrayType()->notEmpty()->validate($body['items']); + $check = $check && (Validator::stringType()->notEmpty()->validate($body['title']) || Validator::stringType()->notEmpty()->validate($body['description'])); if (!$check) { return $response->withStatus(400)->withJson(['errors' => 'Bad Request']); } - if (!empty($data['object_id']) && $data['object_type'] != 'AVIS_CIRCUIT') { - $listTemplate = ListTemplateModel::get(['select' => [1], 'where' => ['object_id = ?', 'object_type = ?'], 'data' => [$data['object_id'], $data['object_type']]]); + if (!empty($body['entityId'])) { + $listTemplate = ListTemplateModel::get(['select' => [1], 'where' => ['entity_id = ?', 'type = ?'], 'data' => [$body['entityId'], $body['type']]]); if (!empty($listTemplate)) { return $response->withStatus(400)->withJson(['errors' => 'Entity is already linked to this type of template']); } - $aEntities = EntityModel::getAllowedEntitiesByUserId(['userId' => $GLOBALS['userId']]); - foreach ($aEntities as $aEntity) { - if ($aEntity['entity_id'] == $data['object_id'] && $aEntity['allowed'] == false) { + $entities = EntityModel::getAllowedEntitiesByUserId(['userId' => $GLOBALS['userId']]); + foreach ($entities as $entity) { + if ($entity['serialId'] == $body['entityId'] && $entity['allowed'] == false) { return $response->withStatus(403)->withJson(['errors' => 'Entity out of perimeter']); } } - } else { - $data['object_id'] = $data['object_type'] . '_' . CoreConfigModel::uniqueId(); } - $checkItems = ListTemplateController::checkItems(['items' => $data['items']]); - if (!empty($checkItems['errors'])) { - return $response->withStatus(400)->withJson(['errors' => $checkItems['errors']]); + $control = ListTemplateController::controlItems(['items' => $body['items']]); + if (!empty($control['errors'])) { + return $response->withStatus(400)->withJson(['errors' => $control['errors']]); } - $listTemplateId = null; - foreach ($data['items'] as $item) { - $listTemplateId = ListTemplateModel::create([ - 'object_id' => $data['object_id'], - 'object_type' => $data['object_type'], - 'title' => $data['title'], - 'description' => $data['description'], - 'sequence' => $item['sequence'], - 'item_id' => $item['item_id'], - 'item_type' => $item['item_type'], - 'item_mode' => $item['item_mode'], + $listTemplateId = ListTemplateModel::create([ + 'title' => $body['title'] ?? $body['description'], + 'description' => $body['description'] ?? null, + 'type' => $body['type'], + 'entity_id' => $body['entityId'] ?? null + ]); + + foreach ($body['items'] as $key => $item) { + ListTemplateItemModel::create([ + 'list_template_id' => $listTemplateId, + 'item_id' => $item['id'], + 'item_type' => $item['type'], + 'item_mode' => $item['mode'], + 'sequence' => $key, ]); } HistoryController::add([ - 'tableName' => 'listmodels', - 'recordId' => $data['object_id'], + 'tableName' => 'list_templates', + 'recordId' => $listTemplateId, 'eventType' => 'ADD', - 'info' => _LIST_TEMPLATE_CREATION . " : {$data['title']} {$data['description']}", + 'info' => _LIST_TEMPLATE_CREATION . " : {$body['title']} {$body['description']}", 'moduleId' => 'listTemplate', 'eventId' => 'listTemplateCreation', ]); @@ -153,111 +147,110 @@ class ListTemplateController return $response->withJson(['id' => $listTemplateId]); } - public function update(Request $request, Response $response, array $aArgs) + public function update(Request $request, Response $response, array $args) { - $data = $request->getParams(); - $check = Validator::arrayType()->notEmpty()->validate($data['items']); - $check = $check && (Validator::stringType()->notEmpty()->validate($data['title']) || Validator::stringType()->notEmpty()->validate($data['description'])); + $body = $request->getParsedBody(); + + $check = Validator::arrayType()->notEmpty()->validate($body['items']); + $check = $check && Validator::stringType()->notEmpty()->validate($body['title']); if (!$check) { return $response->withStatus(400)->withJson(['errors' => 'Bad Request']); } - $listTemplates = ListTemplateModel::getById(['id' => $aArgs['id'], 'select' => ['object_id', 'object_type']]); - if (!PrivilegeController::hasPrivilege(['privilegeId' => 'manage_entities', 'userId' => $GLOBALS['id']]) && !strstr($listTemplates[0]['object_id'], 'VISA_CIRCUIT_') && !strstr($listTemplates[0]['object_id'], 'AVIS_CIRCUIT_')) { + $listTemplate = ListTemplateModel::getById(['id' => $args['id'], 'select' => ['entity_id', 'type']]); + if (!PrivilegeController::hasPrivilege(['privilegeId' => 'manage_entities', 'userId' => $GLOBALS['id']]) && !empty($listTemplate['entityId'])) { return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']); } - if (!PrivilegeController::hasPrivilege(['privilegeId' => 'admin_listmodels', 'userId' => $GLOBALS['id']]) && (strstr($listTemplates[0]['object_id'], 'VISA_CIRCUIT_') || strstr($listTemplates[0]['object_id'], 'AVIS_CIRCUIT_'))) { + if (!PrivilegeController::hasPrivilege(['privilegeId' => 'admin_listmodels', 'userId' => $GLOBALS['id']]) && empty($listTemplate['entityId'])) { return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']); } - if (empty($listTemplates)) { + if (empty($listTemplate)) { return $response->withStatus(400)->withJson(['errors' => 'List template not found']); } - if (!strstr($listTemplates[0]['object_id'], 'VISA_CIRCUIT_') && !strstr($listTemplates[0]['object_id'], 'AVIS_CIRCUIT_')) { - $aEntities = EntityModel::getAllowedEntitiesByUserId(['userId' => $GLOBALS['userId']]); - foreach ($aEntities as $aEntity) { - if ($aEntity['entity_id'] == $listTemplates[0]['object_id'] && $aEntity['allowed'] == false) { + if (!empty($listTemplate['entityId'])) { + $entities = EntityModel::getAllowedEntitiesByUserId(['userId' => $GLOBALS['userId']]); + foreach ($entities as $entity) { + if ($entity['serialId'] == $listTemplate['entityId'] && $entity['allowed'] == false) { return $response->withStatus(403)->withJson(['errors' => 'Entity out of perimeter']); } } } - $checkItems = ListTemplateController::checkItems(['items' => $data['items']]); - if (!empty($checkItems['errors'])) { - return $response->withStatus(400)->withJson(['errors' => $checkItems['errors']]); + $control = ListTemplateController::controlItems(['items' => $body['items']]); + if (!empty($control['errors'])) { + return $response->withStatus(400)->withJson(['errors' => $control['errors']]); } - ListTemplateModel::delete([ - 'where' => ['object_id = ?', 'object_type = ?'], - 'data' => [$listTemplates[0]['object_id'], $listTemplates[0]['object_type']] + ListTemplateModel::update([ + 'set' => ['title' => $body['title'], 'description' => $body['description'] ?? null], + 'where' => ['id = ?'], + 'data' => [$args['id']] ]); - $listTemplateId = null; - foreach ($data['items'] as $item) { - $listTemplateId = ListTemplateModel::create([ - 'object_id' => $listTemplates[0]['object_id'], - 'object_type' => $listTemplates[0]['object_type'], - 'title' => $data['title'], - 'description' => $data['description'], - 'sequence' => $item['sequence'], - 'item_id' => $item['item_id'], - 'item_type' => $item['item_type'], - 'item_mode' => $item['item_mode'], + ListTemplateItemModel::delete(['where' => ['list_template_id = ?'], 'data' => [$args['id']]]); + foreach ($body['items'] as $key => $item) { + ListTemplateItemModel::create([ + 'list_template_id' => $args['id'], + 'item_id' => $item['id'], + 'item_type' => $item['type'], + 'item_mode' => $item['mode'], + 'sequence' => $key, ]); } HistoryController::add([ - 'tableName' => 'listmodels', - 'recordId' => $listTemplates[0]['object_id'], + 'tableName' => 'list_templates', + 'recordId' => $args['id'], 'eventType' => 'UP', - 'info' => _LIST_TEMPLATE_MODIFICATION . " : {$data['title']} {$data['description']}", + 'info' => _LIST_TEMPLATE_MODIFICATION . " : {$body['title']} {$body['description']}", 'moduleId' => 'listTemplate', 'eventId' => 'listTemplateModification', ]); - return $response->withJson(['id' => $listTemplateId]); + return $response->withStatus(204); } - public function delete(Request $request, Response $response, array $aArgs) + public function delete(Request $request, Response $response, array $args) { - $listTemplates = ListTemplateModel::getById(['id' => $aArgs['id'], 'select' => ['object_id', 'object_type']]); - - if (!PrivilegeController::hasPrivilege(['privilegeId' => 'manage_entities', 'userId' => $GLOBALS['id']]) && !strstr($listTemplates[0]['object_id'], 'VISA_CIRCUIT_') && !strstr($listTemplates[0]['object_id'], 'AVIS_CIRCUIT_')) { + $listTemplate = ListTemplateModel::getById(['id' => $args['id'], 'select' => ['entity_id', 'type', 'title']]); + if (!PrivilegeController::hasPrivilege(['privilegeId' => 'manage_entities', 'userId' => $GLOBALS['id']]) && !empty($listTemplate['entityId'])) { return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']); } - if (!PrivilegeController::hasPrivilege(['privilegeId' => 'admin_listmodels', 'userId' => $GLOBALS['id']]) && (strstr($listTemplates[0]['object_id'], 'VISA_CIRCUIT_') || strstr($listTemplates[0]['object_id'], 'AVIS_CIRCUIT_'))) { + if (!PrivilegeController::hasPrivilege(['privilegeId' => 'admin_listmodels', 'userId' => $GLOBALS['id']]) && empty($listTemplate['entityId'])) { return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']); } - - if (empty($listTemplates)) { + if (empty($listTemplate)) { return $response->withStatus(400)->withJson(['errors' => 'List template not found']); } - if (!strstr($listTemplates[0]['object_id'], 'VISA_CIRCUIT_') && !strstr($listTemplates[0]['object_id'], 'AVIS_CIRCUIT_')) { - $aEntities = EntityModel::getAllowedEntitiesByUserId(['userId' => $GLOBALS['userId']]); - foreach ($aEntities as $aEntity) { - if ($aEntity['entity_id'] == $listTemplates[0]['object_id'] && $aEntity['allowed'] == false) { + if (!empty($listTemplate['entityId'])) { + $entities = EntityModel::getAllowedEntitiesByUserId(['userId' => $GLOBALS['userId']]); + foreach ($entities as $entity) { + if ($entity['serialId'] == $listTemplate['entityId'] && $entity['allowed'] == false) { return $response->withStatus(403)->withJson(['errors' => 'Entity out of perimeter']); } } } ListTemplateModel::delete([ - 'where' => ['object_id = ?', 'object_type = ?'], - 'data' => [$listTemplates[0]['object_id'], $listTemplates[0]['object_type']] + 'where' => ['id = ?'], + 'data' => [$args['id']] ]); + ListTemplateItemModel::delete(['where' => ['list_template_id = ?'], 'data' => [$args['id']]]); + HistoryController::add([ - 'tableName' => 'listmodels', - 'recordId' => $listTemplates[0]['object_id'], + 'tableName' => 'list_templates', + 'recordId' => $args['id'], 'eventType' => 'DEL', - 'info' => _LIST_TEMPLATE_SUPPRESSION . " : {$listTemplates[0]['object_id']} {$listTemplates[0]['object_type']}", + 'info' => _LIST_TEMPLATE_SUPPRESSION . " : {$listTemplate['title']}", 'moduleId' => 'listTemplate', 'eventId' => 'listTemplateSuppression', ]); - return $response->withJson(['success' => 'success']); + return $response->withStatus(204); } public function getByEntityId(Request $request, Response $response, array $args) @@ -267,26 +260,63 @@ class ListTemplateController return $response->withStatus(400)->withJson(['errors' => 'Entity does not exist']); } - $listTemplates = ListTemplateModel::get(['select' => ['*'], 'where' => ['object_id = ?'], 'data' => [$entity['entity_id']]]); + $queryParams = $request->getQueryParams(); - foreach ($listTemplates as $key => $value) { - if ($value['item_id'] == '') { - unset($listTemplates[$key]); - continue; - } - if ($value['item_type'] == 'entity_id') { - $listTemplates[$key]['labelToDisplay'] = Entitymodel::getByEntityId(['entityId' => $value['item_id'], 'select' => ['entity_label']])['entity_label']; - $listTemplates[$key]['descriptionToDisplay'] = ''; + $where = ['entity_id = ?']; + $data = [$args['entityId']]; + if (!empty($queryParams['type'])) { + if (in_array($queryParams['type'], ['visaCircuit', 'opinionCircuit'])) { + $where[] = 'type = ?'; + $data[] = $queryParams['type']; } else { - $listTemplates[$key]['labelToDisplay'] = UserModel::getLabelledUserById(['login' => $value['item_id']]); - $listTemplates[$key]['descriptionToDisplay'] = UserModel::getPrimaryEntityByUserId(['userId' => $value['item_id']])['entity_label']; + $where[] = 'type = ?'; + $data[] = 'diffusionList'; + } + } - $userInfos = UserModel::getByLowerLogin(['login' => $value['item_id'], 'select' => ['id']]); - $listTemplates[$key]['userId'] = $userInfos['id']; + $listTemplates = ListTemplateModel::get(['select' => ['*'], 'where' => $where, 'data' => $data]); + foreach ($listTemplates as $key => $listTemplate) { + $listTemplateItems = ListTemplateItemModel::get(['select' => ['*'], 'where' => ['list_template_id = ?'], 'data' => [$listTemplate['id']]]); + foreach ($listTemplateItems as $itemKey => $value) { + if ($value['item_type'] == 'entity') { + $listTemplateItems[$itemKey]['labelToDisplay'] = Entitymodel::getById(['id' => $value['item_id'], 'select' => ['entity_label']])['entity_label']; + $listTemplateItems[$itemKey]['descriptionToDisplay'] = ''; + } else { + $user = UserModel::getById(['id' => $value['item_id'], 'select' => ['firstname', 'lastname', 'external_id']]); + $listTemplateItems[$itemKey]['labelToDisplay'] = "{$user['firstname']} {$user['lastname']}"; + $listTemplateItems[$itemKey]['descriptionToDisplay'] = UserModel::getPrimaryEntityById(['id' => $value['item_id'], 'select' => ['entity_label']])['entity_label']; + + $externalId = json_decode($user['external_id'], true); + if (!empty($queryParams['maarchParapheur']) && !empty($externalId['maarchParapheur'])) { + $loadedXml = CoreConfigModel::getXmlLoaded(['path' => 'modules/visa/xml/remoteSignatoryBooks.xml']); + if ($loadedXml->signatoryBookEnabled == 'maarchParapheur') { + foreach ($loadedXml->signatoryBook as $signatoryBook) { + if ($signatoryBook->id == "maarchParapheur") { + $url = $signatoryBook->url; + $userId = $signatoryBook->userId; + $password = $signatoryBook->password; + break; + } + } + $curlResponse = CurlModel::execSimple([ + 'url' => rtrim($url, '/') . '/rest/users/' . $externalId['maarchParapheur'], + 'basicAuth' => ['user' => $userId, 'password' => $password], + 'headers' => ['content-type:application/json'], + 'method' => 'GET' + ]); + if (!empty($curlResponse['response']['user'])) { + $listTemplateItems[$itemKey]['externalId']['maarchParapheur'] = $externalId['maarchParapheur']; + } + } + } + + } } + + $listTemplates[$key]['items'] = $listTemplateItems; } - return $response->withJson(['listTemplate' => $listTemplates]); + return $response->withJson(['listTemplates' => $listTemplates]); } public function getByEntityIdWithMaarchParapheur(Request $request, Response $response, array $args) @@ -296,6 +326,8 @@ class ListTemplateController return $response->withStatus(400)->withJson(['errors' => 'Entity does not exist']); } + $queryParams = $request->getQueryParams(); + $listTemplates = ListTemplateModel::get(['select' => ['*'], 'where' => ['object_id = ?'], 'data' => [$entity['entity_id']]]); foreach ($listTemplates as $key => $value) { @@ -336,7 +368,7 @@ class ListTemplateController return $response->withJson(['listTemplate' => $listTemplates]); } - public function updateByUserWithEntityDest(Request $request, Response $response) + public function updateByUserWithEntityDest(Request $request, Response $response, array $args) { if (!PrivilegeController::hasPrivilege(['privilegeId' => 'admin_users', 'userId' => $GLOBALS['id']])) { return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']); @@ -346,23 +378,27 @@ class ListTemplateController DatabaseModel::beginTransaction(); + $allEntityIds = array_column($data['redirectListModels'], 'entity_id'); + $templates = ListTemplateModel::get(['select' => ['id'], 'where' => ['type = ?', 'entity_id in (?)'], 'data' => ['diffusionList', $allEntityIds]]); + $templates = array_column($templates, 'id'); foreach ($data['redirectListModels'] as $listModel) { - $user = UserModel::getByLogin(['login' => $listModel['redirectUserId']]); - if (empty($user) || $user['status'] != "OK") { + $redirectUser = UserModel::getByLogin(['login' => $listModel['redirectUserId'], 'select' => ['status', 'id']]); + if (empty($redirectUser) || $redirectUser['status'] != "OK") { DatabaseModel::rollbackTransaction(); return $response->withStatus(400)->withJson(['errors' => 'User not found or not active']); } - ListTemplateModel::update([ - 'set' => ['item_id' => $listModel['redirectUserId']], - 'where' => ['item_id = ?', 'object_id = ?', 'object_type = ?', 'item_mode = ?'], - 'data' => [$data['user_id'], $listModel['object_id'], 'entity_id', 'dest'] + ListTemplateItemModel::update([ + 'set' => ['item_id' => $redirectUser['id']], + 'where' => ['item_id = ?', 'item_type = ?', 'item_mode = ?', 'list_template_id in (?)'], + 'data' => [$args['itemId'], 'user', 'dest', $templates] ]); } + ListTemplateModel::deleteNoItemsOnes(); DatabaseModel::commitTransaction(); - return $response->withJson(['success' => 'success']); + return $response->withStatus(204); } public function getTypeRoles(Request $request, Response $response, array $aArgs) @@ -392,9 +428,10 @@ class ListTemplateController } $roles[$key]['usedIn'] = []; - $listTemplates = ListTemplateModel::get(['select' => ['object_id'], 'where' => ['object_type = ?', 'item_mode = ?'], 'data' => [$aArgs['typeId'], $roles[$key]['id']]]); + $type = $aArgs['typeId'] == 'entity_id' ? 'diffusionList' : ($aArgs['typeId'] == 'VISA_CIRCUIT' ? 'visaCircuit' : 'opinionCircuit'); + $listTemplates = ListTemplateModel::getWithItems(['select' => ['DISTINCT entity_id'], 'where' => ['type = ?', 'item_mode = ?', 'entity_id is not null'], 'data' => [$type, $roles[$key]['id']]]); foreach ($listTemplates as $listTemplate) { - $entity = Entitymodel::getByEntityId(['select' => ['short_label'], 'entityId' => $listTemplate['object_id']]); + $entity = Entitymodel::getById(['select' => ['short_label'], 'id' => $listTemplate['entity_id']]); $roles[$key]['usedIn'][] = $entity['short_label']; } } @@ -434,16 +471,31 @@ class ListTemplateController 'where' => ['difflist_type_id = ?'], 'data' => [$aArgs['typeId']] ]); + + $listTemplates = ListTemplateModel::get([ + 'select' => ['id'], + 'where' => ['type = ?'], + 'data' => ['diffusionList'] + ]); + $listTemplates = array_column($listTemplates, 'id'); + if (empty($roles)) { - ListTemplateModel::delete([ - 'where' => ['object_type = ?'], - 'data' => [$aArgs['typeId']] - ]); + if (!empty($listTemplates)) { + ListTemplateModel::delete([ + 'where' => ['type = ?'], + 'data' => ['diffusionList'] + ]); + ListTemplateItemModel::delete([ + 'where' => ['list_template_id in (?)'], + 'data' => [$listTemplates] + ]); + } } else { - ListTemplateModel::delete([ - 'where' => ['object_type = ?', 'item_mode not in (?)'], - 'data' => [$aArgs['typeId'], explode(' ', str_replace('copy', 'cc', $roles))] + ListTemplateItemModel::delete([ + 'where' => ['list_template_id in (?)', 'item_mode not in (?)'], + 'data' => [$listTemplates, explode(' ', str_replace('copy', 'cc', $roles))] ]); + ListTemplateModel::deleteNoItemsOnes(); } return $response->withJson(['success' => 'success']); @@ -513,51 +565,44 @@ class ListTemplateController return $response->withStatus(400)->withJson(['errors' => 'Query params circuit is empty']); } - $circuit = $queryParams['circuit'] == 'opinion' ? 'AVIS_CIRCUIT' : 'VISA_CIRCUIT'; + $circuit = $queryParams['circuit'] == 'opinion' ? 'opinionCircuit' : 'visaCircuit'; $resource = ResModel::getById(['resId' => $args['resId'], 'select' => ['destination']]); - $where = ['object_type = ?']; + $where = ['type = ?']; $data = [$circuit]; if (!empty($resource['destination'])) { - $where[] = '(object_id = ? OR object_id like ?)'; - $data[] = $resource['destination']; - $data[] = "{$circuit}_%"; - $orderBy = ["object_id='{$resource['destination']}' DESC", 'title']; + $entity = EntityModel::getByEntityId(['entityId' => $resource['destination'], 'select' => ['id']]); + $where[] = '(entity_id is null OR entity_id = ?)'; + $data[] = $entity['id']; + $orderBy = ["entity_id='{$entity['id']}' DESC", 'title']; } else { - $where[] = 'object_id like ?'; - $data[] = "{$circuit}_%"; + $where[] = 'entity_id is null'; $orderBy = ['title']; } - $circuits = []; - $listTemplates = ListTemplateModel::get(['select' => ['*'], 'where' => $where, 'data' => $data, 'orderBy' => $orderBy]); - foreach ($listTemplates as $value) { - $circuits[$value['object_id']] = ['id' => $value['id'], 'title' => $value['title']]; - } - - $circuits = array_values($circuits); + $circuits = ListTemplateModel::get(['select' => ['*'], 'where' => $where, 'data' => $data, 'orderBy' => $orderBy]); return $response->withJson(['circuits' => $circuits]); } - private static function checkItems(array $aArgs) + private static function controlItems(array $args) { - ValidatorModel::notEmpty($aArgs, ['items']); - ValidatorModel::arrayType($aArgs, ['items']); + ValidatorModel::notEmpty($args, ['items']); + ValidatorModel::arrayType($args, ['items']); $destFound = false; - foreach ($aArgs['items'] as $item) { + foreach ($args['items'] as $item) { if ($destFound && $item['item_mode'] == 'dest') { return ['errors' => 'More than one dest not allowed']; } - if (empty($item['item_id'])) { - return ['errors' => 'Item_id is empty']; + if (empty($item['id'])) { + return ['errors' => 'id is empty']; } - if (empty($item['item_type'])) { - return ['errors' => 'Item_type is empty']; + if (empty($item['type'])) { + return ['errors' => 'type is empty']; } - if (empty($item['item_mode'])) { - return ['errors' => 'Item_mode is empty']; + if (empty($item['mode'])) { + return ['errors' => 'mode is empty']; } if ($item['item_mode'] == 'dest') { $destFound = true; diff --git a/src/app/entity/models/ListTemplateItemModel.php b/src/app/entity/models/ListTemplateItemModel.php new file mode 100644 index 0000000000000000000000000000000000000000..8e630278ce2fd8525273f21800ab2726dc99133f --- /dev/null +++ b/src/app/entity/models/ListTemplateItemModel.php @@ -0,0 +1,85 @@ +<?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 List Template Model + * @author dev@maarch.org + */ + +namespace Entity\models; + +use SrcCore\models\DatabaseModel; +use SrcCore\models\ValidatorModel; + +class ListTemplateItemModel +{ + public static function get(array $args = []) + { + ValidatorModel::arrayType($args, ['select', 'where', 'data']); + + $items = DatabaseModel::select([ + 'select' => $args['select'] ?? [1], + 'table' => ['list_templates_items'], + 'where' => $args['where'] ?? [], + 'data' => $args['data'] ?? [], + 'order_by' => $args['orderBy'] ?? [] + ]); + + return $items; + } + + public static function create(array $args) + { + ValidatorModel::notEmpty($args, ['list_template_id', 'item_id', 'item_type', 'item_mode']); + ValidatorModel::stringType($args, ['item_type', 'item_mode']); + ValidatorModel::intVal($args, ['list_template_id', 'item_id', 'sequence']); + + DatabaseModel::insert([ + 'table' => 'list_templates_items', + 'columnsValues' => [ + 'list_template_id' => $args['list_template_id'], + 'item_id' => $args['item_id'], + 'item_type' => $args['item_type'], + 'item_mode' => $args['item_mode'], + 'sequence' => $args['sequence'] + ] + ]); + + return true; + } + + public static function update(array $args) + { + ValidatorModel::notEmpty($args, ['set', 'where', 'data']); + ValidatorModel::arrayType($args, ['set', 'where', 'data']); + + DatabaseModel::update([ + 'table' => 'list_templates_items', + 'set' => $args['set'], + 'where' => $args['where'], + 'data' => $args['data'] + ]); + + return true; + } + + public static function delete(array $args) + { + ValidatorModel::notEmpty($args, ['where', 'data']); + ValidatorModel::arrayType($args, ['where', 'data']); + + DatabaseModel::delete([ + 'table' => 'list_templates_items', + 'where' => $args['where'], + 'data' => $args['data'] + ]); + + return true; + } +} diff --git a/src/app/entity/models/ListTemplateModel.php b/src/app/entity/models/ListTemplateModel.php index dfae0e2356980e3722faea6102fc11c5dd1a6609..8892336e2d25c80311f4e6524de451c4a4966c45 100755 --- a/src/app/entity/models/ListTemplateModel.php +++ b/src/app/entity/models/ListTemplateModel.php @@ -14,6 +14,149 @@ namespace Entity\models; -class ListTemplateModel extends ListTemplateModelAbstract +use SrcCore\models\DatabaseModel; +use SrcCore\models\ValidatorModel; + +class ListTemplateModel { + public static function get(array $args = []) + { + ValidatorModel::arrayType($args, ['select', 'where', 'data']); + + $listTemplates = DatabaseModel::select([ + 'select' => $args['select'] ?? [1], + 'table' => ['list_templates'], + 'where' => $args['where'] ?? [], + 'data' => $args['data'] ?? [], + 'order_by' => $args['orderBy'] ?? [] + ]); + + return $listTemplates; + } + + public static function getById(array $args) + { + ValidatorModel::notEmpty($args, ['id']); + ValidatorModel::intVal($args, ['id']); + ValidatorModel::arrayType($args, ['select']); + + $listTemplate = DatabaseModel::select([ + 'select' => $args['select'] ?? [1], + 'table' => ['list_templates'], + 'where' => ['id = ?'], + 'data' => [$args['id']] + ]); + + if (empty($listTemplate[0])) { + return []; + } + + return $listTemplate[0]; + } + + public static function create(array $args) + { + ValidatorModel::notEmpty($args, ['title', 'type']); + ValidatorModel::stringType($args, ['title', 'type', 'description']); + ValidatorModel::intVal($args, ['entity_id']); + + $nextSequenceId = DatabaseModel::getNextSequenceValue(['sequenceId' => 'list_templates_id_seq']); + + DatabaseModel::insert([ + 'table' => 'list_templates', + 'columnsValues' => [ + 'id' => $nextSequenceId, + 'title' => $args['title'], + 'description' => $args['description'] ?? null, + 'type' => $args['type'], + 'entity_id' => $args['entity_id'] ?? null + ] + ]); + + return $nextSequenceId; + } + + public static function update(array $args) + { + ValidatorModel::notEmpty($args, ['set', 'where', 'data']); + ValidatorModel::arrayType($args, ['set', 'where', 'data']); + + DatabaseModel::update([ + 'table' => 'list_templates', + 'set' => $args['set'], + 'where' => $args['where'], + 'data' => $args['data'] + ]); + + return true; + } + + public static function delete(array $args) + { + ValidatorModel::notEmpty($args, ['where', 'data']); + ValidatorModel::arrayType($args, ['where', 'data']); + + DatabaseModel::delete([ + 'table' => 'list_templates', + 'where' => $args['where'], + 'data' => $args['data'] + ]); + + return true; + } + + public static function deleteNoItemsOnes() + { + DatabaseModel::delete([ + 'table' => 'list_templates', + 'where' => ['id not in (select DISTINCT(list_template_id) FROM list_templates_items)'] + ]); + + return true; + } + + public static function getWithItems(array $args = []) + { + ValidatorModel::arrayType($args, ['select', 'where', 'data', 'orderBy']); + + $listTemplates = DatabaseModel::select([ + 'select' => empty($args['select']) ? ['*'] : $args['select'], + 'table' => ['list_templates', 'list_templates_items'], + 'left_join' => ['list_templates.id = list_templates_items.list_template_id'], + 'where' => empty($args['where']) ? [] : $args['where'], + 'data' => empty($args['data']) ? [] : $args['data'], + 'order_by' => empty($args['orderBy']) ? [] : $args['orderBy'] + ]); + + return $listTemplates; + } + + public static function getTypes(array $aArgs = []) + { + ValidatorModel::arrayType($aArgs, ['select', 'where', 'data']); + + $aListTemplatesTypes = DatabaseModel::select([ + 'select' => empty($aArgs['select']) ? ['*'] : $aArgs['select'], + 'table' => ['difflist_types'], + 'where' => $aArgs['where'], + 'data' => $aArgs['data'] + ]); + + return $aListTemplatesTypes; + } + + public static function updateTypes(array $aArgs) + { + ValidatorModel::notEmpty($aArgs, ['set', 'where', 'data']); + ValidatorModel::arrayType($aArgs, ['set', 'where', 'data']); + + DatabaseModel::update([ + 'table' => 'difflist_types', + 'set' => $aArgs['set'], + 'where' => $aArgs['where'], + 'data' => $aArgs['data'] + ]); + + return true; + } } diff --git a/src/app/entity/models/ListTemplateModelAbstract.php b/src/app/entity/models/ListTemplateModelAbstract.php deleted file mode 100755 index 17ea6fd0aa2fe0092c177fec08ed95239dc7b7cf..0000000000000000000000000000000000000000 --- a/src/app/entity/models/ListTemplateModelAbstract.php +++ /dev/null @@ -1,147 +0,0 @@ -<?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 List Template Model Abstract - * @author dev@maarch.org - */ - -namespace Entity\models; - -use SrcCore\models\ValidatorModel; -use SrcCore\models\DatabaseModel; - -abstract class ListTemplateModelAbstract -{ - public static function get(array $args = []) - { - ValidatorModel::arrayType($args, ['select', 'where', 'data']); - - $aListTemplates = DatabaseModel::select([ - 'select' => empty($args['select']) ? ['*'] : $args['select'], - 'table' => ['listmodels'], - 'where' => $args['where'], - 'data' => $args['data'], - 'order_by' => empty($args['orderBy']) ? [] : $args['orderBy'] - ]); - - return $aListTemplates; - } - - public static function getById(array $aArgs) - { - ValidatorModel::notEmpty($aArgs, ['id']); - ValidatorModel::intVal($aArgs, ['id']); - ValidatorModel::arrayType($aArgs, ['select']); - - $basicTemplate = DatabaseModel::select([ - 'select' => ['object_id', 'object_type'], - 'table' => ['listmodels'], - 'where' => ['id = ?'], - 'data' => [$aArgs['id']] - ]); - if (empty($basicTemplate)) { - return []; - } - - $aListTemplates = DatabaseModel::select([ - 'select' => empty($aArgs['select']) ? ['*'] : $aArgs['select'], - 'table' => ['listmodels'], - 'where' => ['object_id = ?', 'object_type = ?'], - 'data' => [$basicTemplate[0]['object_id'], $basicTemplate[0]['object_type']] - ]); - - return $aListTemplates; - } - - public static function create(array $aArgs) - { - ValidatorModel::notEmpty($aArgs, ['object_id', 'object_type', 'item_id', 'item_type', 'item_mode']); - ValidatorModel::stringType($aArgs, ['object_id', 'object_type', 'item_id', 'item_type', 'title', 'description']); - ValidatorModel::intVal($aArgs, ['sequence']); - - $nextSequenceId = DatabaseModel::getNextSequenceValue(['sequenceId' => 'listmodels_id_seq']); - - DatabaseModel::insert([ - 'table' => 'listmodels', - 'columnsValues' => [ - 'id' => $nextSequenceId, - 'object_id' => $aArgs['object_id'], - 'object_type' => $aArgs['object_type'], - 'sequence' => $aArgs['sequence'], - 'item_id' => $aArgs['item_id'], - 'item_type' => $aArgs['item_type'], - 'item_mode' => $aArgs['item_mode'], - 'title' => $aArgs['title'], - 'description' => $aArgs['description'], - 'visible' => 'Y' - ] - ]); - - return $nextSequenceId; - } - - public static function update(array $aArgs) - { - ValidatorModel::notEmpty($aArgs, ['set', 'where', 'data']); - ValidatorModel::arrayType($aArgs, ['set', 'where', 'data']); - - DatabaseModel::update([ - 'table' => 'listmodels', - 'set' => $aArgs['set'], - 'where' => $aArgs['where'], - 'data' => $aArgs['data'] - ]); - - return true; - } - - public static function delete(array $aArgs) - { - ValidatorModel::notEmpty($aArgs, ['where', 'data']); - ValidatorModel::arrayType($aArgs, ['where', 'data']); - - DatabaseModel::delete([ - 'table' => 'listmodels', - 'where' => $aArgs['where'], - 'data' => $aArgs['data'] - ]); - - return true; - } - - public static function getTypes(array $aArgs = []) - { - ValidatorModel::arrayType($aArgs, ['select', 'where', 'data']); - - $aListTemplatesTypes = DatabaseModel::select([ - 'select' => empty($aArgs['select']) ? ['*'] : $aArgs['select'], - 'table' => ['difflist_types'], - 'where' => $aArgs['where'], - 'data' => $aArgs['data'] - ]); - - return $aListTemplatesTypes; - } - - public static function updateTypes(array $aArgs) - { - ValidatorModel::notEmpty($aArgs, ['set', 'where', 'data']); - ValidatorModel::arrayType($aArgs, ['set', 'where', 'data']); - - DatabaseModel::update([ - 'table' => 'difflist_types', - 'set' => $aArgs['set'], - 'where' => $aArgs['where'], - 'data' => $aArgs['data'] - ]); - - return true; - } -} diff --git a/src/app/user/controllers/UserController.php b/src/app/user/controllers/UserController.php index 8220ac1b3e4a68376c1ae733b600ef2c7928e058..5cb111acffa45f9eb846c2774c8e62078c152173 100755 --- a/src/app/user/controllers/UserController.php +++ b/src/app/user/controllers/UserController.php @@ -23,6 +23,7 @@ use Docserver\models\DocserverModel; use Email\controllers\EmailController; use Entity\models\EntityModel; use Entity\models\ListInstanceModel; +use Entity\models\ListTemplateItemModel; use Entity\models\ListTemplateModel; use Firebase\JWT\JWT; use Group\controllers\PrivilegeController; @@ -322,14 +323,18 @@ class UserController } $listTemplateEntities = []; - $listTemplates = ListTemplateModel::get([ - 'select' => ['object_id', 'title'], - 'where' => ['item_id = ?', 'object_type = ?', 'item_mode = ?', 'item_type = ?'], - 'data' => [$user['user_id'], 'entity_id', 'dest', 'user_id'] + $listTemplates = ListTemplateModel::getWithItems([ + 'select' => ['entity_id', 'title'], + 'where' => ['item_id = ?', 'type = ?', 'item_mode = ?', 'item_type = ?', 'entity_id is not null'], + 'data' => [$aArgs['id'], 'diffusionList', 'dest', 'user'] ]); $allEntities = EntityModel::getAllEntitiesByUserId(['userId' => $GLOBALS['userId']]); + if (!empty($allEntities)) { + $allEntities = EntityModel::get(['select' => ['id'], 'where' => ['entity_id in (?)'], 'data' => [$allEntities]]); + $allEntities = array_column($allEntities, 'id'); + } foreach ($listTemplates as $listTemplate) { - if (!in_array($listTemplate['object_id'], $allEntities)) { + if (!in_array($listTemplate['entity_id'], $allEntities)) { $isListTemplateDeletable = false; } $listTemplateEntities[] = $listTemplate['object_id']; @@ -383,10 +388,10 @@ class UserController return $response->withStatus(403)->withJson(['errors' => 'User is still present in listInstances']); } - $listTemplates = ListTemplateModel::get([ + $listTemplates = ListTemplateModel::getWithItems([ 'select' => [1], - 'where' => ['item_id = ?', 'object_type = ?', 'item_type = ?', 'item_mode = ?'], - 'data' => [$user['user_id'], 'entity_id', 'user_id', 'dest'] + 'where' => ['item_id = ?', 'type = ?', 'item_mode = ?', 'item_type = ?', 'entity_id is not null'], + 'data' => [$aArgs['id'], 'diffusionList', 'dest', 'user'] ]); if (!empty($listTemplates)) { return $response->withStatus(403)->withJson(['errors' => 'User is still present in listTemplates']); @@ -396,10 +401,6 @@ class UserController 'where' => ['item_id = ?', 'difflist_type = ?', 'item_type = ?', 'item_mode != ?'], 'data' => [$user['user_id'], 'entity_id', 'user_id', 'dest'] ]); - ListTemplateModel::delete([ - 'where' => ['item_id = ?', 'object_type = ?', 'item_type = ?'], - 'data' => [$user['user_id'], 'entity_id', 'user_id'] - ]); RedirectBasketModel::delete([ 'where' => ['owner_user_id = ? OR actual_user_id = ?'], 'data' => [$aArgs['id'], $aArgs['id']] @@ -438,10 +439,10 @@ class UserController return $response->withStatus(403)->withJson(['errors' => 'User is still present in listInstances']); } - $listTemplates = ListTemplateModel::get([ + $listTemplates = ListTemplateModel::getWithItems([ 'select' => [1], - 'where' => ['item_id = ?', 'object_type = ?', 'item_type = ?', 'item_mode = ?'], - 'data' => [$user['user_id'], 'entity_id', 'user_id', 'dest'] + 'where' => ['item_id = ?', 'type = ?', 'item_mode = ?', 'item_type = ?', 'entity_id is not null'], + 'data' => [$aArgs['id'], 'diffusionList', 'dest', 'user'] ]); if (!empty($listTemplates)) { return $response->withStatus(403)->withJson(['errors' => 'User is still present in listTemplates']); @@ -451,10 +452,11 @@ class UserController 'where' => ['item_id = ?', 'difflist_type = ?', 'item_type = ?', 'item_mode != ?'], 'data' => [$user['user_id'], 'entity_id', 'user_id', 'dest'] ]); - ListTemplateModel::delete([ - 'where' => ['item_id = ?', 'object_type = ?', 'item_type = ?'], - 'data' => [$user['user_id'], 'entity_id', 'user_id'] + ListTemplateItemModel::delete([ + 'where' => ['item_id = ?', 'item_type = ?'], + 'data' => [$aArgs['id'], 'user'] ]); + ListTemplateModel::deleteNoItemsOnes(); RedirectBasketModel::delete([ 'where' => ['owner_user_id = ? OR actual_user_id = ?'], 'data' => [$aArgs['id'], $aArgs['id']] @@ -1381,21 +1383,21 @@ class UserController ]); } - public function isEntityDeletable(Request $request, Response $response, array $aArgs) + public function isEntityDeletable(Request $request, Response $response, array $args) { - $error = $this->hasUsersRights(['id' => $aArgs['id']]); + $error = $this->hasUsersRights(['id' => $args['id']]); if (!empty($error['error'])) { return $response->withStatus($error['status'])->withJson(['errors' => $error['error']]); } - if (empty(entitymodel::getByEntityId(['entityId' => $aArgs['entityId']]))) { - return $response->withStatus(400)->withJson(['errors' => 'Entity not found']); + $entity = EntityModel::getByEntityId(['entityId' => $args['entityId'], 'select' => ['id']]); + if (empty($entity)) { + return $response->withStatus(400)->withJson(['errors' => 'Entity does not exist']); } - $user = UserModel::getById(['id' => $aArgs['id'], 'select' => ['user_id']]); - - $listInstances = ListInstanceModel::getWithConfidentiality(['select' => [1], 'entityId' => $aArgs['entityId'], 'userId' => $user['user_id']]); + $user = UserModel::getById(['id' => $args['id'], 'select' => ['user_id']]); + $listInstances = ListInstanceModel::getWithConfidentiality(['select' => [1], 'entityId' => $args['entityId'], 'userId' => $user['user_id']]); - $listTemplates = ListTemplateModel::get(['select' => [1], 'where' => ['object_id = ?', 'item_type = ?', 'item_id = ?'], 'data' => [$aArgs['entityId'], 'user_id', $user['user_id']]]); + $listTemplates = ListTemplateModel::getWithItems(['select' => [1], 'where' => ['entity_id = ?', 'item_type = ?', 'item_id = ?'], 'data' => [$entity['id'], 'user', $args['id']]]); return $response->withJson(['hasConfidentialityInstances' => !empty($listInstances), 'hasListTemplates' => !empty($listTemplates)]); } diff --git a/src/core/controllers/AutoCompleteController.php b/src/core/controllers/AutoCompleteController.php index b2c822f67d8ab308e294ccd3f870d2cb06fabcc1..690ab7a7100680d99f1267fb8c7bed204aef4034 100755 --- a/src/core/controllers/AutoCompleteController.php +++ b/src/core/controllers/AutoCompleteController.php @@ -426,7 +426,7 @@ class AutoCompleteController ]); $users = DatabaseModel::select([ - 'select' => ['DISTINCT users.user_id', 'users.firstname', 'users.lastname'], + 'select' => ['DISTINCT users.id', 'users.firstname', 'users.lastname'], 'table' => ['users, usergroup_content, usergroups, usergroups_services'], 'where' => $requestData['where'], 'data' => $requestData['data'], @@ -438,7 +438,7 @@ class AutoCompleteController foreach ($users as $value) { $data[] = [ 'type' => 'user', - 'id' => $value['user_id'], + 'id' => $value['id'], 'idToDisplay' => "{$value['firstname']} {$value['lastname']}", 'otherInfo' => '' ]; diff --git a/src/frontend/app/administration/diffusionModel/diffusionModel-administration.component.html b/src/frontend/app/administration/diffusionModel/diffusionModel-administration.component.html index 06b638569996017821eac4a83d67204b8a515c57..e14c8646473f9f5fb055e75daf33ed36f6002009 100755 --- a/src/frontend/app/administration/diffusionModel/diffusionModel-administration.component.html +++ b/src/frontend/app/administration/diffusionModel/diffusionModel-administration.component.html @@ -15,16 +15,12 @@ <mat-tab label="{{lang.informations}}"> <form class="form-horizontal" #diffusionModelForm="ngForm"> <mat-form-field *ngIf="creationMode"> - <mat-select id="object_type" name="object_type" placeholder="{{lang.diffusionType}}" [(ngModel)]="diffusionModel.object_type" [disabled]="!creationMode"> + <mat-select id="type" name="type" placeholder="{{lang.diffusionType}}" [(ngModel)]="diffusionModel.type" [disabled]="!creationMode"> <mat-option *ngFor="let itemType of this.itemTypeList" [value]="itemType.id"> {{ itemType.label }} </mat-option> </mat-select> </mat-form-field> - <mat-form-field *ngIf="!creationMode"> - <input matInput name="object_id" placeholder="{{lang.id}}" title="{{lang.id}}" [(ngModel)]="diffusionModel.object_id" - disabled maxlength="50" required> - </mat-form-field> <mat-form-field> <input matInput name="title" title="{{lang.label}}" placeholder="{{lang.label}}" [(ngModel)]="diffusionModel.title" maxlength="255" required> @@ -34,7 +30,7 @@ matTextareaAutosize matAutosizeMinRows="1" matAutosizeMaxRows="5" maxlength="255"></textarea> </mat-form-field> <div class="col-md-12 text-center" style="padding:10px;"> - <button mat-raised-button (click)="saveDiffListVisa()" [disabled]="!diffusionModelForm.form.valid || diffusionModel.diffusionList.length == 0" color="primary">{{lang.save}}</button> + <button mat-raised-button (click)="saveDiffListVisa()" [disabled]="!diffusionModelForm.form.valid || diffusionModel.items.length == 0" color="primary">{{lang.save}}</button> <button mat-raised-button color="default" (click)="loadDiffList()" [disabled]="!this.listDiffModified || creationMode">{{lang.cancel}}</button> </div> </form> @@ -51,10 +47,10 @@ <mat-tab label="{{lang.diffusionList}}"> <div class="row" style="margin:0px;" id="visaCircuitContent"> <div class="col-md-12"> - <plugin-autocomplete [labelPlaceholder]="lang.addUser" [labelList]="lang.availableUsers" [routeDatas]="diffusionModel.object_type == 'VISA_CIRCUIT' ? ['/rest/autocomplete/users/circuit'] : ['/rest/autocomplete/users/circuit?circuit=avis']" [targetSearchKey]="'idToDisplay'" [subInfoKey]="'descriptionToDisplay'" (triggerEvent)="addElemListModelVisa($event)"></plugin-autocomplete> + <plugin-autocomplete [labelPlaceholder]="lang.addUser" [labelList]="lang.availableUsers" [routeDatas]="diffusionModel.type == 'visaCircuit' ? ['/rest/autocomplete/users/circuit'] : ['/rest/autocomplete/users/circuit?circuit=avis']" [targetSearchKey]="'idToDisplay'" [subInfoKey]="'descriptionToDisplay'" (triggerEvent)="addElemListModelVisa($event)"></plugin-autocomplete> <mat-list> - <span dnd-sortable-container [dropZones]="['boxers-zone']" [sortableData]="diffusionModel.diffusionList"> - <mat-list-item disableRipple="true" *ngFor="let template of diffusionModel.diffusionList; let i = index" title="{{lang.move}}" + <span dnd-sortable-container [dropZones]="['boxers-zone']" [sortableData]="diffusionModel.items"> + <mat-list-item disableRipple="true" *ngFor="let template of diffusionModel.items; let i = index" title="{{lang.move}}" dnd-sortable [sortableIndex]="i" (onDropSuccess)="updateDiffListVisa(template)"> <mat-icon color="primary" [class]="template.item_mode == 'sign' ? 'fa fa-certificate' : 'fa fa-user'" mat-list-icon></mat-icon> <p mat-line>{{template.idToDisplay}} diff --git a/src/frontend/app/administration/diffusionModel/diffusionModel-administration.component.ts b/src/frontend/app/administration/diffusionModel/diffusionModel-administration.component.ts index fe491a5a43a86630cdbe4bc72e6624c614426886..cd0caf596d4913b868dd3f106e090c293333415b 100755 --- a/src/frontend/app/administration/diffusionModel/diffusionModel-administration.component.ts +++ b/src/frontend/app/administration/diffusionModel/diffusionModel-administration.component.ts @@ -55,9 +55,9 @@ export class DiffusionModelAdministrationComponent implements OnInit { this.creationMode = true; this.loading = false; - this.itemTypeList =[{"id":"VISA_CIRCUIT", "label": this.lang.visaWorkflow},{"id":"AVIS_CIRCUIT", "label": this.lang.avis}] - this.diffusionModel.object_type = 'VISA_CIRCUIT'; - this.diffusionModel.diffusionList = []; + this.itemTypeList =[{"id":"visaCircuit", "label": this.lang.visaWorkflow},{"id":"opinionCircuit", "label": this.lang.avis}]; + this.diffusionModel.type = 'opinionCircuit'; + this.diffusionModel.items = []; } else { window['MainHeaderComponent'].setSnav(this.sidenavLeft); window['MainHeaderComponent'].setSnavRight(this.sidenavRight); @@ -67,9 +67,7 @@ export class DiffusionModelAdministrationComponent implements OnInit { .subscribe((data: any) => { this.diffusionModel = data['listTemplate']; this.headerService.setHeader(this.lang.diffusionModelModification, this.diffusionModel.title); - if (this.diffusionModel.diffusionList[0]) { - this.idCircuit = this.diffusionModel.diffusionList[0].id; - } + this.idCircuit = params['id']; this.loading = false; }, () => { @@ -84,7 +82,7 @@ export class DiffusionModelAdministrationComponent implements OnInit { var item_mode = ''; var item_mode2 = ''; - if (this.diffusionModel.object_type == 'AVIS_CIRCUIT') { + if (this.diffusionModel.type == 'opinionCircuit') { item_mode = 'avis'; item_mode2 = 'avis'; } else { @@ -92,32 +90,31 @@ export class DiffusionModelAdministrationComponent implements OnInit { item_mode2 = 'visa'; } var newElemListModel = { - "id": '', - "item_type": 'user_id', - "item_mode": item_mode, - "item_id": element.id, - "sequence": this.diffusionModel.diffusionList.length, + "type": 'user', + "mode": item_mode, + "id": element.id, + "sequence": this.diffusionModel.items.length, "idToDisplay": element.idToDisplay, "descriptionToDisplay": element.descriptionToDisplay }; - this.diffusionModel.diffusionList.push(newElemListModel); - if (this.diffusionModel.diffusionList.length > 1) { - this.diffusionModel.diffusionList[this.diffusionModel.diffusionList.length-2].item_mode = item_mode2; + this.diffusionModel.items.push(newElemListModel); + if (this.diffusionModel.items.length > 1) { + this.diffusionModel.items[this.diffusionModel.items.length-2].item_mode = item_mode2; } } updateDiffListVisa(template: any): any { this.listDiffModified = true; - this.diffusionModel.diffusionList.forEach((listModel: any, i: number) => { + this.diffusionModel.items.forEach((listModel: any, i: number) => { listModel.sequence = i; - if (this.diffusionModel.object_type == 'AVIS_CIRCUIT') { - listModel.item_mode = "avis"; + if (this.diffusionModel.type == 'opinionCircuit') { + listModel.mode = "avis"; } else { - if (i == (this.diffusionModel.diffusionList.length - 1)) { - listModel.item_mode = "sign"; + if (i == (this.diffusionModel.items.length - 1)) { + listModel.mode = "sign"; } else { - listModel.item_mode = "visa"; + listModel.mode = "visa"; } } }); @@ -125,18 +122,18 @@ export class DiffusionModelAdministrationComponent implements OnInit { removeDiffListVisa(template: any, i: number): any { this.listDiffModified = true; - this.diffusionModel.diffusionList.splice(i, 1); + this.diffusionModel.items.splice(i, 1); - if (this.diffusionModel.diffusionList.length > 0) { - this.diffusionModel.diffusionList.forEach((listModel: any, i: number) => { + if (this.diffusionModel.items.length > 0) { + this.diffusionModel.items.forEach((listModel: any, i: number) => { listModel.sequence = i; - if (this.diffusionModel.object_type == 'AVIS_CIRCUIT') { - listModel.item_mode = "avis"; + if (this.diffusionModel.type == 'opinionCircuit') { + listModel.mode = "avis"; } else { - if (i == (this.diffusionModel.diffusionList.length - 1)) { - listModel.item_mode = "sign"; + if (i == (this.diffusionModel.items.length - 1)) { + listModel.mode = "sign"; } else { - listModel.item_mode = "visa"; + listModel.mode = "visa"; } } }); @@ -147,9 +144,6 @@ export class DiffusionModelAdministrationComponent implements OnInit { this.http.get("../../rest/listTemplates/" + this.idCircuit) .subscribe((data: any) => { this.diffusionModel = data['listTemplate']; - if (this.diffusionModel.diffusionList[0]) { - this.idCircuit = this.diffusionModel.diffusionList[0].id; - } this.loading = false; this.listDiffModified = false; @@ -161,33 +155,30 @@ export class DiffusionModelAdministrationComponent implements OnInit { saveDiffListVisa() { this.listDiffModified = false; var newDiffList = { - "object_id": this.diffusionModel.object_id, - "object_type": this.diffusionModel.object_type, + "type": this.diffusionModel.type, "title": this.diffusionModel.title, "description": this.diffusionModel.description, "items": Array() }; if (this.idCircuit == null) { - this.diffusionModel.diffusionList.forEach((listModel: any, i: number) => { + this.diffusionModel.items.forEach((listModel: any, i: number) => { listModel.sequence = i; - if (this.diffusionModel.object_type == 'AVIS_CIRCUIT') { - listModel.item_mode = "avis"; + if (this.diffusionModel.type == 'opinionCircuit') { + listModel.mode = "avis"; } else { - if (i == (this.diffusionModel.diffusionList.length - 1)) { - listModel.item_mode = "sign"; + if (i == (this.diffusionModel.items.length - 1)) { + listModel.mode = "sign"; } else { - listModel.item_mode = "visa"; + listModel.mode = "visa"; } } newDiffList.items.push({ "id": listModel.id, - "item_id": listModel.item_id, - "item_type": "user_id", - "item_mode": listModel.item_mode, + "type": "user", + "mode": listModel.mode, "sequence": listModel.sequence }); }); - newDiffList.object_id = newDiffList.object_type + '_' + (Math.random()+ +new Date).toString(36).replace('.','').toUpperCase(); this.http.post("../../rest/listTemplates", newDiffList) .subscribe((data: any) => { this.idCircuit = data.id; @@ -196,30 +187,28 @@ export class DiffusionModelAdministrationComponent implements OnInit { }, (err) => { this.notify.error(err.error.errors); }); - } else if (this.diffusionModel.diffusionList.length > 0) { - this.diffusionModel.diffusionList.forEach((listModel: any, i: number) => { + } else if (this.diffusionModel.items.length > 0) { + this.diffusionModel.items.forEach((listModel: any, i: number) => { listModel.sequence = i; - if (this.diffusionModel.object_type == 'AVIS_CIRCUIT') { - listModel.item_mode = "avis"; + if (this.diffusionModel.type == 'opinionCircuit') { + listModel.mode = "avis"; } else { - if (i == (this.diffusionModel.diffusionList.length - 1)) { - listModel.item_mode = "sign"; + if (i == (this.diffusionModel.items.length - 1)) { + listModel.mode = "sign"; } else { - listModel.item_mode = "visa"; + listModel.mode = "visa"; } } newDiffList.items.push({ "id": listModel.id, - "item_id": listModel.item_id, - "item_type": "user_id", - "item_mode": listModel.item_mode, + "type": "user", + "mode": listModel.mode, "sequence": listModel.sequence }); }); this.http.put("../../rest/listTemplates/" + this.idCircuit, newDiffList) - .subscribe((data: any) => { - this.idCircuit = data.id; + .subscribe(() => { this.notify.success(this.lang.diffusionModelUpdated); }, (err) => { this.notify.error(err.error.errors); diff --git a/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.html b/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.html index f775e7045a6ddcb6e00095ad367d457cf888ef9f..a6ae8e8424a7eac54d0c2faf5a412370bf896901 100755 --- a/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.html +++ b/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.html @@ -45,7 +45,7 @@ <ng-container matColumnDef="object_type"> <mat-header-cell *matHeaderCellDef mat-sort-header style="flex:2;">{{lang.type}}</mat-header-cell> <mat-cell *matCellDef="let element" style="flex:2;" > - {{element.object_type}} </mat-cell> + {{element.type}} </mat-cell> </ng-container> <ng-container matColumnDef="actions"> <mat-header-cell *matHeaderCellDef style="flex:1;"></mat-header-cell> @@ -65,4 +65,4 @@ position='end' [opened]="appService.getViewMode() ? false : false"> </mat-sidenav> </mat-sidenav-container> -</div> \ No newline at end of file +</div> diff --git a/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.ts b/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.ts index 1f8346949ba5e3018aed029a0ec4c6f95d117814..0ab532935946cdb7cf99fde0ac7b9939a80b7b72 100755 --- a/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.ts +++ b/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.ts @@ -62,7 +62,7 @@ export class DiffusionModelsAdministrationComponent implements OnInit { this.http.get("../../rest/listTemplates") .subscribe((data: any) => { data['listTemplates'].forEach((template: any) => { - if (template.object_id.indexOf('VISA_CIRCUIT_') != -1 || template.object_id.indexOf('AVIS_CIRCUIT_') != -1) { + if ((template.type.indexOf('visaCircuit') != -1 || template.type.indexOf('opinionCircuit') != -1) && template.entityId == null) { this.listTemplates.push(template); } }); diff --git a/src/frontend/app/administration/entity/entities-administration.component.html b/src/frontend/app/administration/entity/entities-administration.component.html index 346d09f5c65b88fc6b6d808d1dc33a8c44e7116f..3f8b5fe68ce16672f3aa4a2b59a53d1475f73757 100755 --- a/src/frontend/app/administration/entity/entities-administration.component.html +++ b/src/frontend/app/administration/entity/entities-administration.component.html @@ -218,12 +218,12 @@ <mat-list *ngIf="currentEntity.entity_id"> <span *ngFor="let role of listTemplateRoles; let i = index"> <h3 *ngIf="role.available" mat-subheader style="font-weight:bold;" color="primary">{{role.label}}</h3> - <span *ngIf="role.available" dnd-sortable-container [dropZones]="['boxers-zone']" [sortableData]="currentEntity.listTemplate[role.id]"> + <span *ngIf="role.available && currentEntity.listTemplate.items" dnd-sortable-container [dropZones]="['boxers-zone']" [sortableData]="currentEntity.listTemplate.items[role.id]"> <div style="min-height:30px;"> - <mat-list-item class="roleDiffList" disableRipple="true" *ngFor="let template of currentEntity.listTemplate[role.id]; let i = index" + <mat-list-item class="roleDiffList" disableRipple="true" *ngFor="let template of currentEntity.listTemplate.items[role.id]; let i = index" dnd-sortable (onDropSuccess)="updateDiffList(template,role.id)" [sortableIndex]="i" - [dragEnabled]="role.id != 'dest' && template.item_type != 'entity_id'"> - <mat-icon color="primary" mat-list-icon [class]="template.item_type == 'entity_id' ? 'fa fa-sitemap' : 'fa fa-user'" [title]="role.id != 'dest' && template.item_type != 'entity_id' ? lang.move : lang.noMove"></mat-icon> + [dragEnabled]="role.id != 'dest' && template.type != 'entity'"> + <mat-icon color="primary" mat-list-icon [class]="template.type == 'entity' ? 'fa fa-sitemap' : 'fa fa-user'" [title]="role.id != 'dest' && template.type != 'entity' ? lang.move : lang.noMove"></mat-icon> <p mat-line>{{template.labelToDisplay}} <small style="opacity:0.5;">{{template.descriptionToDisplay}}</small> </p> @@ -238,7 +238,7 @@ </div> <div class="form-group" *ngIf="currentEntity.entity_id"> <div class="col-md-12 text-center" style="padding:10px;"> - <button mat-raised-button color="primary" (click)="saveDiffList()" [disabled]="!this.listDiffModified || (currentEntity.listTemplate.dest.length == 0 && currentEntity.listTemplate.cc.length > 0)">{{lang.save}}</button> + <button mat-raised-button color="primary" (click)="saveDiffList()" [disabled]="!this.listDiffModified || (currentEntity.listTemplate.items.dest.length == 0 && currentEntity.listTemplate.items.cc.length > 0)">{{lang.save}}</button> <button mat-raised-button color="default" (click)="loadEntity(this.currentEntity.entity_id)" [disabled]="!this.listDiffModified">{{lang.cancel}}</button> </div> </div> @@ -247,12 +247,12 @@ <mat-tab label="{{lang.visaWorkflow}}" *ngIf="!creationMode"> <div class="row" style="margin:0px;" id="visaCircuitContent"> <div class="col-md-12"> - <plugin-autocomplete [labelPlaceholder]="lang.addVisaSignUser" [labelList]="lang.availableUsers" [routeDatas]="['/rest/autocomplete/users/circuit']" [targetSearchKey]="'idToDisplay'" [subInfoKey]="'descriptionToDisplay'" (triggerEvent)="addElemListModelVisa($event)"></plugin-autocomplete> - <mat-list> - <span dnd-sortable-container [dropZones]="['boxers-zone']" [sortableData]="currentEntity.visaTemplate"> - <mat-list-item disableRipple="true" *ngFor="let template of currentEntity.visaTemplate; let i = index" title="{{lang.move}}" + <plugin-autocomplete [labelPlaceholder]="lang.addVisaSignUser" [labelList]="lang.availableUsers" [routeDatas]="['/rest/autocomplete/users/circuit?circuit=visa']" [targetSearchKey]="'idToDisplay'" [subInfoKey]="'descriptionToDisplay'" (triggerEvent)="addElemListModelVisa($event)"></plugin-autocomplete> + <mat-list *ngIf="currentEntity.visaCircuit"> + <span dnd-sortable-container [dropZones]="['boxers-zone']" [sortableData]="currentEntity.visaCircuit.items"> + <mat-list-item disableRipple="true" *ngFor="let template of currentEntity.visaCircuit.items; let i = index" title="{{lang.move}}" dnd-sortable [sortableIndex]="i" (onDropSuccess)="updateDiffListVisa(template)"> - <mat-icon color="primary" [class]="template.item_mode == 'visa' ? 'fa fa-user' : 'fa fa-certificate'" mat-list-icon></mat-icon> + <mat-icon color="primary" [class]="template.mode == 'visa' ? 'fa fa-user' : 'fa fa-certificate'" mat-list-icon></mat-icon> <p mat-line>{{template.idToDisplay}} <small style="opacity:0.5;">{{template.descriptionToDisplay}}</small> </p> @@ -265,8 +265,35 @@ </div> <div class="form-group" *ngIf="currentEntity.entity_id"> <div class="col-md-12 text-center" style="padding:10px;"> - <button mat-raised-button color="primary" (click)="saveDiffListVisa()" [disabled]="!this.listDiffModified || (currentEntity.listTemplate.dest.length == 0 && currentEntity.listTemplate.cc.length > 0)">{{lang.save}}</button> - <button mat-raised-button color="default" (click)="loadEntity(this.currentEntity.entity_id)" [disabled]="!this.listDiffModified">{{lang.cancel}}</button> + <button mat-raised-button color="primary" (click)="saveDiffListVisa()" [disabled]="!this.visaCircuitModified">{{lang.save}}</button> + <button mat-raised-button color="default" (click)="loadEntity(this.currentEntity.entity_id)" [disabled]="!this.visaCircuitModified">{{lang.cancel}}</button> + </div> + </div> + </div> + </mat-tab> + <mat-tab label="{{lang.avis}}" *ngIf="!creationMode"> + <div class="row" style="margin:0px;" id="opinionCircuitContent"> + <div class="col-md-12"> + <plugin-autocomplete [labelPlaceholder]="lang.addVisaSignUser" [labelList]="lang.availableUsers" [routeDatas]="['/rest/autocomplete/users/circuit?circuit=opinion']" [targetSearchKey]="'idToDisplay'" [subInfoKey]="'descriptionToDisplay'" (triggerEvent)="addElemListModelOpinion($event)"></plugin-autocomplete> + <mat-list *ngIf="currentEntity.opinionCircuit"> + <span dnd-sortable-container [dropZones]="['boxers-zone']" [sortableData]="currentEntity.opinionCircuit.items"> + <mat-list-item disableRipple="true" *ngFor="let template of currentEntity.opinionCircuit.items; let i = index" title="{{lang.move}}" + dnd-sortable [sortableIndex]="i"> + <mat-icon color="primary" [class]="'fa fa-user'" mat-list-icon></mat-icon> + <p mat-line>{{template.idToDisplay}} + <small style="opacity:0.5;">{{template.descriptionToDisplay}}</small> + </p> + <button matTooltip="{{lang.delete}}" mat-icon-button color="warn" (click)="removeDiffListOpinion(template,i)"> + <mat-icon class="fa fa-times"></mat-icon> + </button> + </mat-list-item> + </span> + </mat-list> + </div> + <div class="form-group" *ngIf="currentEntity.entity_id"> + <div class="col-md-12 text-center" style="padding:10px;"> + <button mat-raised-button color="primary" (click)="saveDiffListOpinion()" [disabled]="!this.opinionCircuitModified">{{lang.save}}</button> + <button mat-raised-button color="default" (click)="loadEntity(this.currentEntity.entity_id)" [disabled]="!this.opinionCircuitModified">{{lang.cancel}}</button> </div> </div> </div> diff --git a/src/frontend/app/administration/entity/entities-administration.component.ts b/src/frontend/app/administration/entity/entities-administration.component.ts index 70cae27ed82cdca51c5076b4f0a1a2d87da49754..9a9aeccdd4f708abb2b0e45ff2133c007120acf2 100755 --- a/src/frontend/app/administration/entity/entities-administration.component.ts +++ b/src/frontend/app/administration/entity/entities-administration.component.ts @@ -38,7 +38,10 @@ export class EntitiesAdministrationComponent implements OnInit { newEntity : boolean = false; creationMode : boolean = false; listDiffModified : boolean = false; - idCircuitVisa : number; + visaCircuitModified : boolean = false; + opinionCircuitModified : boolean = false; + idVisaCircuit : number; + idOpinionCircuit : number; config : any = {}; dataSourceUsers = new MatTableDataSource(this.currentEntity.users); @@ -191,13 +194,20 @@ export class EntitiesAdministrationComponent implements OnInit { loadEntity(entity_id: any) { this.listDiffModified = false; + this.visaCircuitModified = false; + this.opinionCircuitModified = false; this.http.get("../../rest/entities/" + entity_id + '/details') .subscribe((data: any) => { this.currentEntity = data['entity']; - if (this.currentEntity.visaTemplate[0]) { - this.idCircuitVisa = this.currentEntity.visaTemplate[0].id; + if (this.currentEntity.visaCircuit) { + this.idVisaCircuit = this.currentEntity.visaCircuit.id; } else { - this.idCircuitVisa = null; + this.idVisaCircuit = null; + } + if (this.currentEntity.opinionCircuit) { + this.idOpinionCircuit = this.currentEntity.opinionCircuit.id; + } else { + this.idOpinionCircuit = null; } this.dataSourceUsers = new MatTableDataSource(this.currentEntity.users); this.dataSourceUsers.paginator = this.paginatorUsers; @@ -207,6 +217,14 @@ export class EntitiesAdministrationComponent implements OnInit { this.dataSourceTemplates.paginator = this.paginatorTemplates; this.dataSourceTemplates.sort = this.sortTemplates; + if (!this.currentEntity.listTemplate.items) { + this.currentEntity.listTemplate.items = []; + } + this.listTemplateRoles.forEach((role: any) => { + if (role.available && !this.currentEntity.listTemplate.items[role.id]) { + this.currentEntity.listTemplate.items[role.id] = []; + } + }); }, (err) => { this.notify.error(err.error.errors); }); @@ -217,11 +235,15 @@ export class EntitiesAdministrationComponent implements OnInit { var inListModel = false; var newElemListModel: any = {}; + if (!this.currentEntity.listTemplate.items) { + this.currentEntity.listTemplate.items = []; + } + this.listTemplateRoles.forEach((role: any) => { if (role.available == true) { - if (this.currentEntity.listTemplate[role.id]) { - this.currentEntity.listTemplate[role.id].forEach((listModel: any) => { - if (listModel.item_id == element.id) { + if (this.currentEntity.listTemplate.items[role.id]) { + this.currentEntity.listTemplate.items[role.id].forEach((listModel: any) => { + if (listModel.id == element.id) { inListModel = true; } }); @@ -229,54 +251,70 @@ export class EntitiesAdministrationComponent implements OnInit { } }); if (!inListModel) { - if (this.currentEntity.listTemplate.dest.length == 0 && element.type == 'user') { + if (!this.currentEntity.listTemplate.items.dest) { + this.currentEntity.listTemplate.items.dest = []; + } + if (this.currentEntity.listTemplate.items.dest.length == 0 && element.type == 'user') { newElemListModel = { - "item_type": "user_id", - "item_id": element.id, + "id": element.serialId, + "type": "user", + "mode": "dest", "labelToDisplay": element.idToDisplay, - "descriptionToDisplay": element.otherInfo, - "item_mode": "dest", - "sequence": 0 + "descriptionToDisplay": element.otherInfo }; - this.currentEntity.listTemplate.dest.unshift(newElemListModel); + this.currentEntity.listTemplate.items.dest.unshift(newElemListModel); } else { - var itemType = ''; - if (element.type == 'user') { - itemType = 'user_id'; - } else { - itemType = 'entity_id'; + if (!this.currentEntity.listTemplate.items.cc) { + this.currentEntity.listTemplate.items.cc = []; } + const itemType = element.type == 'user' ? 'user' : 'entity'; newElemListModel = { - "item_type": itemType, - "item_id": element.id, + "id": element.serialId, + "type": itemType, + "mode": "cc", "labelToDisplay": element.idToDisplay, - "descriptionToDisplay": element.otherInfo, - "item_mode": "cc", - "sequence": 0 + "descriptionToDisplay": element.otherInfo }; - this.currentEntity.listTemplate.cc.unshift(newElemListModel); + this.currentEntity.listTemplate.items.cc.unshift(newElemListModel); } } } addElemListModelVisa(element: any) { - this.listDiffModified = true; + this.visaCircuitModified = true; + let newElemListModel = { + "id": element.id, + "type": 'user', + "mode": "sign", + "idToDisplay": element.idToDisplay, + "descriptionToDisplay": element.otherInfo + }; + + if (!this.currentEntity.visaCircuit.items) { + this.currentEntity.visaCircuit.items = []; + } + this.currentEntity.visaCircuit.items.push(newElemListModel); + if (this.currentEntity.visaCircuit.items.length > 1) { + this.currentEntity.visaCircuit.items[this.currentEntity.visaCircuit.items.length-2].mode = 'visa'; + } + } + + addElemListModelOpinion(element: any) { + this.opinionCircuitModified = true; let newElemListModel = { - "id": '', - "item_type": 'user_id', - "item_mode": "sign", - "item_id": element.id, - "sequence": this.currentEntity.visaTemplate.length, + "id": element.id, + "type": 'user', + "mode": "avis", "idToDisplay": element.idToDisplay, "descriptionToDisplay": element.otherInfo }; - this.currentEntity.visaTemplate.push(newElemListModel); - if (this.currentEntity.visaTemplate.length > 1) { - this.currentEntity.visaTemplate[this.currentEntity.visaTemplate.length-2].item_mode = 'visa'; + if (!this.currentEntity.opinionCircuit.items) { + this.currentEntity.opinionCircuit.items = []; } + this.currentEntity.opinionCircuit.items.push(newElemListModel); } saveEntity() { @@ -375,10 +413,10 @@ export class EntitiesAdministrationComponent implements OnInit { }); } - if (this.idCircuitVisa) { - this.http.delete("../../rest/listTemplates/" + this.idCircuitVisa) + if (this.idVisaCircuit) { + this.http.delete("../../rest/listTemplates/" + this.idVisaCircuit) .subscribe(() => { - this.idCircuitVisa = null; + this.idVisaCircuit = null; }, (err) => { this.notify.error(err.error.errors); }); @@ -421,10 +459,10 @@ export class EntitiesAdministrationComponent implements OnInit { }); } - if (this.idCircuitVisa) { - this.http.delete("../../rest/listTemplates/" + this.idCircuitVisa) + if (this.idVisaCircuit) { + this.http.delete("../../rest/listTemplates/" + this.idVisaCircuit) .subscribe(() => { - this.idCircuitVisa = null; + this.idVisaCircuit = null; }, (err) => { this.notify.error(err.error.errors); }); @@ -484,35 +522,34 @@ export class EntitiesAdministrationComponent implements OnInit { updateDiffList(template: any, role: any): any { this.listDiffModified = true; - if (role == 'dest' && this.currentEntity.listTemplate.dest.length > 0) { - this.currentEntity.listTemplate.dest.forEach((listModel: any) => { - if (listModel.item_id != template.item_id) { - this.currentEntity.listTemplate.cc.push(listModel); + if (role == 'dest' && this.currentEntity.listTemplate.items.dest.length > 0) { + this.currentEntity.listTemplate.items.dest.forEach((listModel: any) => { + if (listModel.id != template.id) { + this.currentEntity.listTemplate.items.cc.push(listModel); } }); - this.currentEntity.listTemplate.dest = [template]; + this.currentEntity.listTemplate.items.dest = [template]; } } saveDiffList() { this.listDiffModified = false; var newDiffList = { - "object_id": this.currentEntity.entity_id, - "object_type": "entity_id", "title": this.currentEntity.entity_id, "description": this.currentEntity.entity_id, + "type": "diffusionList", + "entityId": this.currentEntity.id, "items": Array() }; this.listTemplateRoles.forEach((role: any) => { if (role.available == true) { - if (this.currentEntity.listTemplate[role.id]) { - this.currentEntity.listTemplate[role.id].forEach((listModel: any) => { + if (this.currentEntity.listTemplate.items[role.id]) { + this.currentEntity.listTemplate.items[role.id].forEach((listModel: any) => { newDiffList.items.push({ - "item_id": listModel.item_id, - "item_type": listModel.item_type, - "item_mode": role.id, - "sequence": listModel.sequence + "id": listModel.id, + "type": listModel.type, + "mode": role.id }) }); } @@ -535,8 +572,7 @@ export class EntitiesAdministrationComponent implements OnInit { }); } else if (this.currentEntity.listTemplate.id) { this.http.put("../../rest/listTemplates/" + this.currentEntity.listTemplate.id, newDiffList) - .subscribe((data: any) => { - this.currentEntity.listTemplate.id = data.id; + .subscribe(() => { this.http.get("../../rest/listTemplates/types/entity_id/roles") .subscribe((data: any) => { this.listTemplateRoles = data['roles']; @@ -565,76 +601,63 @@ export class EntitiesAdministrationComponent implements OnInit { } updateDiffListVisa(template: any): any { - this.listDiffModified = true; - this.currentEntity.visaTemplate.forEach((listModel: any, i: number) => { + this.visaCircuitModified = true; + this.currentEntity.visaCircuit.items.forEach((listModel: any, i: number) => { listModel.sequence = i; - if (i == (this.currentEntity.visaTemplate.length - 1)) { - listModel.item_mode = "sign"; + if (i == (this.currentEntity.visaCircuit.items.length - 1)) { + listModel.mode = "sign"; } else { - listModel.item_mode = "visa"; + listModel.mode = "visa"; } }); } saveDiffListVisa() { - this.listDiffModified = false; - var newDiffList = { - "object_id": this.currentEntity.entity_id, - "object_type": "VISA_CIRCUIT", + this.visaCircuitModified = false; + const newDiffList = { "title": this.currentEntity.entity_id, "description": this.currentEntity.entity_id, + "type": "visaCircuit", + "entityId": this.currentEntity.id, "items": Array() }; - if (this.idCircuitVisa == null) { - this.currentEntity.visaTemplate.forEach((listModel: any, i: number) => { + if (this.idVisaCircuit == null) { + this.currentEntity.visaCircuit.items.forEach((listModel: any, i: number) => { listModel.sequence = i; - if (i == (this.currentEntity.visaTemplate.length - 1)) { - listModel.item_mode = "sign"; + if (i == (this.currentEntity.visaCircuit.items.length - 1)) { + listModel.mode = "sign"; } else { - listModel.item_mode = "visa"; + listModel.mode = "visa"; } - newDiffList.items.push({ - "id": listModel.id, - "item_id": listModel.item_id, - "item_type": "user_id", - "item_mode": listModel.item_mode, - "sequence": listModel.sequence - }); + newDiffList.items.push(listModel); }); this.http.post("../../rest/listTemplates", newDiffList) .subscribe((data: any) => { - this.idCircuitVisa = data.id; + this.idVisaCircuit = data.id; this.notify.success(this.lang.diffusionModelUpdated); }, (err) => { this.notify.error(err.error.errors); }); - } else if (this.currentEntity.visaTemplate.length > 0) { - this.currentEntity.visaTemplate.forEach((listModel: any, i: number) => { + } else if (this.currentEntity.visaCircuit.items.length > 0) { + this.currentEntity.visaCircuit.items.forEach((listModel: any, i: number) => { listModel.sequence = i; - if (i == (this.currentEntity.visaTemplate.length - 1)) { - listModel.item_mode = "sign"; + if (i == (this.currentEntity.visaCircuit.items.length - 1)) { + listModel.mode = "sign"; } else { - listModel.item_mode = "visa"; + listModel.mode = "visa"; } - newDiffList.items.push({ - "id": listModel.id, - "item_id": listModel.item_id, - "item_type": "user_id", - "item_mode": listModel.item_mode, - "sequence": listModel.sequence - }); + newDiffList.items.push(listModel); }); - this.http.put("../../rest/listTemplates/" + this.idCircuitVisa, newDiffList) - .subscribe((data: any) => { - this.idCircuitVisa = data.id; + this.http.put("../../rest/listTemplates/" + this.idVisaCircuit, newDiffList) + .subscribe(() => { this.notify.success(this.lang.diffusionModelUpdated); }, (err) => { this.notify.error(err.error.errors); }); } else { - this.http.delete("../../rest/listTemplates/" + this.idCircuitVisa) + this.http.delete("../../rest/listTemplates/" + this.idVisaCircuit) .subscribe(() => { - this.idCircuitVisa = null; + this.idVisaCircuit = null; this.notify.success(this.lang.diffusionModelDeleted); }, (err) => { this.notify.error(err.error.errors); @@ -642,27 +665,69 @@ export class EntitiesAdministrationComponent implements OnInit { } } + saveDiffListOpinion() { + this.opinionCircuitModified = false; + const newDiffList = { + "title": this.currentEntity.entity_id, + "description": this.currentEntity.entity_id, + "type": "opinionCircuit", + "entityId": this.currentEntity.id, + "items": Array() + }; + if (this.idOpinionCircuit == null) { + newDiffList.items = this.currentEntity.opinionCircuit.items; + this.http.post("../../rest/listTemplates", newDiffList) + .subscribe((data: any) => { + this.idOpinionCircuit = data.id; + this.notify.success(this.lang.diffusionModelUpdated); + }, (err) => { + this.notify.error(err.error.errors); + }); + } else if (this.currentEntity.opinionCircuit.items.length > 0) { + newDiffList.items = this.currentEntity.opinionCircuit.items; + this.http.put("../../rest/listTemplates/" + this.idOpinionCircuit, newDiffList) + .subscribe(() => { + this.notify.success(this.lang.diffusionModelUpdated); + }, (err) => { + this.notify.error(err.error.errors); + }); + } else { + this.http.delete("../../rest/listTemplates/" + this.idOpinionCircuit) + .subscribe(() => { + this.idOpinionCircuit = null; + this.notify.success(this.lang.diffusionModelDeleted); + }, (err) => { + this.notify.error(err.error.errors); + }); + } + } + removeDiffList(i: number, role: string): any { this.listDiffModified = true; - this.currentEntity.listTemplate[role].splice(i, 1); + this.currentEntity.listTemplate.items[role].splice(i, 1); } removeDiffListVisa(template: any, i: number): any { - this.listDiffModified = true; - this.currentEntity.visaTemplate.splice(i, 1); + this.visaCircuitModified = true; + this.currentEntity.visaCircuit.items.splice(i, 1); - if (this.currentEntity.visaTemplate.length > 0) { - this.currentEntity.visaTemplate.forEach((listModel: any, i: number) => { + if (this.currentEntity.visaCircuit.items.length > 0) { + this.currentEntity.visaCircuit.items.forEach((listModel: any, i: number) => { listModel.sequence = i; - if (i == (this.currentEntity.visaTemplate.length - 1)) { - listModel.item_mode = "sign"; + if (i == (this.currentEntity.visaCircuit.items.length - 1)) { + listModel.mode = "sign"; } else { - listModel.item_mode = "visa"; + listModel.mode = "visa"; } }); } } + removeDiffListOpinion(template: any, i: number): any { + this.opinionCircuitModified = true; + this.currentEntity.opinionCircuit.items.splice(i, 1); + } + toggleRole(role: any) { if (role.usedIn.length > 0) { this.config = { data: { msg: this.lang.confirmAction, warn: this.lang.roleUsedInTemplateInfo + " : <b>" + role.usedIn.join(', ') + '</b><br/>' + this.lang.roleUsedInTemplateInfo2 } }; @@ -674,7 +739,7 @@ export class EntitiesAdministrationComponent implements OnInit { .subscribe(() => { role.usedIn = []; if (this.currentEntity.listTemplate) { - this.currentEntity.listTemplate[role.id] = []; + this.currentEntity.listTemplate.items[role.id] = []; } this.notify.success(this.lang.listTemplatesRolesUpdated); }, (err) => { @@ -687,7 +752,7 @@ export class EntitiesAdministrationComponent implements OnInit { this.http.put("../../rest/listTemplates/types/entity_id/roles", { "roles": this.listTemplateRoles }) .subscribe(() => { if (this.currentEntity.listTemplate) { - this.currentEntity.listTemplate[role.id] = []; + this.currentEntity.listTemplate.items[role.id] = []; this.http.get("../../rest/listTemplates/types/entity_id/roles") .subscribe((data: any) => { this.listTemplateRoles = data['roles']; diff --git a/src/frontend/app/administration/user/users-administration.component.ts b/src/frontend/app/administration/user/users-administration.component.ts index 0e303b1bdbd9b6fef89e2b91c4aeda552d229137..557946e2e4c00f14e6eea27ac40bf00ad2c1dc07 100755 --- a/src/frontend/app/administration/user/users-administration.component.ts +++ b/src/frontend/app/administration/user/users-administration.component.ts @@ -121,7 +121,7 @@ export class UsersAdministrationComponent implements OnInit { if (response && response.hasOwnProperty('errors')) { this.notify.error(response.errors); } else { - user.isDeletable = response.isDeletable + user.isDeletable = response.isDeletable; if (response.isDeletable) { this.config = { @@ -173,122 +173,109 @@ export class UsersAdministrationComponent implements OnInit { if (user.inDiffListDest && user.isResDestUser) { //user is inDiffListDest and isResDestUser //update listModels - this.http.put('../../rest/listTemplates/entityDest/itemId/' + user.user_id, user) - .subscribe((data: any) => { - if (data.errors) { - this.notify.error(data.errors); - } else { - - //update listInstances - this.http.put('../../rest/listinstances', user.redirectListInstances) - .subscribe((data: any) => { - if (data != null && data.errors) { - this.notify.error(data.errors); - } else { - - //delete user - if (user.mode == 'delete') { - this.http.delete('../../rest/users/' + user.id) - .subscribe(() => { - for (let i in this.data) { - if (this.data[i].id == user.id) { - this.data.splice(Number(i), 1); - } + this.http.put('../../rest/listTemplates/entityDest/itemId/' + user.id, user) + .subscribe(() => { + this.http.put('../../rest/listinstances', user.redirectListInstances) + .subscribe((data: any) => { + if (data != null && data.errors) { + this.notify.error(data.errors); + } else { + + //delete user + if (user.mode == 'delete') { + this.http.delete('../../rest/users/' + user.id) + .subscribe(() => { + for (let i in this.data) { + if (this.data[i].id == user.id) { + this.data.splice(Number(i), 1); } - this.dataSource = new MatTableDataSource(this.data); - this.dataSource.paginator = this.paginator; - this.dataSource.sort = this.sort; - - if (this.quota.userQuota && user.status != 'SPD') { - this.quota.actives--; - } else if (this.quota.userQuota && user.status == 'SPD') { - this.quota.inactives--; - } - - this.notify.success(this.lang.userDeleted + ' « ' + user.user_id + ' »'); - - //end delete user - }, (err) => { - this.notify.error(err.error.errors); - }); - //suspend user - } else if (user.mode == 'suspend') { - this.http.put('../../rest/users/' + user.id + '/suspend', user) - .subscribe(() => { - user.status = 'SPD'; - this.notify.success(this.lang.userSuspended); - if (this.quota.userQuota) { - this.quota.inactives++; - this.quota.actives--; - } - - }, (err) => { - user.status = 'OK'; - this.notify.error(err.error.errors); - }); - } + } + this.dataSource = new MatTableDataSource(this.data); + this.dataSource.paginator = this.paginator; + this.dataSource.sort = this.sort; + + if (this.quota.userQuota && user.status != 'SPD') { + this.quota.actives--; + } else if (this.quota.userQuota && user.status == 'SPD') { + this.quota.inactives--; + } + + this.notify.success(this.lang.userDeleted + ' « ' + user.user_id + ' »'); + + //end delete user + }, (err) => { + this.notify.error(err.error.errors); + }); + //suspend user + } else if (user.mode == 'suspend') { + this.http.put('../../rest/users/' + user.id + '/suspend', user) + .subscribe(() => { + user.status = 'SPD'; + this.notify.success(this.lang.userSuspended); + if (this.quota.userQuota) { + this.quota.inactives++; + this.quota.actives--; + } + + }, (err) => { + user.status = 'OK'; + this.notify.error(err.error.errors); + }); } - //end update listInstances - }, (err) => { - this.notify.error(err.error.errors); - }); - } - //end update listModels + } + //end update listInstances + }, (err) => { + this.notify.error(err.error.errors); + }); }, (err) => { this.notify.error(err.error.errors); }); } else if (user.inDiffListDest && !user.isResDestUser) { //user is inDiffListDest //update listModels - this.http.put('../../rest/listTemplates/entityDest/itemId/' + user.user_id, user) - .subscribe((data: any) => { - if (data.errors) { - this.notify.error(data.errors); - } else { - - //delete user - if (user.mode == 'delete') { - this.http.delete('../../rest/users/' + user.id) - .subscribe(() => { - for (let i in this.data) { - if (this.data[i].id == user.id) { - this.data.splice(Number(i), 1); - } - } - this.dataSource = new MatTableDataSource(this.data); - this.dataSource.paginator = this.paginator; - this.dataSource.sort = this.sort; - - if (this.quota.userQuota && user.status == 'OK') { - this.quota.actives--; - } else if (this.quota.userQuota && user.status == 'SPD') { - this.quota.inactives--; + this.http.put('../../rest/listTemplates/entityDest/itemId/' + user.id, user) + .subscribe(() => { + //delete user + if (user.mode == 'delete') { + this.http.delete('../../rest/users/' + user.id) + .subscribe(() => { + for (let i in this.data) { + if (this.data[i].id == user.id) { + this.data.splice(Number(i), 1); } + } + this.dataSource = new MatTableDataSource(this.data); + this.dataSource.paginator = this.paginator; + this.dataSource.sort = this.sort; + + if (this.quota.userQuota && user.status == 'OK') { + this.quota.actives--; + } else if (this.quota.userQuota && user.status == 'SPD') { + this.quota.inactives--; + } - this.notify.success(this.lang.userDeleted + ' « ' + user.user_id + ' »'); + this.notify.success(this.lang.userDeleted + ' « ' + user.user_id + ' »'); - //end delete user - }, (err) => { - this.notify.error(err.error.errors); - }); - //suspend user - } else if (user.mode == 'suspend') { - this.http.put('../../rest/users/' + user.id + '/suspend', user) - .subscribe(() => { - user.status = 'SPD'; - this.notify.success(this.lang.userSuspended); - if (this.quota.userQuota) { - this.quota.inactives++; - this.quota.actives--; - } + //end delete user + }, (err) => { + this.notify.error(err.error.errors); + }); + //suspend user + } else if (user.mode == 'suspend') { + this.http.put('../../rest/users/' + user.id + '/suspend', user) + .subscribe(() => { + user.status = 'SPD'; + this.notify.success(this.lang.userSuspended); + if (this.quota.userQuota) { + this.quota.inactives++; + this.quota.actives--; + } - }, (err) => { - user.status = 'OK'; - this.notify.error(err.error.errors); - }); - } + }, (err) => { + user.status = 'OK'; + this.notify.error(err.error.errors); + }); } - //end update listModels }, (err) => { this.notify.error(err.error.errors); }); diff --git a/src/frontend/app/diffusions/diffusions-list.component.ts b/src/frontend/app/diffusions/diffusions-list.component.ts index 511bfbd258cac2065c081541dffb275693b59f41..78b674c74a20cbd5d106c4f84ea46d6e8beccd3a 100644 --- a/src/frontend/app/diffusions/diffusions-list.component.ts +++ b/src/frontend/app/diffusions/diffusions-list.component.ts @@ -134,7 +134,7 @@ export class DiffusionsListComponent implements OnInit { arrayRoutes.push(this.http.get('../../rest/roles?context=' + this.target)); } - arrayRoutes.push(this.http.get('../../rest/listTemplates/entities/' + entityId)); + arrayRoutes.push(this.http.get('../../rest/listTemplates/entities/' + entityId + '?type=diffusionList')); if (this.resId !== null) { arrayRoutes.push(this.http.get('../../rest/resources/' + this.resId + '/listInstance')); @@ -177,13 +177,15 @@ export class DiffusionsListComponent implements OnInit { } }), tap((data: any) => { - data.listTemplate.forEach((element: any) => { - if (element.item_mode == 'cc') { - this.diffList['copy'].items.push(element); - } else if (element.object_type != 'VISA_CIRCUIT') { - this.diffList[element.item_mode].items.push(element); - } - }); + if (data.listTemplates[0]) { + data.listTemplates[0].items.forEach((element: any) => { + if (element.item_mode == 'cc') { + this.diffList['copy'].items.push(element); + } else { + this.diffList[element.item_mode].items.push(element); + } + }); + } }), tap((data: any) => { if (data.listInstance !== undefined) { @@ -297,7 +299,7 @@ export class DiffusionsListComponent implements OnInit { resId: this.resId, listInstances: this.getCurrentListinstance() } - ] + ]; this.http.put('../../rest/listinstances', listInstance).pipe( tap((data: any) => { if (data && data.errors != null) { @@ -546,4 +548,4 @@ export class DiffusionsListComponent implements OnInit { return false; } } -} \ No newline at end of file +} diff --git a/src/frontend/app/visa/visa-workflow.component.ts b/src/frontend/app/visa/visa-workflow.component.ts index d77621146f8715b4af220ae6528d22c2410fc9d4..46a63a15b9613710a02a7c2b503ca089ea48a00d 100644 --- a/src/frontend/app/visa/visa-workflow.component.ts +++ b/src/frontend/app/visa/visa-workflow.component.ts @@ -48,17 +48,15 @@ export class VisaWorkflowComponent implements OnInit { this.visaWorkflow.items = []; - let route = this.linkedToMaarchParapheur === true ? `../../rest/listTemplates/entities/${entityId}/maarchParapheur` : `../../rest/listTemplates/entities/${entityId}`; + let route = this.linkedToMaarchParapheur === true ? `../../rest/listTemplates/entities/${entityId}?type=visaCircuit&maarchParapheur=true` : `../../rest/listTemplates/entities/${entityId}?type=visaCircuit`; this.http.get(route) .subscribe((data: any) => { - data.listTemplate.forEach((element: any) => { - if (element.object_type === 'VISA_CIRCUIT') { - element.requested_signature = (element.item_mode === 'visa' ? false : true); - this.visaWorkflow.items.push(element); - } - }); + if (data.listTemplates[0]) { + this.visaWorkflow.items = data.listTemplates[0].items; + } this.visaWorkflow.items.forEach((element: any) => { + element.requested_signature = element.item_mode !== 'visa'; if (element.externalId.maarchParapheur !== undefined) { this.http.get("../../rest/maarchParapheur/user/" + element.externalId.maarchParapheur + "/picture") .subscribe((data: any) => { @@ -119,7 +117,7 @@ export class VisaWorkflowComponent implements OnInit { 'labelToDisplay': userRest.idToDisplay, 'requested_signature': false, 'picture': '' - } + }; this.visaWorkflow.items.push(user); this.http.get("../../rest/maarchParapheur/user/" + user.externalId.maarchParapheur + "/picture") .subscribe((data: any) => {