diff --git a/workflow/engine/methods/processes/processes_Import_Ajax.php b/workflow/engine/methods/processes/processes_Import_Ajax.php index 59e843234..de605eb18 100644 --- a/workflow/engine/methods/processes/processes_Import_Ajax.php +++ b/workflow/engine/methods/processes/processes_Import_Ajax.php @@ -1,303 +1,298 @@ -. - * - * For more information, contact Colosa Inc, 2566 Le Jeune Rd., - * Coral Gables, FL, 33134, USA, or email info@colosa.com. - */ -ini_set( 'max_execution_time', '0' ); - -function reservedWordsSqlValidate ($data) -{ - $arrayAux = array (); - $reservedWordsSql = G::reservedWordsSql(); - - foreach ($data->reportTables as $rptIndex => $rptValue) { - if (in_array( strtoupper( $rptValue["REP_TAB_NAME"] ), $reservedWordsSql )) { - $arrayAux[] = $rptValue["REP_TAB_NAME"]; - } - } - - if (count( $arrayAux ) > 0) { - throw (new Exception( G::LoadTranslation( "ID_PMTABLE_INVALID_NAME", array (implode( ", ", $arrayAux ) - ) ) )); - } - - $arrayAux = array (); - - foreach ($data->reportTablesVars as $rptIndex => $rptValue) { - if (in_array( strtoupper( $rptValue["REP_VAR_NAME"] ), $reservedWordsSql )) { - $arrayAux[] = $rptValue["REP_VAR_NAME"]; - } - } - - if (count( $arrayAux ) > 0) { - throw (new Exception( G::LoadTranslation( "ID_PMTABLE_INVALID_FIELD_NAME", array (implode( ", ", $arrayAux ) - ) ) )); - } -} - -$action = isset( $_REQUEST['ajaxAction'] ) ? $_REQUEST['ajaxAction'] : null; - -$result = new stdClass(); -$result->success = true; -$result->catchMessage = ""; - -if ($action == "uploadFileNewProcess") { - try { - //type of file: only pm - $processFileType = $_REQUEST["processFileType"]; - $oProcess = new stdClass(); - $oData = new stdClass(); - - $isCorrectTypeFile = 1; - - if (isset( $_FILES['form']['type']['PROCESS_FILENAME'] )) { - $allowedExtensions = array ($processFileType - ); - $allowedExtensions = array ('pm'); - if (! in_array( end( explode( ".", $_FILES['form']['name']['PROCESS_FILENAME'] ) ), $allowedExtensions )) { - throw new Exception( G::LoadTranslation( "ID_FILE_UPLOAD_INCORRECT_EXTENSION" ) ); - } - } - if ($processFileType != "pm") { - throw new Exception( G::LoadTranslation( "ID_ERROR_UPLOAD_FILE_CONTACT_ADMINISTRATOR" ) ); - } - - if ($processFileType == "pm") { - G::LoadClass( 'processes' ); - $oProcess = new Processes(); - } - - $result->success = true; - $result->ExistProcessInDatabase = ""; //"" -Default - //0 -Dont exist process - //1 -exist process - $result->ExistGroupsInDatabase = ""; //"" -Default - //0 -Dont exist process - //1 -exist process - $optionGroupExistInDatabase = isset( $_REQUEST["optionGroupExistInDatabase"] ) ? $_REQUEST["optionGroupExistInDatabase"] : null; - - //!Upload file - if (! is_null( $optionGroupExistInDatabase )) { - $filename = $_REQUEST["PRO_FILENAME"]; - $path = PATH_DOCUMENT . 'input' . PATH_SEP; - } else { - if ($_FILES['form']['error']['PROCESS_FILENAME'] == 0) { - $filename = $_FILES['form']['name']['PROCESS_FILENAME']; - $path = PATH_DOCUMENT . 'input' . PATH_SEP; - $tempName = $_FILES['form']['tmp_name']['PROCESS_FILENAME']; - //$action = "none"; - G::uploadFile( $tempName, $path, $filename ); - } - } - - //importing a bpmn diagram, using external class to do it. - if ($processFileType == "bpmn") { - G::LoadClass( 'bpmnExport' ); - $bpmn = new bpmnExport(); - $bpmn->importBpmn( $path . $filename ); - die(); - } - - //if file is a .pm file continues normally the importing - if ($processFileType == "pm") { - $oData = $oProcess->getProcessData( $path . $filename ); - } - - reservedWordsSqlValidate( $oData ); - - //!Upload file - $Fields['PRO_FILENAME'] = $filename; - $Fields['IMPORT_OPTION'] = 2; - - $sProUid = $oData->process['PRO_UID']; - - $oData->process['PRO_UID_OLD'] = $sProUid; - - if ($oProcess->processExists( $sProUid )) { - $result->ExistProcessInDatabase = 1; - } else { - $result->ExistProcessInDatabase = 0; - } - - //!respect of the groups - $result->ExistGroupsInDatabase = 1; - $result->groupBeforeAccion = $action; - if (! is_null( $optionGroupExistInDatabase )) { - if ($optionGroupExistInDatabase == 1) { - $oData->groupwfs = $oProcess->renameExistingGroups( $oData->groupwfs ); - } else if ($optionGroupExistInDatabase == 2) { - $oBaseGroup = $oData->groupwfs; - $oNewGroup = $oProcess->mergeExistingGroups( $oData->groupwfs ); - $oData->groupwfs = $oNewGroup; - $oData->taskusers = $oProcess->mergeExistingUsers( $oBaseGroup, $oNewGroup, $oData->taskusers ); - $oData->objectPermissions = $oProcess->mergeExistingUsers( $oBaseGroup, $oNewGroup, $oData->objectPermissions ); - } - $result->ExistGroupsInDatabase = 0; - } else { - if (! ($oProcess->checkExistingGroups( $oData->groupwfs ) > 0)) { - $result->ExistGroupsInDatabase = 0; - } - } - - //replacing a nonexistent user for the current user - $UsrUid = $oData->process['PRO_CREATE_USER']; - - G::LoadClass( 'Users' ); - $user = new Users(); - if (!$user->userExists( $UsrUid )) - { - $oData->process['PRO_CREATE_USER'] = $_SESSION['USER_LOGGED']; - } - - //!respect of the groups - - if ($result->ExistProcessInDatabase == 0 && $result->ExistGroupsInDatabase == 0) { - if ($processFileType == "pm") { - $oProcess->createProcessFromData( $oData, $path . $filename ); - } - } - - //!data ouput - $result->sNewProUid = $sProUid; - $result->proFileName = $Fields['PRO_FILENAME']; - } catch (Exception $e) { - $result->response = $e->getMessage(); - $result->catchMessage = $e->getMessage(); - $result->success = true; - } -} - -if ($action == "uploadFileNewProcessExist") { - try { - $option = $_REQUEST["IMPORT_OPTION"]; - $filename = $_REQUEST["PRO_FILENAME"]; - $processFileType = $_REQUEST["processFileType"]; - - $result->ExistGroupsInDatabase = ""; //"" -Default - //0 -Dont exist process - //1 -exist process - - - $optionGroupExistInDatabase = isset( $_REQUEST["optionGroupExistInDatabase"] ) ? $_REQUEST["optionGroupExistInDatabase"] : null; - $sNewProUid = ""; - - $oProcess = new stdClass(); - if ($processFileType != "pm") { - throw new Exception( G::LoadTranslation( "ID_ERROR_UPLOAD_FILE_CONTACT_ADMINISTRATOR" ) ); - } - - //load the variables - if ($processFileType == "pm") { - G::LoadClass( 'processes' ); - $oProcess = new Processes(); - } - - $path = PATH_DOCUMENT . 'input' . PATH_SEP; - - if ($processFileType == "pm") { - $oData = $oProcess->getProcessData( $path . $filename ); - } - - reservedWordsSqlValidate( $oData ); - - $Fields['PRO_FILENAME'] = $filename; - $sProUid = $oData->process['PRO_UID']; - - $oData->process['PRO_UID_OLD'] = $sProUid; - - $result->ExistGroupsInDatabase = 1; - if (! is_null( $optionGroupExistInDatabase )) { - if ($optionGroupExistInDatabase == 1) { - $oData->groupwfs = $oProcess->renameExistingGroups( $oData->groupwfs ); - } else if ($optionGroupExistInDatabase == 2) { - $oBaseGroup = $oData->groupwfs; - $oNewGroup = $oProcess->mergeExistingGroups( $oData->groupwfs ); - $oData->groupwfs = $oNewGroup; - $oData->taskusers = $oProcess->mergeExistingUsers( $oBaseGroup, $oNewGroup, $oData->taskusers ); - } - $result->ExistGroupsInDatabase = 0; - } else { - if (! ($oProcess->checkExistingGroups( $oData->groupwfs ) > 0)) { - $result->ExistGroupsInDatabase = 0; - } - } - - if ($result->ExistGroupsInDatabase == 0) { - //Update the current Process, overwriting all tasks and steps - if ($option == 1) { - $oProcess->updateProcessFromData( $oData, $path . $filename ); - if (file_exists( PATH_OUTTRUNK . 'compiled' . PATH_SEP . 'xmlform' . PATH_SEP . $sProUid )) { - $oDirectory = dir( PATH_OUTTRUNK . 'compiled' . PATH_SEP . 'xmlform' . PATH_SEP . $sProUid ); - while ($sObjectName = $oDirectory->read()) { - if (($sObjectName != '.') && ($sObjectName != '..')) { - unlink( PATH_OUTTRUNK . 'compiled' . PATH_SEP . 'xmlform' . PATH_SEP . $sProUid . PATH_SEP . $sObjectName ); - } - } - $oDirectory->close(); - } - $sNewProUid = $sProUid; - } - - //Disable current Process and create a new version of the Process - if ($option == 2) { - $oProcess->disablePreviousProcesses( $sProUid ); - $sNewProUid = $oProcess->getUnusedProcessGUID(); - $oProcess->setProcessGuid( $oData, $sNewProUid ); - $oProcess->setProcessParent( $oData, $sProUid ); - $oData->process['PRO_TITLE'] = "New - " . $oData->process['PRO_TITLE'] . ' - ' . date( 'M d, H:i' ); - $oProcess->renewAll( $oData ); - - if ($processFileType == "pm") { - $oProcess->createProcessFromData( $oData, $path . $filename ); - } - } - - //Create a completely new Process without change the current Process - if ($option == 3) { - //krumo ($oData); die; - $sNewProUid = $oProcess->getUnusedProcessGUID(); - $oProcess->setProcessGuid( $oData, $sNewProUid ); - $oData->process['PRO_TITLE'] = G::LoadTranslation('ID_COPY_OF'). ' - ' . $oData->process['PRO_TITLE'] . ' - ' . date( 'M d, H:i' ); - $oProcess->renewAll( $oData ); - - if ($processFileType == "pm") { - $oProcess->createProcessFromData( $oData, $path . $filename ); - } - } - } - - //!data ouput - $result->fileName = $filename; - $result->importOption = $option; - $result->sNewProUid = $sNewProUid; - $result->success = true; - $result->ExistGroupsInDatabase = $result->ExistGroupsInDatabase; - $result->groupBeforeAccion = $action; - //!data ouput - } catch (Exception $e) { - $result->response = $e->getMessage(); - $result->success = true; - } -} - -echo G::json_encode( $result ); -exit(); - +. + * + * For more information, contact Colosa Inc, 2566 Le Jeune Rd., + * Coral Gables, FL, 33134, USA, or email info@colosa.com. + */ +ini_set( 'max_execution_time', '0' ); + +function reservedWordsSqlValidate ($data) +{ + $arrayAux = array (); + $reservedWordsSql = G::reservedWordsSql(); + + foreach ($data->reportTables as $rptIndex => $rptValue) { + if (in_array( strtoupper( $rptValue["REP_TAB_NAME"] ), $reservedWordsSql )) { + $arrayAux[] = $rptValue["REP_TAB_NAME"]; + } + } + + if (count( $arrayAux ) > 0) { + throw (new Exception( G::LoadTranslation( "ID_PMTABLE_INVALID_NAME", array (implode( ", ", $arrayAux ) + ) ) )); + } + + $arrayAux = array (); + + foreach ($data->reportTablesVars as $rptIndex => $rptValue) { + if (in_array( strtoupper( $rptValue["REP_VAR_NAME"] ), $reservedWordsSql )) { + $arrayAux[] = $rptValue["REP_VAR_NAME"]; + } + } + + if (count( $arrayAux ) > 0) { + throw (new Exception( G::LoadTranslation( "ID_PMTABLE_INVALID_FIELD_NAME", array (implode( ", ", $arrayAux ) + ) ) )); + } +} + +$action = isset( $_REQUEST['ajaxAction'] ) ? $_REQUEST['ajaxAction'] : null; + +$result = new stdClass(); +$result->success = true; +$result->catchMessage = ""; + +if ($action == "uploadFileNewProcess") { + try { + //type of file: only pm + $processFileType = $_REQUEST["processFileType"]; + $oProcess = new stdClass(); + $oData = new stdClass(); + + $isCorrectTypeFile = 1; + + if (isset( $_FILES['form']['type']['PROCESS_FILENAME'] )) { + $allowedExtensions = array ($processFileType + ); + $allowedExtensions = array ('pm'); + if (! in_array( end( explode( ".", $_FILES['form']['name']['PROCESS_FILENAME'] ) ), $allowedExtensions )) { + throw new Exception( G::LoadTranslation( "ID_FILE_UPLOAD_INCORRECT_EXTENSION" ) ); + } + } + if ($processFileType != "pm") { + throw new Exception( G::LoadTranslation( "ID_ERROR_UPLOAD_FILE_CONTACT_ADMINISTRATOR" ) ); + } + + if ($processFileType == "pm") { + G::LoadClass( 'processes' ); + $oProcess = new Processes(); + } + + $result->success = true; + $result->ExistProcessInDatabase = ""; //"" -Default + //0 -Dont exist process + //1 -exist process + $result->ExistGroupsInDatabase = ""; //"" -Default + //0 -Dont exist process + //1 -exist process + $optionGroupExistInDatabase = isset( $_REQUEST["optionGroupExistInDatabase"] ) ? $_REQUEST["optionGroupExistInDatabase"] : null; + + //!Upload file + if (! is_null( $optionGroupExistInDatabase )) { + $filename = $_REQUEST["PRO_FILENAME"]; + $path = PATH_DOCUMENT . 'input' . PATH_SEP; + } else { + if ($_FILES['form']['error']['PROCESS_FILENAME'] == 0) { + $filename = $_FILES['form']['name']['PROCESS_FILENAME']; + $path = PATH_DOCUMENT . 'input' . PATH_SEP; + $tempName = $_FILES['form']['tmp_name']['PROCESS_FILENAME']; + //$action = "none"; + G::uploadFile( $tempName, $path, $filename ); + + } + } + + //importing a bpmn diagram, using external class to do it. + if ($processFileType == "bpmn") { + G::LoadClass( 'bpmnExport' ); + $bpmn = new bpmnExport(); + $bpmn->importBpmn( $path . $filename ); + die(); + } + + //if file is a .pm file continues normally the importing + if ($processFileType == "pm") { + $oData = $oProcess->getProcessData( $path . $filename ); + } + + reservedWordsSqlValidate( $oData ); + + //!Upload file + $Fields['PRO_FILENAME'] = $filename; + $Fields['IMPORT_OPTION'] = 2; + + $sProUid = $oData->process['PRO_UID']; + + $oData->process['PRO_UID_OLD'] = $sProUid; + + if ($oProcess->processExists( $sProUid )) { + $result->ExistProcessInDatabase = 1; + } else { + $result->ExistProcessInDatabase = 0; + } + + //!respect of the groups + $result->ExistGroupsInDatabase = 1; + $result->groupBeforeAccion = $action; + if (! is_null( $optionGroupExistInDatabase )) { + if ($optionGroupExistInDatabase == 1) { + $oData->groupwfs = $oProcess->renameExistingGroups( $oData->groupwfs ); + } else if ($optionGroupExistInDatabase == 2) { + $oBaseGroup = $oData->groupwfs; + $oNewGroup = $oProcess->mergeExistingGroups( $oData->groupwfs ); + $oData->groupwfs = $oNewGroup; + $oData->taskusers = $oProcess->mergeExistingUsers( $oBaseGroup, $oNewGroup, $oData->taskusers ); + $oData->objectPermissions = $oProcess->mergeExistingUsers( $oBaseGroup, $oNewGroup, $oData->objectPermissions ); + } + $result->ExistGroupsInDatabase = 0; + } else { + if (! ($oProcess->checkExistingGroups( $oData->groupwfs ) > 0)) { + $result->ExistGroupsInDatabase = 0; + } + } + + //replacing the processOwner user for the current user + + $oData->process['PRO_CREATE_USER'] = $_SESSION['USER_LOGGED']; + + //!respect of the groups + + if ($result->ExistProcessInDatabase == 0 && $result->ExistGroupsInDatabase == 0) { + if ($processFileType == "pm") { + $oProcess->createProcessFromData( $oData, $path . $filename ); + } + } + + //!data ouput + $result->sNewProUid = $sProUid; + $result->proFileName = $Fields['PRO_FILENAME']; + } catch (Exception $e) { + $result->response = $e->getMessage(); + $result->catchMessage = $e->getMessage(); + $result->success = true; + } +} + +if ($action == "uploadFileNewProcessExist") { + try { + $option = $_REQUEST["IMPORT_OPTION"]; + $filename = $_REQUEST["PRO_FILENAME"]; + $processFileType = $_REQUEST["processFileType"]; + + $result->ExistGroupsInDatabase = ""; //"" -Default + //0 -Dont exist process + //1 -exist process + + + $optionGroupExistInDatabase = isset( $_REQUEST["optionGroupExistInDatabase"] ) ? $_REQUEST["optionGroupExistInDatabase"] : null; + $sNewProUid = ""; + + $oProcess = new stdClass(); + if ($processFileType != "pm") { + throw new Exception( G::LoadTranslation( "ID_ERROR_UPLOAD_FILE_CONTACT_ADMINISTRATOR" ) ); + } + + //load the variables + if ($processFileType == "pm") { + G::LoadClass( 'processes' ); + $oProcess = new Processes(); + } + + $path = PATH_DOCUMENT . 'input' . PATH_SEP; + + if ($processFileType == "pm") { + $oData = $oProcess->getProcessData( $path . $filename ); + } + + reservedWordsSqlValidate( $oData ); + + $Fields['PRO_FILENAME'] = $filename; + $sProUid = $oData->process['PRO_UID']; + + $oData->process['PRO_UID_OLD'] = $sProUid; + + $result->ExistGroupsInDatabase = 1; + if (! is_null( $optionGroupExistInDatabase )) { + if ($optionGroupExistInDatabase == 1) { + $oData->groupwfs = $oProcess->renameExistingGroups( $oData->groupwfs ); + } else if ($optionGroupExistInDatabase == 2) { + $oBaseGroup = $oData->groupwfs; + $oNewGroup = $oProcess->mergeExistingGroups( $oData->groupwfs ); + $oData->groupwfs = $oNewGroup; + $oData->taskusers = $oProcess->mergeExistingUsers( $oBaseGroup, $oNewGroup, $oData->taskusers ); + } + $result->ExistGroupsInDatabase = 0; + } else { + if (! ($oProcess->checkExistingGroups( $oData->groupwfs ) > 0)) { + $result->ExistGroupsInDatabase = 0; + } + } + + if ($result->ExistGroupsInDatabase == 0) { + //Update the current Process, overwriting all tasks and steps + if ($option == 1) { + $oProcess->updateProcessFromData( $oData, $path . $filename ); + if (file_exists( PATH_OUTTRUNK . 'compiled' . PATH_SEP . 'xmlform' . PATH_SEP . $sProUid )) { + $oDirectory = dir( PATH_OUTTRUNK . 'compiled' . PATH_SEP . 'xmlform' . PATH_SEP . $sProUid ); + while ($sObjectName = $oDirectory->read()) { + if (($sObjectName != '.') && ($sObjectName != '..')) { + unlink( PATH_OUTTRUNK . 'compiled' . PATH_SEP . 'xmlform' . PATH_SEP . $sProUid . PATH_SEP . $sObjectName ); + } + } + $oDirectory->close(); + } + $sNewProUid = $sProUid; + } + + //Disable current Process and create a new version of the Process + if ($option == 2) { + $oProcess->disablePreviousProcesses( $sProUid ); + $sNewProUid = $oProcess->getUnusedProcessGUID(); + $oProcess->setProcessGuid( $oData, $sNewProUid ); + $oProcess->setProcessParent( $oData, $sProUid ); + $oData->process['PRO_TITLE'] = "New - " . $oData->process['PRO_TITLE'] . ' - ' . date( 'M d, H:i' ); + $oProcess->renewAll( $oData ); + + if ($processFileType == "pm") { + $oProcess->createProcessFromData( $oData, $path . $filename ); + } + } + + //Create a completely new Process without change the current Process + if ($option == 3) { + //krumo ($oData); die; + $sNewProUid = $oProcess->getUnusedProcessGUID(); + $oProcess->setProcessGuid( $oData, $sNewProUid ); + $oData->process['PRO_TITLE'] = G::LoadTranslation('ID_COPY_OF'). ' - ' . $oData->process['PRO_TITLE'] . ' - ' . date( 'M d, H:i' ); + $oProcess->renewAll( $oData ); + + if ($processFileType == "pm") { + $oProcess->createProcessFromData( $oData, $path . $filename ); + } + } + } + + //!data ouput + $result->fileName = $filename; + $result->importOption = $option; + $result->sNewProUid = $sNewProUid; + $result->success = true; + $result->ExistGroupsInDatabase = $result->ExistGroupsInDatabase; + $result->groupBeforeAccion = $action; + //!data ouput + } catch (Exception $e) { + $result->response = $e->getMessage(); + $result->success = true; + } +} + +echo G::json_encode( $result ); +exit(); +