. * * 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'); $action = isset($_REQUEST['ajaxAction']) ? $_REQUEST['ajaxAction'] : null; $result = new stdClass(); $result->success = true; $result->catchMessage = ""; if ( $action == "uploadFileNewProcess") { try { //type of file, bpmn, xpdl, or pm $processFileType = $_REQUEST["processFileType"]; $oProcess = new stdClass(); $oData = new stdClass(); $isCorrectTypeFile = 1; if ( isset($_FILES['form']['type']['PROCESS_FILENAME']) ) { $allowedExtensions = array($processFileType); $allowedExtensions = array( 'xpdl', 'bpmn', '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" && $processFileType != "xpdl" && $processFileType != "bpmn" ) { throw new Exception(G::LoadTranslation("ID_ERROR_UPLOAD_FILE_CONTACT_ADMINISTRATOR")); } if ($processFileType == "pm") { G::LoadClass('processes'); $oProcess = new Processes(); } if ($processFileType == "xpdl") { G::LoadClass('xpdl'); $oProcess = new Xpdl(); } $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 or .xpdl file continues normally the importing if ($processFileType == "pm") { $oData = $oProcess->getProcessData ( $path . $filename ); } else { $oData = $oProcess->getProcessDataXpdl ( $path . $filename ); } //!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); } $result->ExistGroupsInDatabase = 0; } else { if ( !($oProcess->checkExistingGroups($oData->groupwfs) > 0) ) { $result->ExistGroupsInDatabase = 0; } } //!respect of the groups if ($result->ExistProcessInDatabase == 0 && $result->ExistGroupsInDatabase == 0){ if ($processFileType == "pm") { $oProcess->createProcessFromData ($oData, $path . $filename ); } else { if ( !isset( $oData->tasks) ) $oData->tasks = array(); $tasks = $oData->tasks; $oProcess->createProcessFromDataXpdl ($oData,$tasks); } } //!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" && $processFileType != "xpdl") { throw new Exception(G::LoadTranslation("ID_ERROR_UPLOAD_FILE_CONTACT_ADMINISTRATOR")); } //load the variables if ($processFileType == "pm") { G::LoadClass('processes'); $oProcess = new Processes(); } else { G::LoadClass('xpdl'); $oProcess = new Xpdl(); } $path = PATH_DOCUMENT . 'input' . PATH_SEP ; if ($processFileType == "pm"){ $oData = $oProcess->getProcessData ( $path . $filename ); } else { $oData = $oProcess->getProcessDataXpdl ( $path . $filename ); } $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 ); } else { if ( !isset( $oData->tasks) ) { $oData->tasks = array(); } $tasks = $oData->tasks; $oProcess->createProcessFromDataXpdl ($oData,$tasks); } } //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'] = "Copy of - " . $oData->process['PRO_TITLE'] . ' - ' . date ( 'M d, H:i' ); $oProcess->renewAll ( $oData ); if ($processFileType == "pm"){ $oProcess->createProcessFromData ($oData, $path . $filename ); } else { if ( !isset( $oData->tasks) ) { $oData->tasks = array(); } $tasks = $oData->tasks; $oProcess->createProcessFromDataXpdl ($oData,$tasks); } } } //!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();