2012-10-19 17:17:53 -04:00
|
|
|
<?php
|
2017-08-01 12:16:06 -04:00
|
|
|
|
|
|
|
|
use ProcessMaker\Plugins\PluginRegistry;
|
2017-11-28 13:40:30 -04:00
|
|
|
use ProcessMaker\Util\DateTime;
|
|
|
|
|
|
2017-08-01 12:16:06 -04:00
|
|
|
|
2016-06-27 12:17:06 -04:00
|
|
|
$filter = new InputFilter();
|
|
|
|
|
|
2017-08-17 17:44:37 -04:00
|
|
|
$_GET = $filter->xssRegexFilter($_GET, '/[\-\w]/');
|
2016-06-27 12:17:06 -04:00
|
|
|
|
2015-11-27 10:09:02 -04:00
|
|
|
if (!isset($_SESSION['USER_LOGGED'])) {
|
2017-12-04 13:25:35 +00:00
|
|
|
if (!strpos($_SERVER['REQUEST_URI'], 'gmail')) {
|
2016-06-30 12:58:50 -04:00
|
|
|
$responseObject = new stdclass();
|
|
|
|
|
$responseObject->error = G::LoadTranslation('ID_LOGIN_AGAIN');
|
|
|
|
|
$responseObject->success = true;
|
|
|
|
|
$responseObject->lostSession = true;
|
2017-12-04 13:25:35 +00:00
|
|
|
print G::json_encode($responseObject);
|
2016-06-30 12:58:50 -04:00
|
|
|
die();
|
|
|
|
|
} else {
|
2017-12-04 13:25:35 +00:00
|
|
|
G::SendTemporalMessage('ID_LOGIN_AGAIN', 'warning', 'labels');
|
|
|
|
|
die('<script type="text/javascript">
|
2015-11-27 10:09:02 -04:00
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var olink = document.location.href;
|
2015-12-09 19:41:55 -04:00
|
|
|
olink = ( olink.search("gmail") == -1 ) ? parent.document.location.href : olink;
|
|
|
|
|
|
|
|
|
|
if(olink.search("gmail") == -1 ){
|
2015-11-27 10:09:02 -04:00
|
|
|
prnt = parent.parent;
|
|
|
|
|
top.location = top.location;
|
|
|
|
|
} else {
|
|
|
|
|
var data = olink.split("?");
|
|
|
|
|
var odata = data[1].split("&");
|
2015-12-09 19:41:55 -04:00
|
|
|
var appUid = odata[0].split("=");
|
|
|
|
|
|
2015-11-27 10:09:02 -04:00
|
|
|
var dataToSend = {
|
|
|
|
|
"action": "credentials",
|
|
|
|
|
"operation": "refreshPmSession",
|
|
|
|
|
"type": "processCall",
|
|
|
|
|
"funParams": [
|
|
|
|
|
appUid[1],
|
2015-12-09 19:41:55 -04:00
|
|
|
""
|
2015-11-27 10:09:02 -04:00
|
|
|
],
|
2015-12-09 19:41:55 -04:00
|
|
|
"expectReturn": false
|
2015-11-27 10:09:02 -04:00
|
|
|
};
|
2015-12-09 19:41:55 -04:00
|
|
|
|
2015-11-27 10:09:02 -04:00
|
|
|
var x = parent.postMessage(JSON.stringify(dataToSend), "*");
|
|
|
|
|
if (x == undefined){
|
|
|
|
|
x = parent.parent.postMessage(JSON.stringify(dataToSend), "*");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}catch (err)
|
|
|
|
|
{
|
|
|
|
|
parent.location = parent.location;
|
|
|
|
|
}
|
|
|
|
|
</script>');
|
2016-06-30 12:58:50 -04:00
|
|
|
}
|
2015-11-18 14:56:53 -04:00
|
|
|
}
|
|
|
|
|
|
2015-02-10 12:13:32 -04:00
|
|
|
require_once 'classes/model/AppDelegation.php';
|
|
|
|
|
$delegation = new AppDelegation();
|
2016-12-22 12:24:27 -04:00
|
|
|
if ($delegation->alreadyRouted($_SESSION['APPLICATION'], $_SESSION['INDEX'])) {
|
|
|
|
|
if (array_key_exists('gmail', $_SESSION) && $_SESSION['gmail'] == 1) {
|
|
|
|
|
$mUrl = '../cases/cases_Open?APP_UID=' . $_SESSION['APPLICATION'] . '&DEL_INDEX=' . $_SESSION['INDEX'] . '&action=sent';
|
|
|
|
|
header('location:' . $mUrl);
|
|
|
|
|
die();
|
|
|
|
|
}
|
|
|
|
|
if (SYS_SKIN === "uxs") {
|
|
|
|
|
G::header('location: ../home/appList');
|
|
|
|
|
die();
|
|
|
|
|
} else {
|
|
|
|
|
die('<script type="text/javascript">'
|
2017-12-04 13:25:35 +00:00
|
|
|
. 'window.parent.location="casesListExtJs?action=todo";'
|
|
|
|
|
. '</script>');
|
2016-12-22 12:24:27 -04:00
|
|
|
}
|
2013-06-03 18:13:38 -04:00
|
|
|
}
|
2012-10-19 17:17:53 -04:00
|
|
|
/**
|
|
|
|
|
* cases_Step.php
|
|
|
|
|
*
|
|
|
|
|
* ProcessMaker Open Source Edition
|
|
|
|
|
* Copyright (C) 2004 - 2008 Colosa Inc.23
|
|
|
|
|
*
|
|
|
|
|
* This program is free software: you can redistribute it and/or modify
|
|
|
|
|
* it under the terms of the GNU Affero General Public License as
|
|
|
|
|
* published by the Free Software Foundation, either version 3 of the
|
|
|
|
|
* License, or (at your option) any later version.
|
|
|
|
|
*
|
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
* GNU Affero General Public License for more details.
|
|
|
|
|
*
|
|
|
|
|
* You should have received a copy of the GNU Affero General Public License
|
|
|
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
*
|
|
|
|
|
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
|
|
|
|
|
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/* Permissions */
|
2017-12-04 13:25:35 +00:00
|
|
|
switch ($RBAC->userCanAccess('PM_CASES')) {
|
|
|
|
|
case -2:
|
|
|
|
|
G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_SYSTEM', 'error', 'labels');
|
|
|
|
|
G::header('location: ../login/login');
|
2012-10-19 17:17:53 -04:00
|
|
|
die();
|
|
|
|
|
break;
|
2017-12-04 13:25:35 +00:00
|
|
|
case -1:
|
|
|
|
|
G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels');
|
|
|
|
|
G::header('location: ../login/login');
|
2012-10-19 17:17:53 -04:00
|
|
|
die();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
if (array_key_exists('gmail', $_GET) && $_GET['gmail'] == 1) {
|
|
|
|
|
$_SESSION['gmail'] = 1;
|
2015-11-18 14:56:53 -04:00
|
|
|
}
|
2012-10-19 17:17:53 -04:00
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
if ((int)$_SESSION['INDEX'] < 1) {
|
|
|
|
|
G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels');
|
|
|
|
|
G::header('location: ' . $_SERVER['HTTP_REFERER']);
|
2012-10-19 17:17:53 -04:00
|
|
|
die();
|
|
|
|
|
}
|
|
|
|
|
global $_DBArray;
|
2017-12-04 13:25:35 +00:00
|
|
|
if (!isset($_DBArray)) {
|
|
|
|
|
$_DBArray = [];
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* GET , POST & $_SESSION Vars */
|
2017-12-04 13:25:35 +00:00
|
|
|
if (isset($_GET['POSITION'])) {
|
|
|
|
|
$_SESSION['STEP_POSITION'] = (int)$_GET['POSITION'];
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
|
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
if (isset($_SESSION['CASES_REFRESH'])) {
|
|
|
|
|
unset($_SESSION['CASES_REFRESH']);
|
|
|
|
|
G::evalJScript("if(typeof parent != 'undefined' && parent.refreshCountFolders) parent.refreshCountFolders();");
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Menues */
|
|
|
|
|
$G_MAIN_MENU = 'processmaker';
|
|
|
|
|
$G_ID_MENU_SELECTED = 'CASES';
|
|
|
|
|
$G_SUB_MENU = 'caseOptions';
|
|
|
|
|
$G_ID_SUB_MENU_SELECTED = '_';
|
|
|
|
|
|
|
|
|
|
/* Prepare page before to show */
|
2017-12-04 13:25:35 +00:00
|
|
|
$oTemplatePower = new TemplatePower(PATH_TPL . 'cases/cases_Step.html');
|
2012-10-19 17:17:53 -04:00
|
|
|
$oTemplatePower->prepare();
|
|
|
|
|
$G_PUBLISH = new Publisher();
|
2017-12-04 13:25:35 +00:00
|
|
|
$oHeadPublisher = headPublisher::getSingleton();
|
|
|
|
|
$oHeadPublisher->addScriptCode('
|
2010-12-02 23:34:41 +00:00
|
|
|
var Cse = {};
|
|
|
|
|
Cse.panels = {};
|
|
|
|
|
var leimnud = new maborak();
|
|
|
|
|
leimnud.make();
|
|
|
|
|
leimnud.Package.Load("rpc,drag,drop,panel,app,validator,fx,dom,abbr",{Instance:leimnud,Type:"module"});
|
|
|
|
|
leimnud.exec(leimnud.fix.memoryLeak);
|
|
|
|
|
leimnud.event.add(window,"load",function(){
|
2017-12-04 13:25:35 +00:00
|
|
|
' . (isset($_SESSION['showCasesWindow']) ? 'try{' . $_SESSION['showCasesWindow'] . '}catch(e){}' : '') . '
|
2010-12-02 23:34:41 +00:00
|
|
|
});
|
2017-12-04 13:25:35 +00:00
|
|
|
');
|
|
|
|
|
$G_PUBLISH->AddContent('template', '', '', '', $oTemplatePower);
|
2012-10-19 17:17:53 -04:00
|
|
|
|
|
|
|
|
$oCase = new Cases();
|
2015-10-20 11:19:49 -04:00
|
|
|
$oStep = new Step();
|
2017-06-02 13:07:52 -04:00
|
|
|
$bmWebEntry = new \ProcessMaker\BusinessModel\WebEntry;
|
2012-10-19 17:17:53 -04:00
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
$Fields = $oCase->loadCase($_SESSION['APPLICATION']);
|
|
|
|
|
$Fields['APP_DATA'] = array_merge($Fields['APP_DATA'], G::getSystemConstants());
|
2012-10-19 17:17:53 -04:00
|
|
|
$sStatus = $Fields['APP_STATUS'];
|
|
|
|
|
|
|
|
|
|
$APP_NUMBER = $Fields['APP_NUMBER'];
|
|
|
|
|
$APP_TITLE = $Fields['TITLE'];
|
|
|
|
|
|
|
|
|
|
$oProcess = new Process();
|
2017-12-04 13:25:35 +00:00
|
|
|
$oProcessFieds = $oProcess->Load($_SESSION['PROCESS']);
|
2012-10-19 17:17:53 -04:00
|
|
|
|
2012-10-18 16:05:43 +00:00
|
|
|
#trigger debug routines...
|
2012-10-19 17:17:53 -04:00
|
|
|
|
|
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
if (isset($oProcessFieds['PRO_DEBUG']) && $oProcessFieds['PRO_DEBUG']) {
|
2012-10-19 17:17:53 -04:00
|
|
|
#here we must verify if is a debugg session
|
|
|
|
|
$_SESSION['TRIGGER_DEBUG']['ISSET'] = 1;
|
|
|
|
|
$_SESSION['PMDEBUGGER'] = true;
|
|
|
|
|
} else {
|
|
|
|
|
$_SESSION['TRIGGER_DEBUG']['ISSET'] = 0;
|
|
|
|
|
$_SESSION['PMDEBUGGER'] = false;
|
|
|
|
|
}
|
|
|
|
|
|
2012-10-18 16:05:43 +00:00
|
|
|
//cleaning debug variables
|
2015-03-16 14:44:38 -04:00
|
|
|
$flagExecuteBeforeTriggers = !isset($_GET["breakpoint"]);
|
|
|
|
|
|
|
|
|
|
if (isset($_GET["TYPE"]) && $_GET["TYPE"] == "OUTPUT_DOCUMENT" && isset($_GET["ACTION"]) && $_GET["ACTION"] != "GENERATE") {
|
|
|
|
|
$flagExecuteBeforeTriggers = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($flagExecuteBeforeTriggers) {
|
2017-12-04 13:25:35 +00:00
|
|
|
if (isset($_SESSION['TRIGGER_DEBUG']['info'])) {
|
|
|
|
|
unset($_SESSION['TRIGGER_DEBUG']['info']);
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
|
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
if (!isset($_SESSION['_NO_EXECUTE_TRIGGERS_'])) {
|
|
|
|
|
$_SESSION['TRIGGER_DEBUG']['ERRORS'] = [];
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
2017-12-04 13:25:35 +00:00
|
|
|
$_SESSION['TRIGGER_DEBUG']['DATA'] = [];
|
|
|
|
|
$_SESSION['TRIGGER_DEBUG']['TRIGGERS_NAMES'] = [];
|
|
|
|
|
$_SESSION['TRIGGER_DEBUG']['TRIGGERS_VALUES'] = [];
|
2016-07-19 14:26:51 -04:00
|
|
|
$_SESSION['TRIGGER_DEBUG']['TRIGGERS_EXECUTION_TIME'] = [];
|
2012-10-19 17:17:53 -04:00
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
$triggers = $oCase->loadTriggers($_SESSION['TASK'], $_GET['TYPE'], $_GET['UID'], 'BEFORE');
|
2012-10-19 17:17:53 -04:00
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
$_SESSION['TRIGGER_DEBUG']['NUM_TRIGGERS'] = count($triggers);
|
2014-02-12 16:08:10 -04:00
|
|
|
$_SESSION['TRIGGER_DEBUG']['TIME'] = G::toUpper(G::loadTranslation('ID_BEFORE'));
|
2012-10-19 17:17:53 -04:00
|
|
|
if ($_SESSION['TRIGGER_DEBUG']['NUM_TRIGGERS'] != 0) {
|
2017-04-10 10:06:36 -04:00
|
|
|
$_SESSION['TRIGGER_DEBUG']['TRIGGERS_NAMES'] = array_column($triggers, 'TRI_TITLE');
|
2012-10-19 17:17:53 -04:00
|
|
|
$_SESSION['TRIGGER_DEBUG']['TRIGGERS_VALUES'] = $triggers;
|
|
|
|
|
}
|
|
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
if (!isset($_SESSION['_NO_EXECUTE_TRIGGERS_'])) {
|
2012-10-18 16:05:43 +00:00
|
|
|
//Execute before triggers - Start
|
2017-12-04 13:25:35 +00:00
|
|
|
$Fields['APP_DATA'] = $oCase->ExecuteTriggers($_SESSION['TASK'], $_GET['TYPE'], $_GET['UID'], 'BEFORE', $Fields['APP_DATA']);
|
2012-10-18 16:05:43 +00:00
|
|
|
//Execute before triggers - End
|
2016-07-19 14:26:51 -04:00
|
|
|
|
|
|
|
|
$_SESSION['TRIGGER_DEBUG']['TRIGGERS_EXECUTION_TIME'] = $oCase->arrayTriggerExecutionTime;
|
2012-10-19 17:17:53 -04:00
|
|
|
} else {
|
2017-12-04 13:25:35 +00:00
|
|
|
unset($_SESSION['_NO_EXECUTE_TRIGGERS_']);
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2015-05-08 12:31:18 -04:00
|
|
|
$Fields["DEL_INDEX"] = $_SESSION["INDEX"];
|
|
|
|
|
$Fields["TAS_UID"] = $_SESSION["TASK"];
|
|
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
if (isset($_GET['breakpoint'])) {
|
2012-10-19 17:17:53 -04:00
|
|
|
$_POST['NextStep'] = $_SESSION['TRIGGER_DEBUG']['BREAKPAGE'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Here we throw the debug view
|
|
|
|
|
*/
|
2016-04-13 15:46:29 -04:00
|
|
|
$isIE = Bootstrap::isIE();
|
2015-11-26 20:11:58 -04:00
|
|
|
|
2016-03-29 08:58:24 -04:00
|
|
|
if (isset($_GET['breakpoint'])) {
|
2017-12-04 13:25:35 +00:00
|
|
|
$G_PUBLISH->AddContent('view', 'cases/showDebugFrameLoader');
|
|
|
|
|
$G_PUBLISH->AddContent('view', 'cases/showDebugFrameBreaker');
|
|
|
|
|
G::RenderPage('publish', 'blank');
|
2012-10-19 17:17:53 -04:00
|
|
|
exit();
|
|
|
|
|
}
|
2012-10-18 16:05:43 +00:00
|
|
|
#end trigger debug session.......
|
2012-10-19 17:17:53 -04:00
|
|
|
|
2012-10-18 16:05:43 +00:00
|
|
|
//Save data - Start
|
2013-07-03 09:48:46 -04:00
|
|
|
unset($Fields['APP_STATUS']);
|
|
|
|
|
unset($Fields['APP_PROC_STATUS']);
|
|
|
|
|
unset($Fields['APP_PROC_CODE']);
|
|
|
|
|
unset($Fields['APP_PIN']);
|
2014-11-10 15:40:24 -04:00
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
$Fields["USER_UID"] = $_SESSION["USER_LOGGED"];
|
2014-11-10 15:40:24 -04:00
|
|
|
$Fields["CURRENT_DYNAFORM"] = $_GET["UID"];
|
2017-12-04 13:25:35 +00:00
|
|
|
$Fields["OBJECT_TYPE"] = ($_GET["UID"] == "-1") ? "ASSIGN_TASK" : $_GET["TYPE"];
|
2014-11-10 15:40:24 -04:00
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
$oCase->updateCase($_SESSION['APPLICATION'], $Fields);
|
2012-10-18 16:05:43 +00:00
|
|
|
//Save data - End
|
2012-10-19 17:17:53 -04:00
|
|
|
|
2012-10-18 16:05:43 +00:00
|
|
|
//Obtain previous and next step - Start
|
2014-11-10 15:40:24 -04:00
|
|
|
try {
|
2012-10-19 17:17:53 -04:00
|
|
|
$oCase = new Cases();
|
2017-12-04 13:25:35 +00:00
|
|
|
$aNextStep = $oCase->getNextStep($_SESSION['PROCESS'], $_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['STEP_POSITION']);
|
|
|
|
|
$aPreviousStep = $oCase->getPreviousStep($_SESSION['PROCESS'], $_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['STEP_POSITION']);
|
2012-10-19 17:17:53 -04:00
|
|
|
} catch (Exception $e) {
|
2017-05-08 13:33:34 -04:00
|
|
|
throw $e;
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
2012-10-18 16:05:43 +00:00
|
|
|
//Obtain previous and next step - End
|
2012-10-19 17:17:53 -04:00
|
|
|
|
2013-05-14 13:53:12 -04:00
|
|
|
$aRequiredFields = array(
|
2017-12-04 13:25:35 +00:00
|
|
|
'APPLICATION' => $Fields['APP_DATA']['APPLICATION'],
|
|
|
|
|
'PROCESS' => $Fields['APP_DATA']['PROCESS'],
|
|
|
|
|
'TASK' => $Fields['APP_DATA']['TASK'],
|
|
|
|
|
'INDEX' => $Fields['APP_DATA']['INDEX'],
|
|
|
|
|
'TRIGGER_DEBUG' => isset($Fields['APP_DATA']['TRIGGER_DEBUG']) ? $Fields['APP_DATA']['TRIGGER_DEBUG'] : array()
|
2013-05-14 13:53:12 -04:00
|
|
|
);
|
2012-10-19 17:17:53 -04:00
|
|
|
|
2013-06-03 16:25:54 -04:00
|
|
|
$oHeadPublisher->addScriptCode('var __dynaformSVal__ = \'' . base64_encode(serialize($aRequiredFields)) . '\'; ');
|
2012-10-19 17:17:53 -04:00
|
|
|
try {
|
2012-10-18 16:05:43 +00:00
|
|
|
//Add content content step - Start
|
2017-12-04 13:25:35 +00:00
|
|
|
$oApp = ApplicationPeer::retrieveByPK($_SESSION['APPLICATION']);
|
2012-10-19 17:17:53 -04:00
|
|
|
$array['APP_NUMBER'] = $APP_NUMBER;
|
|
|
|
|
$sTitleCase = $oApp->getAppTitle();
|
|
|
|
|
$array['APP_TITLE'] = $sTitleCase;
|
2017-12-04 13:25:35 +00:00
|
|
|
$array['CASE'] = G::LoadTranslation('ID_CASE');
|
|
|
|
|
$array['TITLE'] = G::LoadTranslation('ID_TITLE');
|
2016-11-22 12:35:38 -04:00
|
|
|
$Fields['TITLE'] = $sTitleCase;
|
2012-10-19 17:17:53 -04:00
|
|
|
$noShowTitle = 0;
|
2017-12-04 13:25:35 +00:00
|
|
|
if (isset($oProcessFieds['PRO_SHOW_MESSAGE'])) {
|
2012-10-19 17:17:53 -04:00
|
|
|
$noShowTitle = $oProcessFieds['PRO_SHOW_MESSAGE'];
|
|
|
|
|
}
|
2017-06-02 13:07:52 -04:00
|
|
|
if ($bmWebEntry->isTaskAWebEntry($_SESSION['TASK'])) {
|
|
|
|
|
$noShowTitle = 1;
|
|
|
|
|
}
|
2012-10-19 17:17:53 -04:00
|
|
|
|
|
|
|
|
switch ($_GET['TYPE']) {
|
|
|
|
|
case 'DYNAFORM':
|
|
|
|
|
if ($noShowTitle == 0) {
|
2017-12-04 13:25:35 +00:00
|
|
|
$G_PUBLISH->AddContent('smarty', 'cases/cases_title', '', '', $array);
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
2017-12-04 13:25:35 +00:00
|
|
|
if (!$aPreviousStep) {
|
2012-10-19 17:17:53 -04:00
|
|
|
$Fields['APP_DATA']['__DYNAFORM_OPTIONS']['PREVIOUS_STEP_LABEL'] = '';
|
|
|
|
|
} else {
|
|
|
|
|
$Fields['APP_DATA']['__DYNAFORM_OPTIONS']['PREVIOUS_STEP'] = $aPreviousStep['PAGE'];
|
2017-12-04 13:25:35 +00:00
|
|
|
$Fields['APP_DATA']['__DYNAFORM_OPTIONS']['PREVIOUS_STEP_LABEL'] = G::loadTranslation("ID_PREVIOUS_STEP");
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
|
|
|
|
$Fields['APP_DATA']['__DYNAFORM_OPTIONS']['NEXT_STEP'] = $aNextStep['PAGE'];
|
2017-12-04 13:25:35 +00:00
|
|
|
$Fields['APP_DATA']['__DYNAFORM_OPTIONS']['NEXT_STEP_LABEL'] = G::loadTranslation('ID_NEXT_STEP');
|
2012-10-19 17:17:53 -04:00
|
|
|
$Fields['APP_DATA']['__DYNAFORM_OPTIONS']['PHPSESSID'] = @session_id();
|
|
|
|
|
$Fields['APP_DATA']['__DYNAFORM_OPTIONS']['DYNUIDPRINT'] = $_GET['UID'];
|
|
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
$oHeadPublisher = headPublisher::getSingleton();
|
2013-06-12 16:14:25 +00:00
|
|
|
|
2013-06-13 17:21:41 +00:00
|
|
|
if (!isset($_SESSION["PM_RUN_OUTSIDE_MAIN_APP"])) {
|
2017-12-04 13:25:35 +00:00
|
|
|
$oHeadPublisher->addScriptCode("
|
2013-06-12 16:14:25 +00:00
|
|
|
if (typeof parent != 'undefined') {
|
|
|
|
|
if (parent.setNode) {
|
|
|
|
|
parent.setNode('" . $_GET['UID'] . "');
|
|
|
|
|
}
|
2017-12-04 13:25:35 +00:00
|
|
|
}");
|
2013-06-12 16:14:25 +00:00
|
|
|
}
|
2012-10-19 17:17:53 -04:00
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
$oStep = $oStep->loadByProcessTaskPosition($_SESSION['PROCESS'], $_SESSION['TASK'], $_GET['POSITION']);
|
2012-10-19 17:17:53 -04:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Description: this was added for the additional database connections
|
|
|
|
|
*/
|
2017-12-04 13:25:35 +00:00
|
|
|
$oDbConnections = new DbConnections($_SESSION['PROCESS']);
|
2012-10-19 17:17:53 -04:00
|
|
|
$oDbConnections->loadAdditionalConnections();
|
|
|
|
|
$_SESSION['CURRENT_DYN_UID'] = $_GET['UID'];
|
|
|
|
|
|
2015-03-12 09:59:19 -04:00
|
|
|
$FieldsPmDynaform = $Fields;
|
|
|
|
|
$FieldsPmDynaform["PM_RUN_OUTSIDE_MAIN_APP"] = (!isset($_SESSION["PM_RUN_OUTSIDE_MAIN_APP"])) ? "true" : "false";
|
|
|
|
|
$FieldsPmDynaform["STEP_MODE"] = $oStep->getStepMode();
|
|
|
|
|
$FieldsPmDynaform["PRO_SHOW_MESSAGE"] = $noShowTitle;
|
|
|
|
|
$FieldsPmDynaform["TRIGGER_DEBUG"] = $_SESSION['TRIGGER_DEBUG']['ISSET'];
|
2017-11-28 13:40:30 -04:00
|
|
|
$a = new PmDynaform(DateTime::convertUtcToTimeZone($FieldsPmDynaform));
|
2014-08-01 13:06:51 -04:00
|
|
|
if ($a->isResponsive()) {
|
2015-03-12 09:59:19 -04:00
|
|
|
$a->printEdit();
|
2014-07-17 15:51:06 -04:00
|
|
|
} else {
|
2017-12-04 13:25:35 +00:00
|
|
|
if(array_key_exists('gmail',$_GET) && $_GET['gmail'] == 1){
|
|
|
|
|
$G_PUBLISH->AddContent('dynaform', 'xmlform', $_SESSION['PROCESS'] . '/' . $_GET['UID'], '', DateTime::convertUtcToTimeZone($Fields['APP_DATA']), 'cases_SaveData?UID=' . $_GET['UID'] . '&APP_UID=' . $_SESSION['APPLICATION'] . '&gmail=1', '', (strtolower($oStep->getStepMode()) != 'edit' ? strtolower($oStep->getStepMode()) : ''));
|
|
|
|
|
} else {
|
|
|
|
|
$G_PUBLISH->AddContent('dynaform', 'xmlform', $_SESSION['PROCESS'] . '/' . $_GET['UID'], '', DateTime::convertUtcToTimeZone($Fields['APP_DATA']), 'cases_SaveData?UID=' . $_GET['UID'] . '&APP_UID=' . $_SESSION['APPLICATION'], '', (strtolower($oStep->getStepMode()) != 'edit' ? strtolower($oStep->getStepMode()) : ''));
|
|
|
|
|
}
|
2014-07-17 15:51:06 -04:00
|
|
|
}
|
2012-10-19 17:17:53 -04:00
|
|
|
break;
|
2014-11-10 15:40:24 -04:00
|
|
|
case 'INPUT_DOCUMENT':
|
2012-10-19 17:17:53 -04:00
|
|
|
if ($noShowTitle == 0) {
|
2017-12-04 13:25:35 +00:00
|
|
|
$G_PUBLISH->AddContent('smarty', 'cases/cases_title', '', '', $array);
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
|
|
|
|
$oInputDocument = new InputDocument();
|
2017-12-04 13:25:35 +00:00
|
|
|
$Fields = $oInputDocument->load($_GET['UID']);
|
|
|
|
|
if (!$aPreviousStep) {
|
2012-10-19 17:17:53 -04:00
|
|
|
$Fields['__DYNAFORM_OPTIONS']['PREVIOUS_STEP_LABEL'] = '';
|
|
|
|
|
$Fields['PREVIOUS_STEP_LABEL'] = '';
|
|
|
|
|
} else {
|
|
|
|
|
$Fields['__DYNAFORM_OPTIONS']['PREVIOUS_STEP'] = $aPreviousStep['PAGE'];
|
2017-12-04 13:25:35 +00:00
|
|
|
$Fields['__DYNAFORM_OPTIONS']['PREVIOUS_STEP_LABEL'] = G::loadTranslation("ID_PREVIOUS_STEP");
|
2012-10-19 17:17:53 -04:00
|
|
|
|
|
|
|
|
$Fields['PREVIOUS_STEP'] = $aPreviousStep['PAGE'];
|
2017-12-04 13:25:35 +00:00
|
|
|
$Fields['PREVIOUS_STEP_LABEL'] = G::loadTranslation("ID_PREVIOUS_STEP");
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
|
|
|
|
$Fields['NEXT_STEP'] = $aNextStep['PAGE'];
|
2017-12-04 13:25:35 +00:00
|
|
|
$Fields['NEXT_STEP_LABEL'] = G::loadTranslation("ID_NEXT_STEP");
|
2012-10-19 17:17:53 -04:00
|
|
|
switch ($_GET['ACTION']) {
|
2014-11-10 15:40:24 -04:00
|
|
|
case 'ATTACH':
|
2012-10-19 17:17:53 -04:00
|
|
|
switch ($Fields['INP_DOC_FORM_NEEDED']) {
|
|
|
|
|
case 'REAL':
|
2017-12-04 13:25:35 +00:00
|
|
|
$Fields['TYPE_LABEL'] = G::LoadTranslation('ID_NEW');
|
2012-10-19 17:17:53 -04:00
|
|
|
$sXmlForm = 'cases/cases_AttachInputDocument2';
|
|
|
|
|
break;
|
2014-11-10 15:40:24 -04:00
|
|
|
case 'VIRTUAL':
|
2017-12-04 13:25:35 +00:00
|
|
|
$Fields['TYPE_LABEL'] = G::LoadTranslation('ID_ATTACH');
|
2012-10-19 17:17:53 -04:00
|
|
|
$sXmlForm = 'cases/cases_AttachInputDocument1';
|
|
|
|
|
break;
|
|
|
|
|
case 'VREAL':
|
2017-12-04 13:25:35 +00:00
|
|
|
$Fields['TYPE_LABEL'] = G::LoadTranslation('ID_ATTACH');
|
2012-10-19 17:17:53 -04:00
|
|
|
$sXmlForm = 'cases/cases_AttachInputDocument3';
|
|
|
|
|
break;
|
|
|
|
|
}
|
2017-12-04 13:25:35 +00:00
|
|
|
$Fields['MESSAGE1'] = G::LoadTranslation('ID_PLEASE_ENTER_COMMENTS');
|
|
|
|
|
$Fields['MESSAGE2'] = G::LoadTranslation('ID_PLEASE_SELECT_FILE');
|
2012-10-18 16:05:43 +00:00
|
|
|
//START: If there is a Break Step registered from Plugin Similar as a Trigger debug
|
2017-08-01 12:16:06 -04:00
|
|
|
$oPluginRegistry = PluginRegistry::loadSingleton();
|
2017-12-04 13:25:35 +00:00
|
|
|
if ($oPluginRegistry->existsTrigger(PM_UPLOAD_DOCUMENT_BEFORE)) {
|
2012-10-19 17:17:53 -04:00
|
|
|
//If a Plugin has registered a Break Page Evaluator
|
2017-12-04 13:25:35 +00:00
|
|
|
$oPluginRegistry->executeTriggers(PM_UPLOAD_DOCUMENT_BEFORE, array('USR_UID' => $_SESSION['USER_LOGGED']));
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
2012-10-18 16:05:43 +00:00
|
|
|
//END: If there is a Break Step registered from Plugin
|
2017-12-04 13:25:35 +00:00
|
|
|
$G_PUBLISH->AddContent('propeltable', 'cases/paged-table-inputDocuments', 'cases/cases_InputdocsList', $oCase->getInputDocumentsCriteria($_SESSION['APPLICATION'], $_SESSION['INDEX'], $_GET['UID']), array_merge(array('DOC_UID' => $_GET['UID']
|
|
|
|
|
), $Fields)); //$aFields
|
2012-10-19 17:17:53 -04:00
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
$oHeadPublisher = headPublisher::getSingleton();
|
2017-03-30 11:44:58 -04:00
|
|
|
$titleDocument = "<h3>" . htmlspecialchars($Fields['INP_DOC_TITLE'], ENT_QUOTES) . "<br><small>" . G::LoadTranslation('ID_INPUT_DOCUMENT') . "</small></h3>";
|
2014-11-10 15:40:24 -04:00
|
|
|
if ($Fields['INP_DOC_DESCRIPTION']) {
|
2017-12-04 13:25:35 +00:00
|
|
|
$titleDocument .= " " . str_replace("\n", "", str_replace("'", "\'", nl2br(html_entity_decode($Fields['INP_DOC_DESCRIPTION'], ENT_COMPAT, "UTF-8")))) . "";
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
|
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
$oHeadPublisher->addScriptCode("documentName='{$titleDocument}';");
|
2012-10-19 17:17:53 -04:00
|
|
|
break;
|
|
|
|
|
case 'VIEW':
|
|
|
|
|
$oAppDocument = new AppDocument();
|
2017-12-04 13:25:35 +00:00
|
|
|
$oAppDocument->Fields = $oAppDocument->load($_GET['DOC'], $_GET['VERSION']);
|
2012-10-19 17:17:53 -04:00
|
|
|
$Fields['POSITION'] = $_SESSION['STEP_POSITION'];
|
|
|
|
|
$oUser = new Users();
|
2017-12-04 13:25:35 +00:00
|
|
|
$aUser = $oUser->load($oAppDocument->Fields['USR_UID']);
|
2012-10-19 17:17:53 -04:00
|
|
|
$Fields['CREATOR'] = $aUser['USR_FIRSTNAME'] . ' ' . $aUser['USR_LASTNAME'];
|
|
|
|
|
switch ($Fields['INP_DOC_FORM_NEEDED']) {
|
|
|
|
|
case 'REAL':
|
|
|
|
|
$sXmlForm = 'cases/cases_ViewInputDocument2';
|
|
|
|
|
break;
|
|
|
|
|
case 'VIRTUAL':
|
|
|
|
|
$sXmlForm = 'cases/cases_ViewInputDocument1';
|
|
|
|
|
break;
|
|
|
|
|
case 'VREAL':
|
|
|
|
|
$sXmlForm = 'cases/cases_ViewInputDocument3';
|
|
|
|
|
break;
|
|
|
|
|
}
|
2017-12-04 13:25:35 +00:00
|
|
|
$oAppDocument->Fields['VIEW'] = G::LoadTranslation('ID_OPEN');
|
2012-10-19 17:17:53 -04:00
|
|
|
$oAppDocument->Fields['FILE'] = 'cases_ShowDocument?a=' . $_GET['DOC'] . '&r=' . rand();
|
2017-12-04 13:25:35 +00:00
|
|
|
$G_PUBLISH->AddContent('xmlform', 'xmlform', $sXmlForm, '', G::array_merges($Fields, $oAppDocument->Fields), '');
|
2012-10-19 17:17:53 -04:00
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 'OUTPUT_DOCUMENT':
|
|
|
|
|
$oOutputDocument = new OutputDocument();
|
2017-12-04 13:25:35 +00:00
|
|
|
$aOD = $oOutputDocument->load($_GET['UID']);
|
|
|
|
|
if (!$aPreviousStep) {
|
2012-10-19 17:17:53 -04:00
|
|
|
$aOD['__DYNAFORM_OPTIONS']['PREVIOUS_STEP_LABEL'] = '';
|
|
|
|
|
} else {
|
|
|
|
|
$aOD['__DYNAFORM_OPTIONS']['PREVIOUS_STEP'] = $aPreviousStep['PAGE'];
|
2017-12-04 13:25:35 +00:00
|
|
|
$aOD['__DYNAFORM_OPTIONS']['PREVIOUS_STEP_LABEL'] = G::loadTranslation("ID_PREVIOUS_STEP");
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
|
|
|
|
$aOD['__DYNAFORM_OPTIONS']['NEXT_STEP'] = $aNextStep['PAGE'];
|
2017-12-04 13:25:35 +00:00
|
|
|
$aOD['__DYNAFORM_OPTIONS']['NEXT_STEP_LABEL'] = G::loadTranslation("ID_NEXT_STEP");
|
2012-10-19 17:17:53 -04:00
|
|
|
switch ($_GET['ACTION']) {
|
|
|
|
|
case 'GENERATE':
|
2012-10-18 16:05:43 +00:00
|
|
|
//START: If there is a Break Step registered from Plugin Similar as a Trigger debug
|
2017-08-01 12:16:06 -04:00
|
|
|
$oPluginRegistry = PluginRegistry::loadSingleton();
|
2017-12-04 13:25:35 +00:00
|
|
|
if ($oPluginRegistry->existsTrigger(PM_UPLOAD_DOCUMENT_BEFORE)) {
|
2012-10-19 17:17:53 -04:00
|
|
|
//If a Plugin has registered a Break Page Evaluator
|
2017-12-04 13:25:35 +00:00
|
|
|
$oPluginRegistry->executeTriggers(PM_UPLOAD_DOCUMENT_BEFORE, array('USR_UID' => $_SESSION['USER_LOGGED']));
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
2012-10-18 16:05:43 +00:00
|
|
|
//END: If there is a Break Step registered from Plugin
|
2012-10-19 17:17:53 -04:00
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
$sFilenameOriginal = $sFilename = preg_replace('[^A-Za-z0-9_]', '_', G::replaceDataField($aOD['OUT_DOC_FILENAME'], $Fields['APP_DATA']));
|
2012-10-19 17:17:53 -04:00
|
|
|
|
2012-10-18 16:05:43 +00:00
|
|
|
//Get the Custom Folder ID (create if necessary)
|
2012-10-19 17:17:53 -04:00
|
|
|
$oFolder = new AppFolder();
|
2017-12-04 13:25:35 +00:00
|
|
|
$folderId = $oFolder->createFromPath($aOD['OUT_DOC_DESTINATION_PATH']);
|
2012-10-19 17:17:53 -04:00
|
|
|
|
2012-10-18 16:05:43 +00:00
|
|
|
//Tags
|
2017-12-04 13:25:35 +00:00
|
|
|
$fileTags = $oFolder->parseTags($aOD['OUT_DOC_TAGS']);
|
2012-10-19 17:17:53 -04:00
|
|
|
|
2012-10-18 16:05:43 +00:00
|
|
|
//Get last Document Version and apply versioning if is enabled
|
2012-10-19 17:17:53 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
$oAppDocument = new AppDocument();
|
2017-12-04 13:25:35 +00:00
|
|
|
$lastDocVersion = $oAppDocument->getLastDocVersion($_GET['UID'], $_SESSION['APPLICATION']);
|
|
|
|
|
|
|
|
|
|
$oCriteria = new Criteria('workflow');
|
|
|
|
|
$oCriteria->add(AppDocumentPeer::APP_UID, $_SESSION['APPLICATION']);
|
|
|
|
|
$oCriteria->add(AppDocumentPeer::DOC_UID, $_GET['UID']);
|
|
|
|
|
$oCriteria->add(AppDocumentPeer::DOC_VERSION, $lastDocVersion);
|
|
|
|
|
$oCriteria->add(AppDocumentPeer::APP_DOC_TYPE, 'OUTPUT');
|
|
|
|
|
$oDataset = AppDocumentPeer::doSelectRS($oCriteria);
|
|
|
|
|
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
2012-10-19 17:17:53 -04:00
|
|
|
$oDataset->next();
|
|
|
|
|
if (($aOD['OUT_DOC_VERSIONING']) && ($lastDocVersion != 0)) {
|
|
|
|
|
//Create new Version of current output
|
2017-12-04 13:25:35 +00:00
|
|
|
$lastDocVersion++;
|
2012-10-19 17:17:53 -04:00
|
|
|
if ($aRow = $oDataset->getRow()) {
|
2017-12-04 13:25:35 +00:00
|
|
|
$aFields = array('APP_DOC_UID' => $aRow['APP_DOC_UID'], 'APP_UID' => $_SESSION['APPLICATION'], 'DEL_INDEX' => $_SESSION['INDEX'], 'DOC_UID' => $_GET['UID'], 'DOC_VERSION' => $lastDocVersion + 1, 'USR_UID' => $_SESSION['USER_LOGGED'], 'APP_DOC_TYPE' => 'OUTPUT', 'APP_DOC_CREATE_DATE' => date('Y-m-d H:i:s'), 'APP_DOC_FILENAME' => $sFilename, 'FOLDER_UID' => $folderId, 'APP_DOC_TAGS' => $fileTags
|
2012-10-19 17:17:53 -04:00
|
|
|
);
|
|
|
|
|
$oAppDocument = new AppDocument();
|
2017-12-04 13:25:35 +00:00
|
|
|
$oAppDocument->create($aFields);
|
2012-10-19 17:17:53 -04:00
|
|
|
$sDocUID = $aRow['APP_DOC_UID'];
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
//No versioning so Update a current Output or Create new if no exist
|
|
|
|
|
if ($aRow = $oDataset->getRow()) {
|
|
|
|
|
//Update
|
2017-12-04 13:25:35 +00:00
|
|
|
$aFields = array('APP_DOC_UID' => $aRow['APP_DOC_UID'], 'APP_UID' => $_SESSION['APPLICATION'], 'DEL_INDEX' => $_SESSION['INDEX'], 'DOC_UID' => $_GET['UID'], 'DOC_VERSION' => $lastDocVersion, 'USR_UID' => $_SESSION['USER_LOGGED'], 'APP_DOC_TYPE' => 'OUTPUT', 'APP_DOC_CREATE_DATE' => date('Y-m-d H:i:s'), 'APP_DOC_FILENAME' => $sFilename, 'FOLDER_UID' => $folderId, 'APP_DOC_TAGS' => $fileTags);
|
2012-10-19 17:17:53 -04:00
|
|
|
$oAppDocument = new AppDocument();
|
2017-12-04 13:25:35 +00:00
|
|
|
$oAppDocument->update($aFields);
|
2012-10-19 17:17:53 -04:00
|
|
|
$sDocUID = $aRow['APP_DOC_UID'];
|
|
|
|
|
} else {
|
|
|
|
|
//create
|
|
|
|
|
if ($lastDocVersion == 0) {
|
2017-12-04 13:25:35 +00:00
|
|
|
$lastDocVersion++;
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
2017-12-04 13:25:35 +00:00
|
|
|
$aFields = array('APP_UID' => $_SESSION['APPLICATION'], 'DEL_INDEX' => $_SESSION['INDEX'], 'DOC_UID' => $_GET['UID'], 'DOC_VERSION' => $lastDocVersion, 'USR_UID' => $_SESSION['USER_LOGGED'], 'APP_DOC_TYPE' => 'OUTPUT', 'APP_DOC_CREATE_DATE' => date('Y-m-d H:i:s'), 'APP_DOC_FILENAME' => $sFilename, 'FOLDER_UID' => $folderId, 'APP_DOC_TAGS' => $fileTags);
|
2012-10-19 17:17:53 -04:00
|
|
|
$oAppDocument = new AppDocument();
|
2017-12-04 13:25:35 +00:00
|
|
|
$aFields['APP_DOC_UID'] = $sDocUID = $oAppDocument->create($aFields);
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$sFilename = $aFields['APP_DOC_UID'] . "_" . $lastDocVersion;
|
|
|
|
|
|
2013-04-29 16:48:29 -04:00
|
|
|
$pathOutput = PATH_DOCUMENT . G::getPathFromUID($_SESSION['APPLICATION']) . PATH_SEP . 'outdocs' . PATH_SEP;
|
2017-12-04 13:25:35 +00:00
|
|
|
G::mk_dir($pathOutput);
|
2012-10-19 17:17:53 -04:00
|
|
|
switch ($aOD['OUT_DOC_TYPE']) {
|
|
|
|
|
case 'HTML':
|
|
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
$aProperties = [];
|
2012-10-19 17:17:53 -04:00
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
if (!isset($aOD['OUT_DOC_MEDIA'])) {
|
2012-10-19 17:17:53 -04:00
|
|
|
$aOD['OUT_DOC_MEDIA'] = 'Letter';
|
|
|
|
|
}
|
2017-12-04 13:25:35 +00:00
|
|
|
if (!isset($aOD['OUT_DOC_LEFT_MARGIN'])) {
|
2012-10-19 17:17:53 -04:00
|
|
|
$aOD['OUT_DOC_LEFT_MARGIN'] = '15';
|
|
|
|
|
}
|
2017-12-04 13:25:35 +00:00
|
|
|
if (!isset($aOD['OUT_DOC_RIGHT_MARGIN'])) {
|
2012-10-19 17:17:53 -04:00
|
|
|
$aOD['OUT_DOC_RIGHT_MARGIN'] = '15';
|
|
|
|
|
}
|
2017-12-04 13:25:35 +00:00
|
|
|
if (!isset($aOD['OUT_DOC_TOP_MARGIN'])) {
|
2012-10-19 17:17:53 -04:00
|
|
|
$aOD['OUT_DOC_TOP_MARGIN'] = '15';
|
|
|
|
|
}
|
2017-12-04 13:25:35 +00:00
|
|
|
if (!isset($aOD['OUT_DOC_BOTTOM_MARGIN'])) {
|
2012-10-19 17:17:53 -04:00
|
|
|
$aOD['OUT_DOC_BOTTOM_MARGIN'] = '15';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$aProperties['media'] = $aOD['OUT_DOC_MEDIA'];
|
2017-12-04 13:25:35 +00:00
|
|
|
$aProperties['margins'] = array('left' => $aOD['OUT_DOC_LEFT_MARGIN'], 'right' => $aOD['OUT_DOC_RIGHT_MARGIN'], 'top' => $aOD['OUT_DOC_TOP_MARGIN'], 'bottom' => $aOD['OUT_DOC_BOTTOM_MARGIN']);
|
2012-10-19 17:17:53 -04:00
|
|
|
if ($aOD['OUT_DOC_PDF_SECURITY_ENABLED'] == '1') {
|
2017-12-04 13:25:35 +00:00
|
|
|
$aProperties['pdfSecurity'] = array('openPassword' => $aOD['OUT_DOC_PDF_SECURITY_OPEN_PASSWORD'], 'ownerPassword' => $aOD['OUT_DOC_PDF_SECURITY_OWNER_PASSWORD'], 'permissions' => $aOD['OUT_DOC_PDF_SECURITY_PERMISSIONS']);
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
2012-11-09 16:40:48 -04:00
|
|
|
if (isset($aOD['OUT_DOC_REPORT_GENERATOR'])) {
|
|
|
|
|
$aProperties['report_generator'] = $aOD['OUT_DOC_REPORT_GENERATOR'];
|
|
|
|
|
}
|
2017-12-04 13:25:35 +00:00
|
|
|
$oOutputDocument->generate($_GET['UID'], $Fields['APP_DATA'], $pathOutput, $sFilename, $aOD['OUT_DOC_TEMPLATE'], (boolean)$aOD['OUT_DOC_LANDSCAPE'], $aOD['OUT_DOC_GENERATE'], $aProperties);
|
2012-10-19 17:17:53 -04:00
|
|
|
break;
|
|
|
|
|
case 'JRXML':
|
2012-10-18 16:05:43 +00:00
|
|
|
//creating the xml with the application data;
|
2012-10-19 17:17:53 -04:00
|
|
|
$xmlData = "<dynaform>\n";
|
|
|
|
|
foreach ($Fields['APP_DATA'] as $key => $val) {
|
|
|
|
|
$xmlData .= " <$key>$val</$key>\n";
|
|
|
|
|
}
|
|
|
|
|
$xmlData .= "</dynaform>\n";
|
2017-12-04 13:25:35 +00:00
|
|
|
$iSize = file_put_contents($javaOutput . 'addressBook.xml', $xmlData);
|
2012-10-19 17:17:53 -04:00
|
|
|
|
|
|
|
|
$JBPM = new JavaBridgePM();
|
|
|
|
|
$JBPM->checkJavaExtension();
|
|
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
$util = new Java("com.processmaker.util.pmutils");
|
|
|
|
|
$util->setInputPath($javaInput);
|
|
|
|
|
$util->setOutputPath($javaOutput);
|
2015-05-08 12:31:18 -04:00
|
|
|
|
2017-02-15 16:26:02 +00:00
|
|
|
|
2015-03-26 17:41:41 -04:00
|
|
|
$filter = new InputFilter();
|
2012-10-19 17:17:53 -04:00
|
|
|
|
2015-03-26 17:41:41 -04:00
|
|
|
$locationFrom = PATH_DYNAFORM . $aOD['PRO_UID'] . PATH_SEP . $aOD['OUT_DOC_UID'] . '.jrxml';
|
2015-03-27 12:36:24 -04:00
|
|
|
$locationFrom = $filter->validateInput($locationFrom, "path");
|
2017-12-04 13:25:35 +00:00
|
|
|
copy($locationFrom, $javaInput . $aOD['OUT_DOC_UID'] . '.jrxml');
|
2012-10-19 17:17:53 -04:00
|
|
|
|
|
|
|
|
$outputFile = $javaOutput . $sFilename . '.pdf';
|
2017-12-04 13:25:35 +00:00
|
|
|
print $util->jrxml2pdf($aOD['OUT_DOC_UID'] . '.jrxml', basename($outputFile));
|
2012-10-19 17:17:53 -04:00
|
|
|
|
2015-03-27 12:36:24 -04:00
|
|
|
$outputFile = $filter->validateInput($outputFile, "path");
|
2017-12-04 13:25:35 +00:00
|
|
|
copy($outputFile, $pathOutput . $sFilename . '.pdf');
|
2012-10-19 17:17:53 -04:00
|
|
|
break;
|
|
|
|
|
case 'ACROFORM':
|
2012-10-18 16:05:43 +00:00
|
|
|
//creating the xml with the application data;
|
2012-10-19 17:17:53 -04:00
|
|
|
$xmlData = "<dynaform>\n";
|
|
|
|
|
foreach ($Fields['APP_DATA'] as $key => $val) {
|
|
|
|
|
$xmlData .= " <$key>$val</$key>\n";
|
|
|
|
|
}
|
|
|
|
|
$xmlData .= "</dynaform>\n";
|
|
|
|
|
|
|
|
|
|
$JBPM = new JavaBridgePM();
|
|
|
|
|
$JBPM->checkJavaExtension();
|
|
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
$util = new Java("com.processmaker.util.pmutils");
|
|
|
|
|
$util->setInputPath($javaInput);
|
|
|
|
|
$util->setOutputPath($javaOutput);
|
2017-02-15 16:26:02 +00:00
|
|
|
|
2015-03-26 17:41:41 -04:00
|
|
|
$filter = new InputFilter();
|
2015-05-08 12:31:18 -04:00
|
|
|
|
2015-03-26 17:41:41 -04:00
|
|
|
$locationFrom = PATH_DYNAFORM . $aOD['PRO_UID'] . PATH_SEP . $aOD['OUT_DOC_UID'] . '.pdf';
|
2015-03-27 12:36:24 -04:00
|
|
|
$locationFrom = $filter->validateInput($locationFrom, "path");
|
2017-12-04 13:25:35 +00:00
|
|
|
copy($locationFrom, $javaInput . $aOD['OUT_DOC_UID'] . '.pdf');
|
2012-10-19 17:17:53 -04:00
|
|
|
|
|
|
|
|
$outputFile = $javaOutput . $sFilename . '.pdf';
|
2017-12-04 13:25:35 +00:00
|
|
|
print $util->writeVarsToAcroFields($aOD['OUT_DOC_UID'] . '.pdf', $xmlData);
|
2015-05-08 12:31:18 -04:00
|
|
|
|
2015-03-26 17:41:41 -04:00
|
|
|
$locationFrom = $javaOutput . $aOD['OUT_DOC_UID'] . '.pdf';
|
2015-03-27 12:36:24 -04:00
|
|
|
$locationFrom = $filter->validateInput($locationFrom, "path");
|
2017-12-04 13:25:35 +00:00
|
|
|
copy($locationFrom, $pathOutput . $sFilename . '.pdf');
|
2012-10-19 17:17:53 -04:00
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
default:
|
2017-12-04 13:25:35 +00:00
|
|
|
throw (new Exception('invalid output document'));
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
|
|
|
|
|
2012-10-18 16:05:43 +00:00
|
|
|
//Execute after triggers - Start
|
2017-12-04 13:25:35 +00:00
|
|
|
$Fields['APP_DATA'] = $oCase->ExecuteTriggers($_SESSION['TASK'], 'OUTPUT_DOCUMENT', $_GET['UID'], 'AFTER', $Fields['APP_DATA']);
|
2012-10-19 17:17:53 -04:00
|
|
|
$Fields['DEL_INDEX'] = $_SESSION['INDEX'];
|
|
|
|
|
$Fields['TAS_UID'] = $_SESSION['TASK'];
|
2012-10-18 16:05:43 +00:00
|
|
|
//Execute after triggers - End
|
2012-10-19 17:17:53 -04:00
|
|
|
|
2016-07-19 14:26:51 -04:00
|
|
|
$_SESSION['TRIGGER_DEBUG']['TRIGGERS_EXECUTION_TIME'] = $oCase->arrayTriggerExecutionTime;
|
|
|
|
|
|
2012-10-18 16:05:43 +00:00
|
|
|
//Save data - Start
|
2013-07-03 09:48:46 -04:00
|
|
|
unset($Fields['APP_STATUS']);
|
|
|
|
|
unset($Fields['APP_PROC_STATUS']);
|
|
|
|
|
unset($Fields['APP_PROC_CODE']);
|
|
|
|
|
unset($Fields['APP_PIN']);
|
2017-12-04 13:25:35 +00:00
|
|
|
$oCase->updateCase($_SESSION['APPLICATION'], $Fields);
|
2012-10-18 16:05:43 +00:00
|
|
|
//Save data - End
|
2012-10-19 17:17:53 -04:00
|
|
|
|
2012-10-18 16:05:43 +00:00
|
|
|
//Plugin Hook PM_UPLOAD_DOCUMENT for upload document
|
2017-08-01 12:16:06 -04:00
|
|
|
$oPluginRegistry = PluginRegistry::loadSingleton();
|
2017-12-04 13:25:35 +00:00
|
|
|
if ($oPluginRegistry->existsTrigger(PM_UPLOAD_DOCUMENT) && class_exists('uploadDocumentData')) {
|
|
|
|
|
$triggerDetail = $oPluginRegistry->getTriggerInfo(PM_UPLOAD_DOCUMENT);
|
2012-10-19 17:17:53 -04:00
|
|
|
|
2013-04-29 16:48:29 -04:00
|
|
|
$sPathName = PATH_DOCUMENT . G::getPathFromUID($_SESSION['APPLICATION']) . PATH_SEP;
|
2012-10-19 17:17:53 -04:00
|
|
|
|
|
|
|
|
$oData['APP_UID'] = $_SESSION['APPLICATION'];
|
|
|
|
|
$oData['ATTACHMENT_FOLDER'] = true;
|
|
|
|
|
switch ($aOD['OUT_DOC_GENERATE']) {
|
|
|
|
|
case "BOTH":
|
2017-12-04 13:25:35 +00:00
|
|
|
$documentData = new uploadDocumentData($_SESSION['APPLICATION'], $_SESSION['USER_LOGGED'], $pathOutput . $sFilename . '.pdf', $sFilenameOriginal . '.pdf', $sDocUID, $oAppDocument->getDocVersion());
|
2012-10-19 17:17:53 -04:00
|
|
|
|
|
|
|
|
$documentData->sFileType = "PDF";
|
|
|
|
|
$documentData->bUseOutputFolder = true;
|
2017-12-04 13:25:35 +00:00
|
|
|
$uploadReturn = $oPluginRegistry->executeTriggers(PM_UPLOAD_DOCUMENT, $documentData);
|
2012-10-19 17:17:53 -04:00
|
|
|
if ($uploadReturn) {
|
|
|
|
|
//Only delete if the file was saved correctly
|
2017-08-01 12:16:06 -04:00
|
|
|
$aFields['APP_DOC_PLUGIN'] = $triggerDetail->getNamespace();
|
2017-12-04 13:25:35 +00:00
|
|
|
unlink($pathOutput . $sFilename . '.pdf');
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
|
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
$documentData = new uploadDocumentData($_SESSION['APPLICATION'], $_SESSION['USER_LOGGED'], $pathOutput . $sFilename . '.doc', $sFilenameOriginal . '.doc', $sDocUID, $oAppDocument->getDocVersion());
|
2012-10-19 17:17:53 -04:00
|
|
|
|
|
|
|
|
$documentData->sFileType = "DOC";
|
|
|
|
|
$documentData->bUseOutputFolder = true;
|
2017-12-04 13:25:35 +00:00
|
|
|
$uploadReturn = $oPluginRegistry->executeTriggers(PM_UPLOAD_DOCUMENT, $documentData);
|
2012-10-19 17:17:53 -04:00
|
|
|
if ($uploadReturn) {
|
|
|
|
|
//Only delete if the file was saved correctly
|
2017-12-04 13:25:35 +00:00
|
|
|
unlink($pathOutput . $sFilename . '.doc');
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case "PDF":
|
2017-12-04 13:25:35 +00:00
|
|
|
$documentData = new uploadDocumentData($_SESSION['APPLICATION'], $_SESSION['USER_LOGGED'], $pathOutput . $sFilename . '.pdf', $sFilenameOriginal . '.pdf', $sDocUID, $oAppDocument->getDocVersion());
|
2012-10-19 17:17:53 -04:00
|
|
|
|
|
|
|
|
$documentData->sFileType = "PDF";
|
|
|
|
|
$documentData->bUseOutputFolder = true;
|
2017-12-04 13:25:35 +00:00
|
|
|
$uploadReturn = $oPluginRegistry->executeTriggers(PM_UPLOAD_DOCUMENT, $documentData);
|
2012-10-19 17:17:53 -04:00
|
|
|
if ($uploadReturn) {
|
|
|
|
|
//Only delete if the file was saved correctly
|
2017-12-04 13:25:35 +00:00
|
|
|
unlink($pathOutput . $sFilename . '.pdf');
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case "DOC":
|
2017-12-04 13:25:35 +00:00
|
|
|
$documentData = new uploadDocumentData($_SESSION['APPLICATION'], $_SESSION['USER_LOGGED'], $pathOutput . $sFilename . '.doc', $sFilenameOriginal . '.doc', $sDocUID, $oAppDocument->getDocVersion());
|
2012-10-19 17:17:53 -04:00
|
|
|
|
|
|
|
|
$documentData->sFileType = "DOC";
|
|
|
|
|
$documentData->bUseOutputFolder = true;
|
2017-12-04 13:25:35 +00:00
|
|
|
$uploadReturn = $oPluginRegistry->executeTriggers(PM_UPLOAD_DOCUMENT, $documentData);
|
2012-10-19 17:17:53 -04:00
|
|
|
if ($uploadReturn) {
|
|
|
|
|
//Only delete if the file was saved correctly
|
2017-12-04 13:25:35 +00:00
|
|
|
unlink($pathOutput . $sFilename . '.doc');
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$outputNextStep = 'cases_Step?TYPE=OUTPUT_DOCUMENT&UID=' . $_GET['UID'] . '&POSITION=' . $_SESSION['STEP_POSITION'] . '&ACTION=VIEW&DOC=' . $sDocUID;
|
2017-12-04 13:25:35 +00:00
|
|
|
G::header('location: ' . $outputNextStep);
|
2012-10-19 17:17:53 -04:00
|
|
|
die();
|
|
|
|
|
break;
|
|
|
|
|
case 'VIEW':
|
|
|
|
|
if ($noShowTitle == 0) {
|
2017-12-04 13:25:35 +00:00
|
|
|
$G_PUBLISH->AddContent('smarty', 'cases/cases_title', '', '', $array);
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
|
|
|
|
$oAppDocument = new AppDocument();
|
|
|
|
|
$lastVersion = $oAppDocument->getLastAppDocVersion( $_GET['DOC'], $_SESSION['APPLICATION'] );
|
|
|
|
|
$aFields = $oAppDocument->load( $_GET['DOC'], $lastVersion );
|
2017-11-28 13:40:30 -04:00
|
|
|
$aFields['APP_DOC_CREATE_DATE'] = DateTime::convertUtcToTimeZone($aFields['APP_DOC_CREATE_DATE']);
|
2012-10-19 17:17:53 -04:00
|
|
|
$listing = false;
|
2017-08-01 12:16:06 -04:00
|
|
|
$oPluginRegistry = PluginRegistry::loadSingleton();
|
2017-12-04 13:25:35 +00:00
|
|
|
if ($oPluginRegistry->existsTrigger(PM_CASE_DOCUMENT_LIST)) {
|
|
|
|
|
$folderData = new folderData(null, null, $_SESSION['APPLICATION'], null, $_SESSION['USER_LOGGED']);
|
2012-10-19 17:17:53 -04:00
|
|
|
$folderData->PMType = "OUTPUT";
|
|
|
|
|
$folderData->returnList = true;
|
2017-12-04 13:25:35 +00:00
|
|
|
$listing = $oPluginRegistry->executeTriggers(PM_CASE_DOCUMENT_LIST, $folderData);
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$oOutputDocument = new OutputDocument();
|
2017-12-04 13:25:35 +00:00
|
|
|
$aGields = $oOutputDocument->load($aFields['DOC_UID']);
|
2012-10-19 17:17:53 -04:00
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
if (isset($aGields['OUT_DOC_VERSIONING']) && $aGields['OUT_DOC_VERSIONING'] != 0) {
|
2012-10-19 17:17:53 -04:00
|
|
|
$oAppDocument = new AppDocument();
|
2017-12-04 13:25:35 +00:00
|
|
|
$lastDocVersion = $oAppDocument->getLastDocVersion($_GET['UID'], $_SESSION['APPLICATION']);
|
2012-10-19 17:17:53 -04:00
|
|
|
} else {
|
|
|
|
|
$lastDocVersion = '';
|
|
|
|
|
}
|
2017-12-04 13:25:35 +00:00
|
|
|
$aFields['VIEW1'] = G::LoadTranslation('ID_OPEN');
|
2012-10-19 17:17:53 -04:00
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
$aFields['VIEW2'] = G::LoadTranslation('ID_OPEN');
|
2012-10-19 17:17:53 -04:00
|
|
|
|
|
|
|
|
$aFields['FILE1'] = 'cases_ShowOutputDocument?a=' . $aFields['APP_DOC_UID'] . '&v=' . $lastDocVersion . '&ext=doc&random=' . rand() . '&PHPSESSID=' . @session_id();
|
|
|
|
|
|
|
|
|
|
$aFields['FILE2'] = 'cases_ShowOutputDocument?a=' . $aFields['APP_DOC_UID'] . '&v=' . $lastDocVersion . '&ext=pdf&random=' . rand() . '&PHPSESSID=' . @session_id();
|
|
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
if (is_array($listing)) {
|
2012-10-19 17:17:53 -04:00
|
|
|
//If exist in Plugin Document List
|
|
|
|
|
foreach ($listing as $folderitem) {
|
|
|
|
|
if (($folderitem->filename == $aFields['APP_DOC_UID']) && ($folderitem->type == 'DOC')) {
|
2017-12-04 13:25:35 +00:00
|
|
|
$aFields['VIEW1'] = G::LoadTranslation('ID_GET_EXTERNAL_FILE');
|
2012-10-19 17:17:53 -04:00
|
|
|
$aFields['FILE1'] = $folderitem->downloadScript;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
if (($folderitem->filename == $aFields['APP_DOC_UID']) && ($folderitem->type == 'PDF')) {
|
2017-12-04 13:25:35 +00:00
|
|
|
$aFields['VIEW2'] = G::LoadTranslation('ID_GET_EXTERNAL_FILE');
|
2012-10-19 17:17:53 -04:00
|
|
|
$aFields['FILE2'] = $folderitem->downloadScript;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (($aGields['OUT_DOC_GENERATE'] == 'BOTH') || ($aGields['OUT_DOC_GENERATE'] == '')) {
|
2017-12-04 13:25:35 +00:00
|
|
|
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'cases/cases_ViewOutputDocument1', '', G::array_merges($aOD, $aFields), '');
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($aGields['OUT_DOC_GENERATE'] == 'DOC') {
|
2017-12-04 13:25:35 +00:00
|
|
|
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'cases/cases_ViewOutputDocument2', '', G::array_merges($aOD, $aFields), '');
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($aGields['OUT_DOC_GENERATE'] == 'PDF') {
|
2017-12-04 13:25:35 +00:00
|
|
|
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'cases/cases_ViewOutputDocument3', '', G::array_merges($aOD, $aFields), '');
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 'ASSIGN_TASK':
|
|
|
|
|
$oDerivation = new Derivation();
|
|
|
|
|
$oProcess = new Process();
|
2017-12-04 13:25:35 +00:00
|
|
|
$aData = $oCase->loadCase($_SESSION['APPLICATION']);
|
2012-10-19 17:17:53 -04:00
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
$aFields['PROCESS'] = $oProcess->load($_SESSION['PROCESS']);
|
2012-10-19 17:17:53 -04:00
|
|
|
$aFields['PREVIOUS_PAGE'] = $aPreviousStep['PAGE'];
|
2017-12-04 13:25:35 +00:00
|
|
|
$aFields['PREVIOUS_PAGE_LABEL'] = G::LoadTranslation('ID_PREVIOUS_STEP');
|
|
|
|
|
$aFields['ASSIGN_TASK'] = G::LoadTranslation('ID_ASSIGN_TASK');
|
|
|
|
|
$aFields['END_OF_PROCESS'] = G::LoadTranslation('ID_END_OF_PROCESS');
|
|
|
|
|
$aFields['NEXT_TASK_LABEL'] = G::LoadTranslation('ID_NEXT_TASK');
|
|
|
|
|
$aFields['EMPLOYEE'] = G::LoadTranslation('ID_EMPLOYEE');
|
|
|
|
|
$aFields['LAST_EMPLOYEE'] = G::LoadTranslation('ID_LAST_EMPLOYEE');
|
|
|
|
|
$aFields['OPTION_LABEL'] = G::LoadTranslation('ID_OPTION');
|
|
|
|
|
$aFields['CONTINUE'] = G::LoadTranslation('ID_CONTINUE');
|
|
|
|
|
$aFields['FINISH'] = G::LoadTranslation('ID_FINISH');
|
|
|
|
|
$aFields['CONTINUE_WITH_OPTION'] = G::LoadTranslation('ID_CONTINUE_WITH_OPTION');
|
|
|
|
|
$aFields['FINISH_WITH_OPTION'] = G::LoadTranslation('ID_FINISH_WITH_OPTION');
|
|
|
|
|
$aFields['TAS_TIMING_TITLE'] = G::LoadTranslation('ID_TIMING_CONTROL');
|
|
|
|
|
$aFields['TAS_DURATION'] = G::LoadTranslation('ID_TASK_DURATION');
|
|
|
|
|
$aFields['TAS_TIMEUNIT'] = G::LoadTranslation('ID_TIME_UNIT');
|
|
|
|
|
$aFields['TAS_TYPE_DAY'] = G::LoadTranslation('ID_COUNT_DAYS');
|
|
|
|
|
$aFields['TAS_CALENDAR'] = G::LoadTranslation('ID_CALENDAR');
|
2012-10-19 17:17:53 -04:00
|
|
|
|
2016-08-01 16:42:58 -04:00
|
|
|
$oRoute = new \ProcessMaker\Core\RoutingScreen();
|
|
|
|
|
$arrayData = array(
|
|
|
|
|
'USER_UID' => $_SESSION['USER_LOGGED'],
|
|
|
|
|
'APP_UID' => $_SESSION['APPLICATION'],
|
|
|
|
|
'DEL_INDEX' => $_SESSION['INDEX']
|
|
|
|
|
);
|
2016-08-11 12:54:48 -04:00
|
|
|
$aFields['TASK'] = $oRoute->prepareRoutingScreen($arrayData);
|
2016-06-27 12:17:06 -04:00
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
if (empty($aFields['TASK'])) {
|
|
|
|
|
throw (new Exception(G::LoadTranslation('ID_NO_DERIVATION_RULE')));
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
|
|
|
|
|
2017-03-03 15:22:25 -04:00
|
|
|
//Take the first derivation rule as the task derivation rule type.
|
2012-10-19 17:17:53 -04:00
|
|
|
$aFields['PROCESS']['ROU_TYPE'] = $aFields['TASK'][1]['ROU_TYPE'];
|
|
|
|
|
$aFields['PROCESS']['ROU_FINISH_FLAG'] = false;
|
|
|
|
|
|
|
|
|
|
foreach ($aFields['TASK'] as $sKey => &$aValues) {
|
2012-10-18 16:05:43 +00:00
|
|
|
$sPriority = ''; //set priority value
|
2012-10-19 17:17:53 -04:00
|
|
|
if ($aFields['TASK'][$sKey]['NEXT_TASK']['TAS_PRIORITY_VARIABLE'] != '') {
|
2012-10-18 16:05:43 +00:00
|
|
|
//TO DO: review this type of assignment
|
2017-12-04 13:25:35 +00:00
|
|
|
if (isset($aData['APP_DATA'][str_replace('@@', '', $aFields['TASK'][$sKey]['NEXT_TASK']['TAS_PRIORITY_VARIABLE'])])) {
|
|
|
|
|
$sPriority = $aData['APP_DATA'][str_replace('@@', '', $aFields['TASK'][$sKey]['NEXT_TASK']['TAS_PRIORITY_VARIABLE'])];
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
2012-10-18 16:05:43 +00:00
|
|
|
} //set priority value
|
2012-10-19 17:17:53 -04:00
|
|
|
|
2012-10-18 16:05:43 +00:00
|
|
|
//TAS_UID has a hidden field to store the TAS_UID
|
2012-10-19 17:17:53 -04:00
|
|
|
$hiddenName = "form[TASKS][" . $sKey . "][TAS_UID]";
|
|
|
|
|
$hiddenField = '<input type="hidden" name="' . $hiddenName . '" id="' . $hiddenName . '" value="' . $aValues['NEXT_TASK']['TAS_UID'] . '">';
|
|
|
|
|
$aFields['TASK'][$sKey]['NEXT_TASK']['TAS_HIDDEN_FIELD'] = $hiddenField;
|
2015-11-13 15:05:26 -04:00
|
|
|
|
2012-10-19 17:17:53 -04:00
|
|
|
switch ($aValues['NEXT_TASK']['TAS_ASSIGN_TYPE']) {
|
|
|
|
|
case 'EVALUATE':
|
|
|
|
|
case 'REPORT_TO':
|
|
|
|
|
case 'BALANCED':
|
|
|
|
|
case 'SELF_SERVICE':
|
|
|
|
|
$hiddenName = "form[TASKS][" . $sKey . "][USR_UID]";
|
|
|
|
|
$aFields['TASK'][$sKey]['NEXT_TASK']['USR_UID'] = $aFields['TASK'][$sKey]['NEXT_TASK']['USER_ASSIGNED']['USR_FULLNAME'];
|
|
|
|
|
$aFields['TASK'][$sKey]['NEXT_TASK']['USR_HIDDEN_FIELD'] = '<input type="hidden" name="' . $hiddenName . '" id="' . $hiddenName . '" value="' . $aValues['NEXT_TASK']['USER_ASSIGNED']['USR_UID'] . '">';
|
2012-10-18 16:05:43 +00:00
|
|
|
//there is a error with reportsTo, when the USR_UID is empty means there are no manager for this user, so we are disabling buttons
|
|
|
|
|
//but this validation is not for SELF_SERVICE
|
2012-10-19 17:17:53 -04:00
|
|
|
if ($aValues['NEXT_TASK']['TAS_ASSIGN_TYPE'] != 'SELF_SERVICE') {
|
|
|
|
|
if ($aFields['TASK'][$sKey]['NEXT_TASK']['USER_ASSIGNED']['USR_UID'] == '') {
|
|
|
|
|
$aFields['PROCESS']['ERROR'] = $aFields['TASK'][$sKey]['NEXT_TASK']['USER_ASSIGNED']['USR_FULLNAME'];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 'MANUAL':
|
2017-12-04 13:25:35 +00:00
|
|
|
$Aux = [];
|
2012-10-19 17:17:53 -04:00
|
|
|
foreach ($aValues['NEXT_TASK']['USER_ASSIGNED'] as $aUser) {
|
|
|
|
|
$Aux[$aUser['USR_UID']] = $aUser['USR_FULLNAME'];
|
|
|
|
|
}
|
2017-12-04 13:25:35 +00:00
|
|
|
asort($Aux);
|
2012-10-19 17:17:53 -04:00
|
|
|
$sAux = '<select name="form[TASKS][' . $sKey . '][USR_UID]" id="form[TASKS][' . $sKey . '][USR_UID]">';
|
2017-12-04 13:25:35 +00:00
|
|
|
$sAux .= '<option value="" enabled>' . G::LoadTranslation('ID_SELECT') . '</option>';
|
2012-10-19 17:17:53 -04:00
|
|
|
foreach ($Aux as $key => $value) {
|
|
|
|
|
$sAux .= '<option value="' . $key . '">' . $value . '</option>';
|
|
|
|
|
}
|
|
|
|
|
$sAux .= '</select>';
|
|
|
|
|
|
|
|
|
|
$aFields['TASK'][$sKey]['NEXT_TASK']['USR_UID'] = $sAux;
|
|
|
|
|
break;
|
|
|
|
|
case 'CANCEL_MI':
|
|
|
|
|
case 'STATIC_MI':
|
2012-10-18 16:05:43 +00:00
|
|
|
//count the Users in the group
|
2017-12-04 13:25:35 +00:00
|
|
|
$cntInstanceUsers = count($aValues['NEXT_TASK']['USER_ASSIGNED']);
|
2012-10-19 17:17:53 -04:00
|
|
|
|
2012-10-18 16:05:43 +00:00
|
|
|
//set TAS_MI_INSTANCE_VARIABLE value
|
2012-10-19 17:17:53 -04:00
|
|
|
$sMIinstanceVar = '';
|
|
|
|
|
if ($aFields['TASK'][$sKey]['NEXT_TASK']['TAS_MI_INSTANCE_VARIABLE'] != '') {
|
2017-12-04 13:25:35 +00:00
|
|
|
if (isset($aData['APP_DATA'][str_replace('@@', '', $aFields['TASK'][$sKey]['NEXT_TASK']['TAS_MI_INSTANCE_VARIABLE'])])) {
|
|
|
|
|
$sMIinstanceVar = $aData['APP_DATA'][str_replace('@@', '', $aFields['TASK'][$sKey]['NEXT_TASK']['TAS_MI_INSTANCE_VARIABLE'])];
|
2012-10-19 17:17:53 -04:00
|
|
|
if ($sMIinstanceVar > $cntInstanceUsers) {
|
2017-12-04 13:25:35 +00:00
|
|
|
throw (new Exception("Total Multiple Instance Task cannot be greater than number of users in the group."));
|
2012-10-19 17:17:53 -04:00
|
|
|
} elseif ($sMIinstanceVar == 0) {
|
2017-12-04 13:25:35 +00:00
|
|
|
throw (new Exception("Total Multiple Instance Task cannot be zero."));
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
2017-12-04 13:25:35 +00:00
|
|
|
} elseif (is_int((int)$aFields['TASK'][$sKey]['NEXT_TASK']['TAS_MI_INSTANCE_VARIABLE'])) {
|
2012-10-19 17:17:53 -04:00
|
|
|
$sMIinstanceVar = $aFields['TASK'][$sKey]['NEXT_TASK']['TAS_MI_INSTANCE_VARIABLE'];
|
|
|
|
|
if ($sMIinstanceVar > $cntInstanceUsers) {
|
2017-12-04 13:25:35 +00:00
|
|
|
throw (new Exception("Total Multiple Instance Task cannot be greater than number of users in the group."));
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
|
|
|
|
} else {
|
2017-12-04 13:25:35 +00:00
|
|
|
throw (new Exception("Total Multiple Instance Task variable doesn't have valid value."));
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
|
|
|
|
} else {
|
2017-12-04 13:25:35 +00:00
|
|
|
throw (new Exception("Total Multiple Instance Task variable doesn't have valid value."));
|
2012-10-18 16:05:43 +00:00
|
|
|
////set TAS_MI_INSTANCE_VARIABLE value
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2012-10-18 16:05:43 +00:00
|
|
|
//set TAS_MI_COMPLETE_VARIABLE value
|
2012-10-19 17:17:53 -04:00
|
|
|
$sMIcompleteVar = '';
|
|
|
|
|
if ($aFields['TASK'][$sKey]['NEXT_TASK']['TAS_MI_COMPLETE_VARIABLE'] != '') {
|
2017-12-04 13:25:35 +00:00
|
|
|
if (isset($aData['APP_DATA'][str_replace('@@', '', $aFields['TASK'][$sKey]['NEXT_TASK']['TAS_MI_COMPLETE_VARIABLE'])])) {
|
|
|
|
|
$sMIcompleteVar = $aData['APP_DATA'][str_replace('@@', '', $aFields['TASK'][$sKey]['NEXT_TASK']['TAS_MI_COMPLETE_VARIABLE'])];
|
2012-10-19 17:17:53 -04:00
|
|
|
if ($sMIcompleteVar > $sMIinstanceVar) {
|
2017-12-04 13:25:35 +00:00
|
|
|
throw (new Exception("Total Multiple Instance Task to complete cannot be greater than Total number of Instances."));
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
2017-12-04 13:25:35 +00:00
|
|
|
} elseif (is_int((int)$aFields['TASK'][$sKey]['NEXT_TASK']['TAS_MI_COMPLETE_VARIABLE'])) {
|
2012-10-19 17:17:53 -04:00
|
|
|
$sMIcompleteVar = $aFields['TASK'][$sKey]['NEXT_TASK']['TAS_MI_COMPLETE_VARIABLE'];
|
|
|
|
|
if ($sMIcompleteVar > $sMIinstanceVar) {
|
2017-12-04 13:25:35 +00:00
|
|
|
throw (new Exception("Total Multiple Instance Task to complete cannot be greater than Total number of Instances."));
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
|
|
|
|
} else {
|
2017-12-04 13:25:35 +00:00
|
|
|
throw (new Exception("Total Multiple Instance Task to complete variable doesn't have valid value."));
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
|
|
|
|
} else {
|
2017-12-04 13:25:35 +00:00
|
|
|
throw (new Exception("Total Multiple Instance Task to complete variable doesn't have valid value."));
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
2017-12-04 13:25:35 +00:00
|
|
|
//set TAS_MI_COMPLETE_VARIABLE value
|
2012-10-19 17:17:53 -04:00
|
|
|
$aFields['TASK'][$sKey]['NEXT_TASK']['TAS_NEXT'] = $aValues['NEXT_TASK']['TAS_ASSIGN_TYPE'];
|
|
|
|
|
|
2012-10-18 16:05:43 +00:00
|
|
|
//If the Users in the group is equal to the MI Instance variable then Show all the users without Dropdown
|
2012-10-19 17:17:53 -04:00
|
|
|
if ($sMIinstanceVar == $cntInstanceUsers) {
|
|
|
|
|
foreach ($aValues['NEXT_TASK']['USER_ASSIGNED'] as $key => $aUser) {
|
|
|
|
|
$hiddenName = "form[TASKS][" . $sKey . "][NEXT_TASK][USER_ASSIGNED][" . $key . "][USR_UID]";
|
|
|
|
|
$aFields['TASK'][$sKey]['NEXT_TASK']['USER_ASSIGNED'][$key]['USR_UID'] = $aUser['USR_FULLNAME'];
|
|
|
|
|
$aFields['TASK'][$sKey]['NEXT_TASK']['USER_ASSIGNED'][$key]['USR_HIDDEN_FIELD'] = '<input type="hidden" name="' . $hiddenName . '" id="' . $hiddenName . '" value="' . $aUser['USR_UID'] . '">';
|
|
|
|
|
}
|
2012-10-18 16:05:43 +00:00
|
|
|
} //If the Users in the group is not equal to the MI Instance variable then Show Only count users in dropdown
|
2012-10-19 17:17:53 -04:00
|
|
|
else {
|
2017-12-04 13:25:35 +00:00
|
|
|
$Aux = [];
|
2012-10-19 17:17:53 -04:00
|
|
|
foreach ($aValues['NEXT_TASK']['USER_ASSIGNED'] as $aUser) {
|
|
|
|
|
$Aux[$aUser['USR_UID']] = $aUser['USR_FULLNAME'];
|
|
|
|
|
}
|
2017-12-04 13:25:35 +00:00
|
|
|
asort($Aux);
|
|
|
|
|
$aAux = '<option value="" enabled>' . G::LoadTranslation('ID_SELECT') . '</option>';
|
2012-10-19 17:17:53 -04:00
|
|
|
foreach ($Aux as $akey => $value) {
|
|
|
|
|
$aAux .= '<option value="' . $akey . '">' . $value . '</option>';
|
|
|
|
|
}
|
|
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
for ($key = 0; $key < $sMIinstanceVar; $key++) {
|
2012-10-19 17:17:53 -04:00
|
|
|
$hiddenName = "form[TASKS][" . $sKey . "][NEXT_TASK][USER_ASSIGNED][" . $key . "][USR_UID]";
|
|
|
|
|
$sAux = "<select name=$hiddenName id=$hiddenName";
|
|
|
|
|
$sAux .= $aAux;
|
|
|
|
|
$sAux .= '</select>';
|
|
|
|
|
$aFields['TASK'][$sKey]['NEXT_TASK']['USER_ASSIGNED'][$key]['USR_HIDDEN_FIELD'] = "<input type='hidden' name='hidden' id='hidden' value=''>";
|
|
|
|
|
$aFields['TASK'][$sKey]['NEXT_TASK']['USER_ASSIGNED'][$key]['USR_UID'] = $sAux;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
2012-10-18 16:05:43 +00:00
|
|
|
case '': //when this task is the Finish process
|
2014-01-22 13:48:19 -04:00
|
|
|
case 'nobody':
|
2017-12-04 13:25:35 +00:00
|
|
|
$userFields = $oDerivation->getUsersFullNameFromArray($aFields['TASK'][$sKey]['USER_UID']);
|
2012-10-19 17:17:53 -04:00
|
|
|
$aFields['TASK'][$sKey]['NEXT_TASK']['USR_UID'] = $userFields['USR_FULLNAME'];
|
|
|
|
|
$aFields['TASK'][$sKey]['NEXT_TASK']['ROU_FINISH_FLAG'] = true;
|
|
|
|
|
$aFields['PROCESS']['ROU_FINISH_FLAG'] = true;
|
|
|
|
|
break;
|
2015-09-11 09:27:16 -04:00
|
|
|
case "MULTIPLE_INSTANCE":
|
|
|
|
|
case "MULTIPLE_INSTANCE_VALUE_BASED":
|
2017-12-04 13:25:35 +00:00
|
|
|
$arrayAux = [];
|
2015-09-11 09:27:16 -04:00
|
|
|
|
|
|
|
|
foreach ($aValues["NEXT_TASK"]["USER_ASSIGNED"] as $value) {
|
|
|
|
|
$arrayAux[$value["USR_UID"]] = $value["USR_FULLNAME"];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
asort($arrayAux);
|
|
|
|
|
|
|
|
|
|
$aFields["TASK"][$sKey]["NEXT_TASK"]["USR_UID"] = "<div style=\"overflow: auto; max-height: 200px;\">" . implode("<br />", $arrayAux) . "</div>";
|
|
|
|
|
break;
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
2015-06-24 18:28:20 -04:00
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
$optionTaskType = (isset($aFields["TASK"][$sKey]["NEXT_TASK"]["TAS_TYPE"])) ? $aFields["TASK"][$sKey]["NEXT_TASK"]["TAS_TYPE"] : "";
|
2015-06-24 18:28:20 -04:00
|
|
|
|
|
|
|
|
switch ($optionTaskType) {
|
2016-11-25 13:06:25 -05:00
|
|
|
case "SERVICE-TASK":
|
|
|
|
|
$aFields["TASK"][$sKey]["NEXT_TASK"]["USR_UID"] = G::LoadTranslation("ID_ROUTE_TO_TASK_SERVICE_TASK");
|
|
|
|
|
break;
|
2015-06-24 18:28:20 -04:00
|
|
|
case "SCRIPT-TASK":
|
2015-06-30 12:04:53 -04:00
|
|
|
$aFields["TASK"][$sKey]["NEXT_TASK"]["USR_UID"] = G::LoadTranslation("ID_ROUTE_TO_TASK_SCRIPT_TASK");
|
|
|
|
|
break;
|
|
|
|
|
case "INTERMEDIATE-CATCH-TIMER-EVENT":
|
|
|
|
|
$aFields["TASK"][$sKey]["NEXT_TASK"]["USR_UID"] = G::LoadTranslation("ID_ROUTE_TO_TASK_INTERMEDIATE_CATCH_TIMER_EVENT");
|
2015-06-24 18:28:20 -04:00
|
|
|
break;
|
2016-06-09 16:14:50 -04:00
|
|
|
case "INTERMEDIATE-THROW-EMAIL-EVENT":
|
|
|
|
|
$aFields["TASK"][$sKey]["NEXT_TASK"]["TAS_TITLE"] = G::LoadTranslation("ID_ROUTE_TO_TASK_INTERMEDIATE-THROW-EMAIL-EVENT");
|
|
|
|
|
break;
|
2015-06-24 18:28:20 -04:00
|
|
|
}
|
|
|
|
|
|
2012-10-19 17:17:53 -04:00
|
|
|
$hiddenName = 'form[TASKS][' . $sKey . ']';
|
|
|
|
|
|
2012-10-18 16:05:43 +00:00
|
|
|
/* Allow user defined Timing Control
|
2012-10-19 17:17:53 -04:00
|
|
|
* Values in the dropdown will be populated from the Table TASK.
|
|
|
|
|
*/
|
|
|
|
|
if ($aValues['NEXT_TASK']['TAS_ASSIGN_TYPE'] != '') {
|
|
|
|
|
//Check for End of Process
|
2017-12-04 13:25:35 +00:00
|
|
|
$aFields['TASK'][$sKey]['NEXT_TASK']['TAS_TRANSFER_FLY'] = strtolower($aValues['NEXT_TASK']['TAS_TRANSFER_FLY']);
|
2012-10-19 17:17:53 -04:00
|
|
|
$aFields['TASK'][$sKey]['NEXT_TASK']['TAS_TRANSFER_HIDDEN_FLY'] = "<input type=hidden name='" . $hiddenName . "[NEXT_TASK][TAS_TRANSFER_HIDDEN_FLY]' id='" . $hiddenName . "[NEXT_TASK][TAS_TRANSFER_HIDDEN_FLY]' value=" . $aValues['NEXT_TASK']['TAS_TRANSFER_FLY'] . ">";
|
|
|
|
|
if ($aValues['NEXT_TASK']['TAS_TRANSFER_FLY'] == 'true') {
|
|
|
|
|
$aFields['TASK'][$sKey]['NEXT_TASK']['TAS_DURATION'] = '<input type="text" size="5" name="' . $hiddenName . '[NEXT_TASK][TAS_DURATION]" id="' . $hiddenName . '[NEXT_TASK][TAS_DURATION]" value="' . $aValues['NEXT_TASK']['TAS_DURATION'] . '">';
|
2017-02-01 12:28:15 -04:00
|
|
|
$hoursSelected = $daysSelected = $minSelected = '';
|
2012-10-19 17:17:53 -04:00
|
|
|
if ($aFields['TASK'][$sKey]['NEXT_TASK']['TAS_TIMEUNIT'] == 'HOURS') {
|
|
|
|
|
$hoursSelected = "selected = 'selected'";
|
|
|
|
|
} else {
|
2015-06-08 08:54:34 -04:00
|
|
|
if ($aFields['TASK'][$sKey]['NEXT_TASK']['TAS_TIMEUNIT'] == 'MINUTES') {
|
2017-12-04 13:25:35 +00:00
|
|
|
$minSelected = "selected = 'selected'";
|
2015-06-08 08:54:34 -04:00
|
|
|
}
|
2012-10-19 17:17:53 -04:00
|
|
|
$daysSelected = "selected = 'selected'";
|
|
|
|
|
}
|
|
|
|
|
|
2015-04-17 15:34:51 -04:00
|
|
|
$sAux = '<select name=' . $hiddenName . '[NEXT_TASK][TAS_TIMEUNIT] id= ' . $hiddenName . '[NEXT_TASK][TAS_TIMEUNIT] >';
|
2012-10-19 17:17:53 -04:00
|
|
|
$sAux .= "<option " . $hoursSelected . " value='HOURS'>Hours</option> ";
|
|
|
|
|
$sAux .= "<option " . $daysSelected . " value='DAYS'>Days</option> ";
|
2015-06-08 08:54:34 -04:00
|
|
|
$sAux .= "<option " . $minSelected . " value='MINUTES'>Minutes</option> ";
|
2012-10-19 17:17:53 -04:00
|
|
|
$sAux .= '</select>';
|
|
|
|
|
$aFields['TASK'][$sKey]['NEXT_TASK']['TAS_TIMEUNIT'] = $sAux;
|
|
|
|
|
|
|
|
|
|
$workSelected = $calendarSelected = '';
|
|
|
|
|
if ($aFields['TASK'][$sKey]['NEXT_TASK']['TAS_TYPE_DAY'] == '1') {
|
|
|
|
|
$workSelected = "selected = 'selected'";
|
|
|
|
|
} else {
|
|
|
|
|
$calendarSelected = "selected = 'selected'";
|
|
|
|
|
}
|
|
|
|
|
|
2015-04-17 15:34:51 -04:00
|
|
|
$sAux = '<select name=' . $hiddenName . '[NEXT_TASK][TAS_TYPE_DAY] id= ' . $hiddenName . '[NEXT_TASK][TAS_TYPE_DAY] >';
|
2012-10-19 17:17:53 -04:00
|
|
|
$sAux .= "<option " . $workSelected . " value='1'>Work Days</option> ";
|
|
|
|
|
$sAux .= "<option " . $calendarSelected . " value='2'>Calendar Days</option> ";
|
|
|
|
|
$sAux .= '</select>';
|
|
|
|
|
$aFields['TASK'][$sKey]['NEXT_TASK']['TAS_TYPE_DAY'] = $sAux;
|
|
|
|
|
|
2012-10-18 16:05:43 +00:00
|
|
|
//Check for
|
2017-02-14 21:24:08 +00:00
|
|
|
|
2012-10-19 17:17:53 -04:00
|
|
|
$calendar = new Calendar();
|
2017-12-04 13:25:35 +00:00
|
|
|
$calendarObj = $calendar->getCalendarList(true, true);
|
2012-10-19 17:17:53 -04:00
|
|
|
$availableCalendar = $calendarObj['array'];
|
|
|
|
|
$aCalendar['CALENDAR_UID'] = '00000000000000000000000000000001';
|
|
|
|
|
$aCalendar['CALENDAR_NAME'] = 'DEFAULT';
|
|
|
|
|
$sAux = '<select name=' . $hiddenName . '[NEXT_TASK][TAS_CALENDAR] id= ' . $hiddenName . '[NEXT_TASK][TAS_CALENDAR] ';
|
|
|
|
|
$sAux .= "<option value='none'>-None-</option> ";
|
|
|
|
|
foreach ($availableCalendar as $aCalendar) {
|
2017-12-04 13:25:35 +00:00
|
|
|
if (is_array($aCalendar)) {
|
2012-10-19 17:17:53 -04:00
|
|
|
$sAux .= "<option value='" . $aCalendar['CALENDAR_UID'] . "'>" . $aCalendar['CALENDAR_NAME'] . "</option> ";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$sAux .= '</select>';
|
|
|
|
|
$aFields['TASK'][$sKey]['NEXT_TASK']['TAS_CALENDAR'] = $sAux;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$aFields['TASK'][$sKey]['NEXT_TASK']['TAS_ASSIGN_TYPE'] = '<input type="hidden" name="' . $hiddenName . '[TAS_ASSIGN_TYPE]" id="' . $hiddenName . '[TAS_ASSIGN_TYPE]" value="' . $aValues['NEXT_TASK']['TAS_ASSIGN_TYPE'] . '">';
|
2017-12-04 13:25:35 +00:00
|
|
|
if (isset($aValues['NEXT_TASK']['TAS_DEF_PROC_CODE'])) {
|
2012-10-19 17:17:53 -04:00
|
|
|
$aFields['TASK'][$sKey]['NEXT_TASK']['TAS_DEF_PROC_CODE'] = '<input type="hidden" name="' . $hiddenName . '[TAS_DEF_PROC_CODE]" id="' . $hiddenName . '[TAS_DEF_PROC_CODE]" value="' . $aValues['NEXT_TASK']['TAS_DEF_PROC_CODE'] . '">';
|
|
|
|
|
} else {
|
|
|
|
|
$aFields['TASK'][$sKey]['NEXT_TASK']['TAS_DEF_PROC_CODE'] = '<input type="hidden" name="' . $hiddenName . '[TAS_DEF_PROC_CODE]" id="' . $hiddenName . '[TAS_DEF_PROC_CODE]" value="">';
|
|
|
|
|
}
|
|
|
|
|
$aFields['TASK'][$sKey]['NEXT_TASK']['DEL_PRIORITY'] = '<input type="hidden" name="' . $hiddenName . '[DEL_PRIORITY]" id="' . $hiddenName . '[DEL_PRIORITY]" value="' . $sPriority . '">';
|
|
|
|
|
$aFields['TASK'][$sKey]['NEXT_TASK']['TAS_PARENT'] = '<input type="hidden" name="' . $hiddenName . '[TAS_PARENT]" id="' . $hiddenName . '[TAS_PARENT]" value="' . $aValues['NEXT_TASK']['TAS_PARENT'] . '">';
|
2017-12-04 13:25:35 +00:00
|
|
|
if (isset($aValues['NEXT_TASK']['ROU_PREVIOUS_TASK']) && isset($aValues['NEXT_TASK']['ROU_PREVIOUS_TYPE'])) {
|
2015-11-13 15:05:26 -04:00
|
|
|
$aFields['TASK'][$sKey]['NEXT_TASK']['ROU_PREVIOUS_TASK'] = '<input type="hidden" name="' . $hiddenName . '[ROU_PREVIOUS_TASK]" id="' . $hiddenName . '[ROU_PREVIOUS_TASK]" value="' . $aValues['NEXT_TASK']['ROU_PREVIOUS_TASK'] . '">';
|
|
|
|
|
$aFields['TASK'][$sKey]['NEXT_TASK']['ROU_PREVIOUS_TYPE'] = '<input type="hidden" name="' . $hiddenName . '[ROU_PREVIOUS_TYPE]" id="' . $hiddenName . '[ROU_PREVIOUS_TYPE]" value="' . $aValues['NEXT_TASK']['ROU_PREVIOUS_TYPE'] . '">';
|
|
|
|
|
}
|
2017-12-04 13:25:35 +00:00
|
|
|
if (isset($aValues['ROU_CONDITION'])) {
|
2015-11-22 13:43:30 -04:00
|
|
|
$aFields['TASK'][$sKey]['NEXT_TASK']['ROU_CONDITION'] = '<input type="hidden" name="' . $hiddenName . '[ROU_CONDITION]" id="' . $hiddenName . '[ROU_CONDITION]" value="' . $aValues['ROU_CONDITION'] . '">';
|
|
|
|
|
}
|
2017-12-04 13:25:35 +00:00
|
|
|
if (isset($aValues['SOURCE_UID'])) {
|
2016-08-02 11:22:27 -04:00
|
|
|
$aFields['TASK'][$sKey]['NEXT_TASK']['SOURCE_UID'] = '<input type="hidden" name="' . $hiddenName . '[SOURCE_UID]" id="' . $hiddenName . '[SOURCE_UID]" value="' . $aValues['SOURCE_UID'] . '">';
|
|
|
|
|
}
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
|
|
|
|
}
|
2015-06-30 12:04:53 -04:00
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
$aFields['PROCESSING_MESSAGE'] = G::loadTranslation('ID_PROCESSING');
|
2012-10-19 17:17:53 -04:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* New Feature: Derivation Screen can be personalized
|
|
|
|
|
*
|
|
|
|
|
* @author Erik Amaru Ortiz <erik@colosa.com>
|
|
|
|
|
*/
|
|
|
|
|
$tplFile = 'cases/cases_ScreenDerivation';
|
2017-12-04 13:25:35 +00:00
|
|
|
$task = TaskPeer::retrieveByPk($_SESSION['TASK']);
|
2012-10-19 17:17:53 -04:00
|
|
|
|
|
|
|
|
$tasDerivationScreenTpl = $task->getTasDerivationScreenTpl();
|
|
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
if (!empty($tasDerivationScreenTpl)) {
|
|
|
|
|
//first, verify if the task has a personalized template (for derivation screen)
|
2012-10-19 17:17:53 -04:00
|
|
|
$tplFile = $tasDerivationScreenTpl;
|
|
|
|
|
$tplFile = PATH_DATA_MAILTEMPLATES . $aFields['PROCESS']['PRO_UID'] . PATH_SEP . $tplFile;
|
|
|
|
|
} else {
|
2017-12-04 13:25:35 +00:00
|
|
|
//verify if the process has a personalized template (for derivation screen)
|
|
|
|
|
if (!empty($aFields['PROCESS']['PRO_DERIVATION_SCREEN_TPL'])) {
|
2012-10-19 17:17:53 -04:00
|
|
|
$tplFile = $aFields['PROCESS']['PRO_DERIVATION_SCREEN_TPL'];
|
|
|
|
|
$tplFile = PATH_DATA_MAILTEMPLATES . $aFields['PROCESS']['PRO_UID'] . PATH_SEP . $tplFile;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2013-04-12 10:50:08 -04:00
|
|
|
$title = htmlentities($aFields['TASK'][$sKey]['NEXT_TASK']['TAS_TITLE'], ENT_QUOTES, 'UTF-8');
|
2013-04-12 10:02:34 -04:00
|
|
|
$aFields['TASK'][$sKey]['NEXT_TASK']['TAS_TITLE'] = $title;
|
|
|
|
|
|
2017-03-08 11:39:32 -04:00
|
|
|
//todo These two conditions must go to the RoutingScreen class
|
2015-02-21 15:59:12 -04:00
|
|
|
if (!preg_match("/\-1$/", $aFields["TASK"][$sKey]["NEXT_TASK"]["TAS_UID"]) &&
|
|
|
|
|
$aFields["TASK"][$sKey]["NEXT_TASK"]["TAS_TYPE"] == "INTERMEDIATE-CATCH-MESSAGE-EVENT"
|
|
|
|
|
) {
|
|
|
|
|
$aFields["TASK"][$sKey]["NEXT_TASK"]["TAS_TITLE"] = G::LoadTranslation("ID_ROUTE_TO_TASK_INTERMEDIATE_CATCH_MESSAGE_EVENT");
|
|
|
|
|
}
|
|
|
|
|
|
2017-06-02 18:27:50 -04:00
|
|
|
//SKIP ASSIGN SCREEN
|
2017-06-02 13:07:52 -04:00
|
|
|
if (!empty($aFields['TASK'][1])) {
|
|
|
|
|
$currentTask = $aFields['TASK'][1];
|
|
|
|
|
$isWebEntry = $bmWebEntry->isTaskAWebEntry($currentTask['TAS_UID']);
|
|
|
|
|
if ($isWebEntry) {
|
2017-09-15 16:29:21 -04:00
|
|
|
$webEntryUrlEvaluated = '';
|
2017-06-02 13:07:52 -04:00
|
|
|
$tplFile = 'webentry/cases_ScreenDerivation';
|
|
|
|
|
$caseId = $currentTask['APP_UID'];
|
|
|
|
|
$delIndex = $currentTask['DEL_INDEX'];
|
|
|
|
|
$derivationResponse = PMFDerivateCase($caseId, $delIndex, true);
|
|
|
|
|
if ($derivationResponse) {
|
|
|
|
|
$webEntryUrl = $bmWebEntry->getCallbackUrlByTask($currentTask['TAS_UID']);
|
|
|
|
|
$delegationData = $Fields['APP_DATA'];
|
|
|
|
|
$delegationData['_DELEGATION_DATA'] = $aFields['TASK'];
|
|
|
|
|
$delegationData['_DELEGATION_MESSAGE'] = $bmWebEntry->getDelegationMessage($delegationData);
|
|
|
|
|
$webEntryUrlEvaluated = \G::replaceDataField($webEntryUrl, $delegationData);
|
|
|
|
|
}
|
|
|
|
|
$aFields['derivationResponse'] = $derivationResponse;
|
|
|
|
|
$aFields['webEntryUrlEvaluated'] = $webEntryUrlEvaluated;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
$G_PUBLISH->AddContent('smarty', $tplFile, '', '', $aFields);
|
2012-10-19 17:17:53 -04:00
|
|
|
break;
|
|
|
|
|
case 'EXTERNAL':
|
|
|
|
|
if ($noShowTitle == 0) {
|
2017-12-04 13:25:35 +00:00
|
|
|
$G_PUBLISH->AddContent('smarty', 'cases/cases_title', '', '', $array);
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
2017-08-01 12:16:06 -04:00
|
|
|
$oPluginRegistry = PluginRegistry::loadSingleton();
|
2012-10-19 17:17:53 -04:00
|
|
|
$externalSteps = $oPluginRegistry->getSteps();
|
|
|
|
|
|
|
|
|
|
$sNamespace = '';
|
|
|
|
|
$sStepName = '';
|
|
|
|
|
foreach ($externalSteps as $key => $val) {
|
2018-03-15 16:35:53 -04:00
|
|
|
if ($val->getStepId() == $_GET['UID']) {
|
|
|
|
|
$sNamespace = $val->getNamespace();
|
|
|
|
|
$sStepName = $val->getStepName();
|
2012-10-19 17:17:53 -04:00
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
2017-12-04 13:25:35 +00:00
|
|
|
if (class_exists($sNamespace . "plugin")) {
|
|
|
|
|
if (!$aPreviousStep) {
|
2012-10-19 17:17:53 -04:00
|
|
|
$Fields['APP_DATA']['__DYNAFORM_OPTIONS']['PREVIOUS_STEP_LABEL'] = '';
|
|
|
|
|
} else {
|
|
|
|
|
$Fields['APP_DATA']['__DYNAFORM_OPTIONS']['PREVIOUS_STEP'] = $aPreviousStep['PAGE'];
|
2017-12-04 13:25:35 +00:00
|
|
|
$Fields['APP_DATA']['__DYNAFORM_OPTIONS']['PREVIOUS_STEP_LABEL'] = G::loadTranslation("ID_PREVIOUS_STEP");
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
|
|
|
|
$Fields['APP_DATA']['__DYNAFORM_OPTIONS']['NEXT_STEP'] = $aNextStep['PAGE'];
|
2017-12-04 13:25:35 +00:00
|
|
|
$Fields['APP_DATA']['__DYNAFORM_OPTIONS']['NEXT_STEP_LABEL'] = G::loadTranslation("ID_NEXT_STEP");
|
2012-10-19 17:17:53 -04:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Added By erik date: 16-05-08
|
|
|
|
|
* Description: this was added for the additional database connections
|
|
|
|
|
*/
|
2017-02-14 21:24:08 +00:00
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
$oDbConnections = new DbConnections($_SESSION['PROCESS']);
|
2012-10-19 17:17:53 -04:00
|
|
|
$oDbConnections->loadAdditionalConnections();
|
|
|
|
|
$stepFilename = "$sNamespace/$sStepName";
|
2017-12-04 13:25:35 +00:00
|
|
|
G::evalJScript("
|
2012-04-10 12:27:13 -04:00
|
|
|
if (parent.setCurrent) {
|
2012-10-18 16:05:43 +00:00
|
|
|
parent.setCurrent('" . $_GET['UID'] . "');
|
2017-12-04 13:25:35 +00:00
|
|
|
}");
|
2012-10-19 17:17:53 -04:00
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
$G_PUBLISH->AddContent('content', $stepFilename);
|
2012-10-19 17:17:53 -04:00
|
|
|
} else {
|
2017-12-04 13:25:35 +00:00
|
|
|
$aMessage['MESSAGE'] = G::loadTranslation('ID_EXTERNAL_STEP_MISSING', SYS_LANG, array("plugin" => $sNamespace
|
|
|
|
|
));
|
|
|
|
|
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showMessage', '', $aMessage);
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
2011-03-25 09:30:45 -04:00
|
|
|
//Add content content step - End
|
2012-10-19 17:17:53 -04:00
|
|
|
} catch (Exception $e) {
|
2015-02-21 15:59:12 -04:00
|
|
|
//Check if the process is BPMN
|
2017-12-04 13:25:35 +00:00
|
|
|
if (isset($oProcessFieds['PRO_BPMN']) && $oProcessFieds['PRO_BPMN'] == 1) {
|
|
|
|
|
G::SendTemporalMessage(G::LoadTranslation('ID_BPMN_PROCESS_DEF_PROBLEM'), 'error', 'string', 3, 100);
|
|
|
|
|
} else {
|
|
|
|
|
G::SendTemporalMessage(G::LoadTranslation('ID_PROCESS_DEF_PROBLEM'), 'error', 'string', 3, 100);
|
2015-02-21 15:59:12 -04:00
|
|
|
}
|
|
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
$aMessage = [];
|
2012-10-19 17:17:53 -04:00
|
|
|
$aMessage['MESSAGE'] = $e->getMessage();
|
|
|
|
|
$G_PUBLISH = new Publisher();
|
2017-12-04 13:25:35 +00:00
|
|
|
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showMessage', '', $aMessage);
|
|
|
|
|
G::RenderPage('publish', 'blank');
|
2012-10-19 17:17:53 -04:00
|
|
|
die();
|
|
|
|
|
}
|
|
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
$oHeadPublisher = headPublisher::getSingleton();
|
|
|
|
|
$oHeadPublisher->addScriptFile("/jscore/cases/core/cases_Step.js");
|
2012-02-24 19:32:24 -04:00
|
|
|
|
2014-07-23 11:23:29 -04:00
|
|
|
if (!isset($_SESSION["PM_RUN_OUTSIDE_MAIN_APP"])) {
|
2017-12-04 13:25:35 +00:00
|
|
|
$oHeadPublisher->addScriptCode("
|
2014-07-23 11:23:29 -04:00
|
|
|
if (typeof parent != 'undefined') {
|
|
|
|
|
if (parent.showCaseNavigatorPanel) {
|
|
|
|
|
parent.showCaseNavigatorPanel('$sStatus');
|
|
|
|
|
}
|
2013-06-12 16:14:25 +00:00
|
|
|
|
2014-07-23 11:23:29 -04:00
|
|
|
if (parent.setCurrent) {
|
|
|
|
|
parent.setCurrent('" . $_GET['UID'] . "');
|
|
|
|
|
}
|
2017-12-04 13:25:35 +00:00
|
|
|
}");
|
2014-07-23 11:23:29 -04:00
|
|
|
}
|
2012-10-19 17:17:53 -04:00
|
|
|
|
2017-12-04 13:25:35 +00:00
|
|
|
G::RenderPage('publish', 'blank');
|
2012-10-19 17:17:53 -04:00
|
|
|
|
2016-04-13 15:46:29 -04:00
|
|
|
if ($_SESSION['TRIGGER_DEBUG']['ISSET'] && !$isIE) {
|
2017-12-04 13:25:35 +00:00
|
|
|
G::evalJScript('
|
2014-07-23 11:23:29 -04:00
|
|
|
if (typeof showdebug != \'undefined\') {
|
|
|
|
|
showdebug();
|
2017-12-04 13:25:35 +00:00
|
|
|
}');
|
2012-10-19 17:17:53 -04:00
|
|
|
}
|