diff --git a/workflow/engine/classes/class.wsBase.php b/workflow/engine/classes/class.wsBase.php index 1cc3c1975..5478cec81 100755 --- a/workflow/engine/classes/class.wsBase.php +++ b/workflow/engine/classes/class.wsBase.php @@ -1248,6 +1248,16 @@ class wsBase */ public function newCase($processId, $userId, $taskId, $variables) { try { + //GET, POST & $_SESSION Vars + //Unset any variable, because we are starting a new case + if (isset($_SESSION['APPLICATION'])) unset($_SESSION['APPLICATION']); + if (isset($_SESSION['PROCESS'])) unset($_SESSION['PROCESS']); + if (isset($_SESSION['TASK'])) unset($_SESSION['TASK']); + if (isset($_SESSION['INDEX'])) unset($_SESSION['INDEX']); + if (isset($_SESSION['USER_LOGGED'])) unset($_SESSION['USER_LOGGED']); + //if (isset($_SESSION['USR_USERNAME'])) unset($_SESSION['USR_USERNAME']); + //if (isset($_SESSION['STEP_POSITION'])) unset($_SESSION['STEP_POSITION']); + $Fields = array(); if ( is_array($variables) && count($variables)>0 ) { $Fields = $variables; @@ -1286,10 +1296,19 @@ class wsBase $result = new wsResponse (14, G::loadTranslation ('ID_TASK_INVALID_USER_NOT_ASSIGNED_TASK')); return $result; } - - $case = $oCase->startCase($taskId, $userId); - $caseId = $case['APPLICATION']; - $caseNr = $case['CASE_NUMBER']; + + $case = $oCase->startCase($taskId, $userId); + + $_SESSION['APPLICATION'] = $case['APPLICATION']; + $_SESSION['PROCESS'] = $case['PROCESS']; + $_SESSION['TASK'] = $taskId; + $_SESSION['INDEX'] = $case['INDEX']; + $_SESSION['USER_LOGGED'] = $userId; + //$_SESSION['USR_USERNAME'] = $case['USR_USERNAME']; + //$_SESSION['STEP_POSITION'] = 0; + + $caseId = $case['APPLICATION']; + $caseNr = $case['CASE_NUMBER']; $oldFields = $oCase->loadCase( $caseId ); diff --git a/workflow/engine/methods/services/upload.php b/workflow/engine/methods/services/upload.php index f3455ec9d..211789e04 100755 --- a/workflow/engine/methods/services/upload.php +++ b/workflow/engine/methods/services/upload.php @@ -32,95 +32,125 @@ if (isset($_FILES) && $_FILES['ATTACH_FILE']['error'] == 0) { try{ - G::loadClass('case'); - $folderId = $fileTags = ""; - if ( isset($_POST['DOC_UID']) && $_POST['DOC_UID'] != - 1) { - /* the document is of an Specific Input Document. Get path and Tag information*/ - - require_once ('classes/model/AppFolder.php'); - require_once ('classes/model/InputDocument.php'); - - $oInputDocument = new InputDocument(); - $aID = $oInputDocument->load($_POST['DOC_UID']); - - //Get the Custom Folder ID (create if necessary) - $oFolder = new AppFolder(); - $folderId = $oFolder->createFromPath($aID['INP_DOC_DESTINATION_PATH'], $_POST['APPLICATION']); - - //Tags - $fileTags = $oFolder->parseTags($aID['INP_DOC_TAGS'], $_POST['APPLICATION']); - } - - $oAppDocument = new AppDocument(); - if (isset($_POST['APP_DOC_UID']) && trim($_POST['APP_DOC_UID']) != '') { //is update - echo '[update]'; - $aFields['APP_DOC_UID'] = $_POST['APP_DOC_UID']; - $aFields['DOC_VERSION'] = $_POST['DOC_VERSION']; - $aFields['APP_DOC_FILENAME'] = $_FILES['ATTACH_FILE']['name']; - - if( isset($_POST['APPLICATION']) ) - $aFields['APP_UID'] = $_POST['APPLICATION']; - if( isset($_POST['INDEX']) ) - $aFields['DEL_INDEX'] = $_POST['INDEX']; - if( isset($_POST['USR_UID']) ) - $aFields['USR_UID'] = $_POST['USR_UID']; - if( isset($_POST['DOC_UID']) ) - $aFields['DOC_UID'] = $_POST['DOC_UID']; - if( isset($_POST['APP_DOC_TYPE']) ) - $aFields['APP_DOC_TYPE']= $_POST['APP_DOC_TYPE']; - $aFields['APP_DOC_CREATE_DATE'] = date('Y-m-d H:i:s'); - - $aFields['APP_DOC_COMMENT'] = isset($_POST['COMMENT']) ? $_POST['COMMENT'] : ''; - $aFields['APP_DOC_TITLE'] = isset($_POST['TITLE']) ? $_POST['TITLE'] : ''; - - //$aFields['FOLDER_UID'] = $folderId, - //$aFields['APP_DOC_TAGS']= $fileTags - - $oAppDocument->create($aFields); - - } else { //new record - $aFields = array ( - 'APP_UID' => $_POST['APPLICATION'], - 'DEL_INDEX' => $_POST['INDEX'], - 'USR_UID' => $_POST['USR_UID'], - 'DOC_UID' => $_POST['DOC_UID'], - 'APP_DOC_TYPE' => $_POST['APP_DOC_TYPE'], - 'APP_DOC_CREATE_DATE' => date('Y-m-d H:i:s'), - 'APP_DOC_COMMENT' => isset($_POST['COMMENT']) ? $_POST['COMMENT'] : '', - 'APP_DOC_TITLE' => isset($_POST['TITLE']) ? $_POST['TITLE'] : '', - 'APP_DOC_FILENAME' => isset($_FILES['ATTACH_FILE']['name']) ? $_FILES['ATTACH_FILE']['name'] : '', - 'FOLDER_UID' => $folderId, - 'APP_DOC_TAGS' => $fileTags - ); - - $oAppDocument->create($aFields); - } - - $sAppUid = $oAppDocument->getAppUid(); - $sAppDocUid = $oAppDocument->getAppDocUid(); - $iDocVersion = $oAppDocument->getDocVersion(); - $info = pathinfo($oAppDocument->getAppDocFilename()); - $ext = (isset($info['extension']) ? $info['extension'] : ''); - - //save the file - echo $sPathName = PATH_DOCUMENT . $sAppUid . PATH_SEP; - echo $sFileName = $sAppDocUid . '_' . $iDocVersion . '.' . $ext; - print G::uploadFile($_FILES['ATTACH_FILE']['tmp_name'], $sPathName, $sFileName); - print("* The file {$_FILES['ATTACH_FILE']['name']} was uploaded successfully in case {$sAppUid} as input document..\n"); - - //Plugin Hook PM_UPLOAD_DOCUMENT for upload document - $oPluginRegistry = & PMPluginRegistry::getSingleton(); - if ($oPluginRegistry->existsTrigger(PM_UPLOAD_DOCUMENT) && class_exists('uploadDocumentData')) { - $oData['APP_UID'] = $_POST['APPLICATION']; - $documentData = new uploadDocumentData($_POST['APPLICATION'], $_POST['USR_UID'], $sPathName . $sFileName, $aFields['APP_DOC_FILENAME'], $sAppDocUid); - - $oPluginRegistry->executeTriggers(PM_UPLOAD_DOCUMENT, $documentData); - unlink($sPathName . $sFileName); - } - /*end plugin*/ - } catch ( Exception $e) { - print( $e->getMessage() ); - } + G::LoadClass('case'); + + $folderId = ''; + $fileTags = ''; + + if (isset($_POST['DOC_UID']) && $_POST['DOC_UID'] != -1) { + //The document is of an Specific Input Document. Get path and Tag information + require_once ('classes/model/AppFolder.php'); + require_once ('classes/model/InputDocument.php'); + + $oInputDocument = new InputDocument(); + $aID = $oInputDocument->load($_POST['DOC_UID']); + + //Get the Custom Folder ID (create if necessary) + $oFolder = new AppFolder(); + $folderId = $oFolder->createFromPath($aID['INP_DOC_DESTINATION_PATH'], $_POST['APPLICATION']); + + //Tags + $fileTags = $oFolder->parseTags($aID['INP_DOC_TAGS'], $_POST['APPLICATION']); + } + + $oAppDocument = new AppDocument(); + + if (isset($_POST['APP_DOC_UID']) && trim($_POST['APP_DOC_UID']) != '') { + //Update + echo '[update]'; + $aFields['APP_DOC_UID'] = $_POST['APP_DOC_UID']; + $aFields['DOC_VERSION'] = $_POST['DOC_VERSION']; + $aFields['APP_DOC_FILENAME'] = $_FILES['ATTACH_FILE']['name']; + + if (isset($_POST['APPLICATION'])) + $aFields['APP_UID'] = $_POST['APPLICATION']; + if (isset($_POST['INDEX'])) + $aFields['DEL_INDEX'] = $_POST['INDEX']; + if (isset($_POST['USR_UID'])) + $aFields['USR_UID'] = $_POST['USR_UID']; + if (isset($_POST['DOC_UID'])) + $aFields['DOC_UID'] = $_POST['DOC_UID']; + if (isset($_POST['APP_DOC_TYPE'])) + $aFields['APP_DOC_TYPE']= $_POST['APP_DOC_TYPE']; + + $aFields['APP_DOC_CREATE_DATE'] = date('Y-m-d H:i:s'); + $aFields['APP_DOC_COMMENT'] = isset($_POST['COMMENT'])? $_POST['COMMENT'] : ''; + $aFields['APP_DOC_TITLE'] = isset($_POST['TITLE'])? $_POST['TITLE'] : ''; + + //$aFields['FOLDER_UID'] = $folderId, + //$aFields['APP_DOC_TAGS']= $fileTags + } + else { + //New record + $aFields = array( + 'APP_UID' => $_POST['APPLICATION'], + 'DEL_INDEX' => $_POST['INDEX'], + 'USR_UID' => $_POST['USR_UID'], + 'DOC_UID' => $_POST['DOC_UID'], + 'APP_DOC_TYPE' => $_POST['APP_DOC_TYPE'], + 'APP_DOC_CREATE_DATE' => date('Y-m-d H:i:s'), + 'APP_DOC_COMMENT' => isset($_POST['COMMENT'])? $_POST['COMMENT'] : '', + 'APP_DOC_TITLE' => isset($_POST['TITLE'])? $_POST['TITLE'] : '', + 'APP_DOC_FILENAME' => isset($_FILES['ATTACH_FILE']['name'])? $_FILES['ATTACH_FILE']['name'] : '', + 'FOLDER_UID' => $folderId, + 'APP_DOC_TAGS' => $fileTags + ); + } + + $oAppDocument->create($aFields); + + $sAppUid = $oAppDocument->getAppUid(); + $sAppDocUid = $oAppDocument->getAppDocUid(); + $iDocVersion = $oAppDocument->getDocVersion(); + $info = pathinfo($oAppDocument->getAppDocFilename()); + $ext = isset($info['extension'])? $info['extension'] : ''; + + //Save the file + echo $sPathName = PATH_DOCUMENT . $sAppUid . PATH_SEP; + echo $sFileName = $sAppDocUid . '_' . $iDocVersion . '.' . $ext; + print G::uploadFile($_FILES['ATTACH_FILE']['tmp_name'], $sPathName, $sFileName); + print("* The file {$_FILES['ATTACH_FILE']['name']} was uploaded successfully in case {$sAppUid} as input document..\n"); + + //Get current Application Fields + $application = new Application(); + $appFields = $application->Load($_POST['APPLICATION']); + $appFields = unserialize($appFields['APP_DATA']); + + $_SESSION['APPLICATION'] = $appFields['APPLICATION']; + $_SESSION['PROCESS'] = $appFields['PROCESS']; + $_SESSION['TASK'] = $appFields['TASK']; + $_SESSION['INDEX'] = $appFields['INDEX']; + $_SESSION['USER_LOGGED'] = $appFields['USER_LOGGED']; //$_POST['USR_UID'] + //$_SESSION['USR_USERNAME'] = $appFields['USR_USERNAME']; + //$_SESSION['STEP_POSITION'] = 0; + + //Plugin Hook PM_UPLOAD_DOCUMENT for upload document + $oPluginRegistry = &PMPluginRegistry::getSingleton(); + + if ($oPluginRegistry->existsTrigger(PM_UPLOAD_DOCUMENT) && class_exists("uploadDocumentData")) { + $triggerDetail = $oPluginRegistry->getTriggerInfo(PM_UPLOAD_DOCUMENT); + $documentData = new uploadDocumentData($_POST["APPLICATION"], $_POST["USR_UID"], $sPathName . $sFileName, $aFields["APP_DOC_FILENAME"], $sAppDocUid, $iDocVersion); + $uploadReturn = $oPluginRegistry->executeTriggers(PM_UPLOAD_DOCUMENT, $documentData); + + if ($uploadReturn) { + $aFields["APP_DOC_PLUGIN"] = $triggerDetail->sNamespace; + + if (!isset($aFields["APP_DOC_UID"])) { + $aFields["APP_DOC_UID"] = $sAppDocUid; + } + + if (!isset($aFields["DOC_VERSION"])) { + $aFields["DOC_VERSION"] = $iDocVersion; + } + + $oAppDocument->update($aFields); + + unlink($sPathName . $sFileName); + } + } + //End plugin + } + catch (Exception $e) { + print($e->getMessage()); + } } - - diff --git a/workflow/engine/templates/processes/webentryPost.tpl b/workflow/engine/templates/processes/webentryPost.tpl index 204c1def7..c4e209e75 100755 --- a/workflow/engine/templates/processes/webentryPost.tpl +++ b/workflow/engine/templates/processes/webentryPost.tpl @@ -27,12 +27,24 @@ ws_open (); $result = ws_newCase ( '{processUid}', '{taskUid}', convertFormToWSObjects($_POST['form']) ); - if( $result->status_code == 0 ) { + if ($result->status_code == 0) { $caseId = $result->caseId; - $caseNr = $result->caseNumber; - {USR_VAR} - - #save files + $caseNr = $result->caseNumber; + + {USR_VAR} + + if ($USR_UID == -1) { + G::LoadClass("sessions"); + + global $sessionId; + + $sessions = new Sessions(); + $session = $sessions->getSessionUser($sessionId); + + $USR_UID = $session["USR_UID"]; + } + + //Save files if ( isset($_FILES['form']) ) { foreach ($_FILES['form']['name'] as $sFieldName => $vValue) { if ( $_FILES['form']['error'][$sFieldName] == 0 ){