diff --git a/workflow/engine/classes/model/ListInbox.php b/workflow/engine/classes/model/ListInbox.php index 418405f2e..be80ddf35 100644 --- a/workflow/engine/classes/model/ListInbox.php +++ b/workflow/engine/classes/model/ListInbox.php @@ -257,8 +257,8 @@ class ListInbox extends BaseListInbox $criteria = new Criteria(); $criteria->addSelectColumn(ContentPeer::CON_VALUE); - $criteria->add( ContentPeer::CON_ID, $data['APP_UID'], Criteria::EQUAL ); - $criteria->add( ContentPeer::CON_CATEGORY, 'APP_TITLE', Criteria::EQUAL ); + $criteria->add( ContentPeer::CON_ID, $data['TAS_UID'], Criteria::EQUAL ); + $criteria->add( ContentPeer::CON_CATEGORY, 'TAS_DEF_TITLE', Criteria::EQUAL ); $criteria->add( ContentPeer::CON_LANG, SYS_LANG, Criteria::EQUAL ); $dataset = ContentPeer::doSelectRS($criteria); $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); diff --git a/workflow/engine/methods/cases/proxyNewCasesList.php b/workflow/engine/methods/cases/proxyNewCasesList.php index 4ed871e2c..65d469b1d 100644 --- a/workflow/engine/methods/cases/proxyNewCasesList.php +++ b/workflow/engine/methods/cases/proxyNewCasesList.php @@ -16,23 +16,23 @@ if (!isset($_SESSION['USER_LOGGED'])) { try { $userUid = $_SESSION['USER_LOGGED']; - $filters['paged'] = isset( $_REQUEST["paged"] ) ? $_REQUEST["paged"] : true; - $filters['count'] = isset( $_REQUEST['count'] ) ? $_REQUEST['count'] : true; - $filters['category'] = isset( $_REQUEST["category"] ) ? $_REQUEST["category"] : ""; - $filters['process'] = isset( $_REQUEST["process"] ) ? $_REQUEST["process"] : ""; - $filters['search'] = isset( $_REQUEST["search"] ) ? $_REQUEST["search"] : ""; - $filters['filter'] = isset( $_REQUEST["filter"] ) ? $_REQUEST["filter"] : ""; + $filters['paged'] = isset( $_REQUEST["paged"] ) ? $filter->sanitizeInputValue($_REQUEST["paged"], 'nosql') : true; + $filters['count'] = isset( $_REQUEST['count'] ) ? $filter->sanitizeInputValue($_REQUEST["count"], 'nosql') : true; + $filters['category'] = isset( $_REQUEST["category"] ) ? $filter->sanitizeInputValue($_REQUEST["category"], 'nosql') : ""; + $filters['process'] = isset( $_REQUEST["process"] ) ? $filter->sanitizeInputValue($_REQUEST["process"], 'nosql') : ""; + $filters['search'] = isset( $_REQUEST["search"] ) ? $filter->sanitizeInputValue($_REQUEST["search"], 'nosql') : ""; + $filters['filter'] = isset( $_REQUEST["filter"] ) ? $filter->sanitizeInputValue($_REQUEST["filter"], 'nosql') : ""; $filters['dateFrom'] = (!empty( $_REQUEST["dateFrom"] )) ? substr( $_REQUEST["dateFrom"], 0, 10 ) : ""; $filters['dateTo'] = (!empty( $_REQUEST["dateTo"] )) ? substr( $_REQUEST["dateTo"], 0, 10 ) : ""; - $filters['start'] = isset( $_REQUEST["start"] ) ? $_REQUEST["start"] : "0"; - $filters['limit'] = isset( $_REQUEST["limit"] ) ? $_REQUEST["limit"] : "25"; - $filters['sort'] = (isset($_REQUEST['sort']))? (($_REQUEST['sort'] == 'APP_STATUS_LABEL')? 'APP_STATUS' : $_REQUEST['sort']) : ''; - $filters['dir'] = isset( $_REQUEST["dir"] ) ? $_REQUEST["dir"] : "DESC"; + $filters['start'] = isset( $_REQUEST["start"] ) ? $filter->sanitizeInputValue($_REQUEST["start"], 'nosql') : "0"; + $filters['limit'] = isset( $_REQUEST["limit"] ) ? $filter->sanitizeInputValue($_REQUEST["limit"], 'nosql') : "25"; + $filters['sort'] = (isset($_REQUEST['sort']))? (($_REQUEST['sort'] == 'APP_STATUS_LABEL')? 'APP_STATUS' : $filter->sanitizeInputValue($_REQUEST["sort"], 'nosql')) : ''; + $filters['dir'] = isset( $_REQUEST["dir"] ) ? $filter->sanitizeInputValue($_REQUEST["dir"], 'nosql') : "DESC"; - $filters['action'] = isset( $_REQUEST["action"] ) ? $_REQUEST["action"] : ""; - $listName = isset( $_REQUEST["list"] ) ? $_REQUEST["list"] : "inbox"; - $filters['filterStatus'] = isset( $_REQUEST["filterStatus"] ) ? $_REQUEST["filterStatus"] : ""; + $filters['action'] = isset( $_REQUEST["action"] ) ? $filter->sanitizeInputValue($_REQUEST["action"], 'nosql') : ""; + $listName = isset( $_REQUEST["list"] ) ? $filter->sanitizeInputValue($_REQUEST["list"], 'nosql') : "inbox"; + $filters['filterStatus'] = isset( $_REQUEST["filterStatus"] ) ? $filter->sanitizeInputValue($_REQUEST["filterStatus"], 'nosql') : ""; // Select list switch ($listName) { diff --git a/workflow/engine/methods/processes/processes_Save.php b/workflow/engine/methods/processes/processes_Save.php index 472756449..cca4e590e 100755 --- a/workflow/engine/methods/processes/processes_Save.php +++ b/workflow/engine/methods/processes/processes_Save.php @@ -32,6 +32,8 @@ $function = isset( $_POST['function'] ) ? $_POST['function'] : ''; $infoProcess = new Process(); $resultProcessOld = $infoProcess->load($_POST['form']['PRO_UID']); +unset($resultProcessOld['PRO_DYNAFORMS']); + switch ($function) { case 'lookForNameProcess': require_once 'classes/model/Content.php'; @@ -93,8 +95,10 @@ switch ($function) { break; } + $resultProcessNew = $infoProcess->load($_POST['form']['PRO_UID']); -$oldFields = array_diff_assoc($resultProcessOld,$resultProcessNew); +unset($resultProcessNew['PRO_DYNAFORMS']); + $newFields = array_diff_assoc($resultProcessNew,$resultProcessOld); $fields = array(); @@ -114,7 +118,7 @@ if(array_key_exists('PRO_SUMMARY_DYNAFORM', $newFields)) { $fields[] = "Dynaform to show a case summary"; } if(array_key_exists('PRO_DERIVATION_SCREEN_TPL', $newFields)) { - $fields[] = "Routing Screen Template"; + $fields[] = "Routing Screen Template"; } if(array_key_exists('PRO_DEBUG', $newFields)) { $fields[] = G::LoadTranslation('ID_PRO_DEBUG'); @@ -147,7 +151,7 @@ G::auditLog('EditProcess','Edit fields ('.implode(', ',$fields).') in process "' if(isset($_POST['form']['PRO_UID']) && !empty($_POST['form']['PRO_UID'])) { $valuesProcess['PRO_UID'] = $_POST['form']['PRO_UID']; - $valuesProcess['PRO_UPDATE_DATE'] = date("Y-m-d H:i:s"); + $valuesProcess['PRO_UPDATE_DATE'] = date("Y-m-d H:i:s"); G::LoadClass('processes'); $infoProcess = new Processes(); $resultProcess = $infoProcess->updateProcessRow($valuesProcess); diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Light.php b/workflow/engine/src/ProcessMaker/Services/Api/Light.php index f7feb8cc8..ed3a8ccab 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/Light.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/Light.php @@ -1612,4 +1612,65 @@ class Light extends Api } return $response; } + + /** + * Get next step + * + * @url POST /get-next-step/:app_uid + * @return array + */ + public function doGetStep($app_uid, $request_data) + { + $pro_uid = $request_data["pro_uid"]; + $act_uid = $request_data["act_uid"]; + $step_uid = $request_data["step_uid"]; + $step_pos = $request_data["step_pos"]; + $app_index = $request_data["app_index"]; + $dyn_uid = isset($request_data["dyn_uid"]) ? $request_data["dyn_uid"] : null; + $usr_uid = $this->getUserId(); + + $response = []; + + //trigger before + $oMobile = new \ProcessMaker\BusinessModel\Light(); + $triggers = $oMobile->doExecuteTriggerCase($usr_uid, $pro_uid, $act_uid, $app_uid, $step_uid, "before"); + if ($triggers["status"] === "ok") { + $triggers["status"] = "200"; + } + $response["triggers"] = $triggers; + + //conditionalSteps + $oCase = new \Cases(); + $oAppDelegate = new \AppDelegation(); + $alreadyRouted = $oAppDelegate->alreadyRouted($app_uid, $app_index); + if ($alreadyRouted) { + throw (new RestException(Api::STAT_APP_EXCEPTION, G::LoadTranslation('ID_CASE_DELEGATION_ALREADY_CLOSED'))); + } + $_SESSION["APPLICATION"] = $app_uid; + $_SESSION["PROCESS"] = $pro_uid; + $_SESSION["INDEX"] = $app_index; + $_SESSION["USER_LOGGED"] = $usr_uid; + + do { + $conditionalSteps = $oCase->getNextStep($pro_uid, $app_uid, $app_index, $step_pos); + if (is_array($conditionalSteps) && ( + $conditionalSteps["TYPE"] === "DYNAFORM" || + $conditionalSteps["TYPE"] === "DERIVATION") + ) { + break; + } else { + $step_pos = $step_pos + 1; + } + } while ($conditionalSteps !== false); + $response["conditionalSteps"] = $conditionalSteps; + + //variables + $cases = new \ProcessMaker\BusinessModel\Cases(); + $variables = $cases->getCaseVariables($app_uid, $usr_uid, $dyn_uid); + $variables = DateTime::convertUtcToTimeZone($variables); + $response["variables"] = $variables; + + return $response; + } + }