From 0bfb285940fcebf6d1f7747de5cda8f6210e734d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luciana=20Nu=C3=B1ez?= Date: Thu, 12 Jan 2023 15:57:18 -0400 Subject: [PATCH 1/5] PMCORE-4117 --- .../translations/english/processmaker.en.po | 6 + workflow/engine/data/mysql/insert.sql | 1 + .../methods/cases/cases_OpenToRevise.php | 117 +++--------------- workflow/engine/methods/cases/open.php | 2 +- 4 files changed, 23 insertions(+), 103 deletions(-) diff --git a/workflow/engine/content/translations/english/processmaker.en.po b/workflow/engine/content/translations/english/processmaker.en.po index 67001106b..33f3669b4 100755 --- a/workflow/engine/content/translations/english/processmaker.en.po +++ b/workflow/engine/content/translations/english/processmaker.en.po @@ -2569,6 +2569,12 @@ msgstr "Assign Supervisor Dynaform" msgid "Assign Supervisor Input" msgstr "Assign Supervisor Input" +# TRANSLATION +# LABEL/ID_NO_ASSOCIATED_INPUT_DOCUMENT_DYN +#: LABEL/ID_NO_ASSOCIATED_INPUT_DOCUMENT_DYN +msgid "There are no associated Input Documents or Dynaforms" +msgstr "There are no associated Input Documents or Dynaforms" + # TRANSLATION # LABEL/ID_ASSIGN_TASK #: LABEL/ID_ASSIGN_TASK diff --git a/workflow/engine/data/mysql/insert.sql b/workflow/engine/data/mysql/insert.sql index d867fc689..466ceccd0 100755 --- a/workflow/engine/data/mysql/insert.sql +++ b/workflow/engine/data/mysql/insert.sql @@ -61691,6 +61691,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_USER_INEFFICIENCE','en','Inefficience Cost By User','2015-03-09') , ( 'LABEL','ID_USER_INFORMATION','en','User Information','2014-01-15') , ( 'LABEL','ID_USER_IS_SUPERVISOR_DOES_NOT_ASSOCIATED_INPUT_DOCUMENT','en','The user is supervisor, but it does not have an associated input document','2016-07-06') , +( 'LABEL','ID_NO_ASSOCIATED_INPUT_DOCUMENT_DYN','en','There are no associated Input Documents or Dynaforms','2023-01-12') , ( 'LABEL','ID_USER_LIST','en','User List','2014-01-15') , ( 'LABEL','ID_USER_MUST_CHANGE_PASSWORD_AT_NEXT_LOGON','en','User must change password at next logon','2014-05-16') , ( 'LABEL','ID_USER_NAME','en','User Name','2014-01-15') , diff --git a/workflow/engine/methods/cases/cases_OpenToRevise.php b/workflow/engine/methods/cases/cases_OpenToRevise.php index feda2fb91..ea82fb5d6 100644 --- a/workflow/engine/methods/cases/cases_OpenToRevise.php +++ b/workflow/engine/methods/cases/cases_OpenToRevise.php @@ -1,27 +1,6 @@ . - * - * For more information, contact Colosa Inc, 2566 Le Jeune Rd., - * Coral Gables, FL, 33134, USA, or email info@colosa.com. - */ -/* Permissions */ + +use ProcessMaker\BusinessModel\Cases as BusinessModelCases; if ($RBAC->userCanAccess( 'PM_SUPERVISOR' ) != 1) { switch ($RBAC->userCanAccess( 'PM_SUPERVISOR' )) { @@ -38,7 +17,6 @@ if ($RBAC->userCanAccess( 'PM_SUPERVISOR' ) != 1) { } } - /* GET , POST & $_SESSION Vars */ if (isset( $_SESSION['APPLICATION'] )) { unset( $_SESSION['APPLICATION'] ); @@ -70,89 +48,24 @@ $_SESSION['TASK'] = $aFields['TAS_UID']; $_SESSION['STEP_POSITION'] = 0; $_SESSION['CURRENT_TASK'] = $aFields['TAS_UID']; -$currentTask = (empty($tasUid)) ? $aFields["APP_DATA"]["TASK"]: $tasUid; +$flag = true; -/* Redirect to next step */ +$cases = new BusinessModelCases(); +$urls = $cases->getAllUrlStepsToRevise($_SESSION['APPLICATION'] , $_SESSION['INDEX']); -$cases = new Cases(); - -$arrayDynaFormUid = array(); -$arrayInputUid = array(); - -$resultDynaForm = $cases->getAllDynaformsStepsToRevise($aFields["APP_UID"]); - -while ($resultDynaForm->next()) { - $row = $resultDynaForm->getRow(); - - $arrayDynaFormUid[$row["STEP_UID_OBJ"]] = $row["STEP_UID_OBJ"]; - $arrayDynaFormUid['DYN_UID'] = $row["STEP_UID_OBJ"]; +if (!empty($url)) { + $url = $urls[0]['url']; +} else { + $aMessage = array (); + $aMessage["MESSAGE"] = G::LoadTranslation("ID_NO_ASSOCIATED_INPUT_DOCUMENT_DYN"); + $G_PUBLISH = new Publisher(); + $G_PUBLISH->AddContent("xmlform", "xmlform", "login/showMessage", "", $aMessage); + G::RenderPage("publishBlank", "blank"); } -$resultInput = $cases->getAllInputsStepsToRevise($aFields["APP_UID"]); - -while ($resultInput->next()) { - $row = $resultInput->getRow(); - - $arrayInputUid[$row["STEP_UID_OBJ"]] = $row["STEP_UID_OBJ"]; - $arrayInputUid['INP_DOC_UID'] = $row["STEP_UID_OBJ"]; -} - -$criteria = new Criteria(); - -$criteria->addSelectColumn(StepPeer::STEP_TYPE_OBJ); -$criteria->addSelectColumn(StepPeer::STEP_UID_OBJ); -$criteria->addSelectColumn(StepPeer::STEP_POSITION); - -$criteria->add(StepPeer::PRO_UID, $aFields["PRO_UID"], Criteria::EQUAL); -$criteria->add(StepPeer::TAS_UID, $currentTask, Criteria::EQUAL); -$criteria->addAscendingOrderByColumn(StepPeer::STEP_POSITION); - -$rsCriteria = StepPeer::doSelectRS($criteria); -$rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); - -$url = ""; -$flag = false; -//Review the object in the current task -while ($rsCriteria->next()) { - $row = $rsCriteria->getRow(); - - $stepTypeObj = $row["STEP_TYPE_OBJ"]; - $stepUidObj = $row["STEP_UID_OBJ"]; - - switch ($stepTypeObj) { - case "DYNAFORM": - if (isset($arrayDynaFormUid[$stepUidObj])) { - $url = "cases_StepToRevise?type=DYNAFORM&PRO_UID=" . $aFields["PRO_UID"] . "&DYN_UID=" . $stepUidObj . "&APP_UID=" . $sAppUid . "&DEL_INDEX=" . $iDelIndex . "&position=1"; - $flag = true; - } - break; - case "INPUT_DOCUMENT": - if (isset($arrayInputUid[$stepUidObj])) { - $url = "cases_StepToReviseInputs?type=INPUT_DOCUMENT&PRO_UID=" . $aFields["PRO_UID"] . "&INP_DOC_UID=" . $stepUidObj . "&APP_UID=" . $sAppUid . "&position=" . $row["STEP_POSITION"] . "&DEL_INDEX=" . $iDelIndex; - $flag = true; - } - break; - } - - if ($flag) { - break; - } -} - -//Review the list in Assigned objects -if(!$flag && isset($arrayDynaFormUid['DYN_UID'])){ - $url = 'cases_StepToRevise?type=DYNAFORM&ex=0&PRO_UID='.$aFields["PRO_UID"].'&DYN_UID='.$arrayDynaFormUid['DYN_UID'].'&APP_UID='.$sAppUid.'&position=1&DEL_INDEX='.$iDelIndex; - $flag = true; -} -if(!$flag && isset($arrayInputUid['INP_DOC_UID'])){ - $url = 'cases_StepToReviseInputs?type=INPUT_DOCUMENT&ex=0&PRO_UID='.$aFields["PRO_UID"].'&INP_DOC_UID='.$arrayInputUid['INP_DOC_UID'].'&APP_UID='.$sAppUid.'&position=1&DEL_INDEX='.$iDelIndex; - $flag = true; -} - - $processUser = new ProcessUser(); -$userAccess = $processUser->validateUserAccess($aFields['PRO_UID'], $_SESSION['USER_LOGGED']); -if(!$userAccess) { +$userAccess = $processUser->validateUserAccess($_SESSION['PROCESS'], $_SESSION['USER_LOGGED']); +if (!$userAccess) { $flag = false; } diff --git a/workflow/engine/methods/cases/open.php b/workflow/engine/methods/cases/open.php index 8cbab67af..5d8c909fa 100644 --- a/workflow/engine/methods/cases/open.php +++ b/workflow/engine/methods/cases/open.php @@ -179,7 +179,7 @@ $headPublisher->assign('_WORKSPACE', config("system.workspace")); $headPublisher->assign('_DEL_INDEX_DELEGATE', $delIndex); $headPublisher->assign('_USR_DELEGATE', $case['CURRENT_USER_UID']); -if (!isset($_SESSION['APPLICATION']) || !isset($_SESSION['TASK']) || !isset($_SESSION['INDEX'])) { +if (!isset($_SESSION['APPLICATION']) || !isset($_SESSION['TASK']) || !isset($_SESSION['INDEX']) || !isset($_SESSION['PROCESS'])) { $_SESSION['PROCESS'] = $case['PRO_UID']; $_SESSION['APPLICATION'] = $case['APP_UID']; $_SESSION['TASK'] = $case['TAS_UID']; From ed64cdbbb5d3aa7ec3f000d5059e86426f9321d7 Mon Sep 17 00:00:00 2001 From: Paula Quispe Date: Mon, 16 Jan 2023 10:34:54 -0400 Subject: [PATCH 2/5] PMCORE-4117 --- .../methods/cases/cases_OpenToRevise.php | 77 +++++++++---------- 1 file changed, 36 insertions(+), 41 deletions(-) diff --git a/workflow/engine/methods/cases/cases_OpenToRevise.php b/workflow/engine/methods/cases/cases_OpenToRevise.php index ea82fb5d6..447242fc1 100644 --- a/workflow/engine/methods/cases/cases_OpenToRevise.php +++ b/workflow/engine/methods/cases/cases_OpenToRevise.php @@ -2,65 +2,60 @@ use ProcessMaker\BusinessModel\Cases as BusinessModelCases; -if ($RBAC->userCanAccess( 'PM_SUPERVISOR' ) != 1) { - switch ($RBAC->userCanAccess( 'PM_SUPERVISOR' )) { - case - 2: - G::SendTemporalMessage( 'ID_USER_HAVENT_RIGHTS_SYSTEM', 'error', 'labels' ); - G::header( 'location: ../login/login' ); +if ($RBAC->userCanAccess('PM_SUPERVISOR') != 1) { + switch ($RBAC->userCanAccess('PM_SUPERVISOR')) { + case -2: + G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_SYSTEM', 'error', 'labels'); + G::header('location: ../login/login'); die(); break; default: - G::SendTemporalMessage( 'ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels' ); - G::header( 'location: ../login/login' ); + G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels'); + G::header('location: ../login/login'); die(); break; } } /* GET , POST & $_SESSION Vars */ -if (isset( $_SESSION['APPLICATION'] )) { - unset( $_SESSION['APPLICATION'] ); +if (isset($_SESSION['APPLICATION'])) { + unset($_SESSION['APPLICATION']); } -if (isset( $_SESSION['PROCESS'] )) { - unset( $_SESSION['PROCESS'] ); +if (isset($_SESSION['PROCESS'])) { + unset($_SESSION['PROCESS']); } -if (isset( $_SESSION['INDEX'] )) { - unset( $_SESSION['INDEX'] ); +if (isset($_SESSION['INDEX'])) { + unset($_SESSION['INDEX']); } -if (isset( $_SESSION['STEP_POSITION'] )) { - unset( $_SESSION['STEP_POSITION'] ); +if (isset($_SESSION['STEP_POSITION'])) { + unset($_SESSION['STEP_POSITION']); } - -/* Process the info */ -$oCase = new Cases(); -$sAppUid = $_GET['APP_UID']; -$iDelIndex = $_GET['DEL_INDEX']; +// Get information +$case = new Cases(); +$appUid = $_GET['APP_UID']; +$delIndex = $_GET['DEL_INDEX']; $tasUid = (isset($_GET['TAS_UID'])) ? $_GET['TAS_UID'] : ''; - -$_SESSION['APPLICATION'] = $_GET['APP_UID']; -$_SESSION['INDEX'] = $_GET['DEL_INDEX']; - -$aFields = $oCase->loadCase( $sAppUid, $iDelIndex ); - -$_SESSION['PROCESS'] = $aFields['PRO_UID']; - -$_SESSION['TASK'] = $aFields['TAS_UID']; +// Get case fields +$fields = $case->loadCase($appUid, $delIndex); +// Set some SESSION values +$_SESSION['APPLICATION'] = $appUid; +$_SESSION['INDEX'] = $delIndex ; +$_SESSION['PROCESS'] = $fields['PRO_UID']; +$_SESSION['TASK'] = $fields['TAS_UID']; $_SESSION['STEP_POSITION'] = 0; -$_SESSION['CURRENT_TASK'] = $aFields['TAS_UID']; - +$_SESSION['CURRENT_TASK'] = $fields['TAS_UID']; $flag = true; - $cases = new BusinessModelCases(); -$urls = $cases->getAllUrlStepsToRevise($_SESSION['APPLICATION'] , $_SESSION['INDEX']); +$urls = $cases->getAllUrlStepsToRevise($appUid, $delIndex); -if (!empty($url)) { +if (!empty($urls)) { $url = $urls[0]['url']; } else { - $aMessage = array (); - $aMessage["MESSAGE"] = G::LoadTranslation("ID_NO_ASSOCIATED_INPUT_DOCUMENT_DYN"); + $message = []; + $message["MESSAGE"] = G::LoadTranslation("ID_NO_ASSOCIATED_INPUT_DOCUMENT_DYN"); $G_PUBLISH = new Publisher(); - $G_PUBLISH->AddContent("xmlform", "xmlform", "login/showMessage", "", $aMessage); - G::RenderPage("publishBlank", "blank"); + $G_PUBLISH->AddContent("xmlform", "xmlform", "login/showMessage", "", $message); + G::RenderPage("publishBlank", "blank"); } $processUser = new ProcessUser(); @@ -72,9 +67,9 @@ if (!$userAccess) { if ($flag) { G::header("Location: " . $url); } else { - $aMessage = array (); - $aMessage["MESSAGE"] = G::LoadTranslation("ID_SUPERVISOR_DOES_NOT_HAVE_DYNAFORMS"); + $message = []; + $message["MESSAGE"] = G::LoadTranslation("ID_SUPERVISOR_DOES_NOT_HAVE_DYNAFORMS"); $G_PUBLISH = new Publisher(); - $G_PUBLISH->AddContent("xmlform", "xmlform", "login/showMessage", "", $aMessage); + $G_PUBLISH->AddContent("xmlform", "xmlform", "login/showMessage", "", $message); G::RenderPage("publishBlank", "blank"); } From 488a0b78ca80328ae48829e82c71458da5ff1f03 Mon Sep 17 00:00:00 2001 From: Roly Gutierrez Date: Mon, 16 Jan 2023 11:37:38 -0400 Subject: [PATCH 3/5] PMCORE-4059 Password Policy is not working --- workflow/engine/methods/login/authentication.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflow/engine/methods/login/authentication.php b/workflow/engine/methods/login/authentication.php index 2f7c512a6..cb408455c 100644 --- a/workflow/engine/methods/login/authentication.php +++ b/workflow/engine/methods/login/authentication.php @@ -364,7 +364,7 @@ try { //The other authentication methods should not be validated by password security policies. if (!empty($aUser['USR_AUTH_TYPE'])) { $authType = $aUser['USR_AUTH_TYPE']; - if ($authType != "mysql" && $authType != "") { + if (strtolower($authType) != "mysql" && $authType != "") { $policiesToExclude = [ 'ID_PPP_MINIMUM_LENGTH', 'ID_PPP_MAXIMUM_LENGTH', From ad715494b84bf5725384d4f0f9341bfcc82086de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luciana=20Nu=C3=B1ez?= Date: Tue, 17 Jan 2023 12:26:26 -0400 Subject: [PATCH 4/5] PMCORE-4119 --- resources/assets/js/home/CaseDetail.vue | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/resources/assets/js/home/CaseDetail.vue b/resources/assets/js/home/CaseDetail.vue index 2a56d5022..a686f3c89 100755 --- a/resources/assets/js/home/CaseDetail.vue +++ b/resources/assets/js/home/CaseDetail.vue @@ -77,6 +77,7 @@ v-if="props.row.USR_UID !== '' && props.row.STATUS !== 'CLOSED' && supervisor && flagSupervising" @click="onClickReassign(props.row)" variant="success" + :disabled="props.row.TASK[0].TAS_TYPE === 'MULTIPLE_INSTANCE_VALUE_BASED' || props.row.TASK[0].TAS_TYPE === 'MULTIPLE_INSTANCE'" > {{ $t("ID_REASSIGN") }} @@ -565,7 +566,8 @@ export default { { TITLE: v.TAS_TITLE, CODE_COLOR: v.TAS_COLOR, - COLOR: v.TAS_COLOR_LABEL + COLOR: v.TAS_COLOR_LABEL, + TAS_TYPE: v.TAS_ASSIGN_TYPE }, ], THREAD_TITLE: v.DEL_TITLE, From 40b43f79e872e3b5358e194b2b8c04cb715cfafb Mon Sep 17 00:00:00 2001 From: Roly Gutierrez Date: Tue, 17 Jan 2023 14:41:06 -0400 Subject: [PATCH 5/5] PMCORE-4126 Steps is not showing in the open case --- workflow/engine/templates/cases/open.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflow/engine/templates/cases/open.js b/workflow/engine/templates/cases/open.js index 43ef8bb17..5a0e42713 100644 --- a/workflow/engine/templates/cases/open.js +++ b/workflow/engine/templates/cases/open.js @@ -532,7 +532,7 @@ Ext.onReady(function(){ iconCls: 'ICON_STEPS', toggleHandler: togglePreview, disabled: true, - hidden: true + hidden: (typeof (treeToReviseTitle) == 'undefined' ? false : true) }, { id: 'informationMenu', text: _('ID_INFORMATION'),