MT-73: Order window changed for the Selective import feature.
This commit is contained in:
@@ -29,32 +29,32 @@ $affectedGroups = array();
|
|||||||
$granularImport = false;
|
$granularImport = false;
|
||||||
$objectImport = array();
|
$objectImport = array();
|
||||||
|
|
||||||
if (isset($_FILES["PROCESS_FILENAME"]["name"]) && (preg_match("/^(?:pm|pmx)$/", pathinfo($_FILES["PROCESS_FILENAME"]["name"], PATHINFO_EXTENSION)))) {
|
//if (isset($_FILES["PROCESS_FILENAME"]["name"]) && (preg_match("/^(?:pm|pmx)$/", pathinfo($_FILES["PROCESS_FILENAME"]["name"], PATHINFO_EXTENSION)))) {
|
||||||
$import = new XmlImporter();
|
// $import = new XmlImporter();
|
||||||
$data = $import->load($_FILES["PROCESS_FILENAME"]["tmp_name"]);
|
// $data = $import->load($_FILES["PROCESS_FILENAME"]["tmp_name"]);
|
||||||
|
//
|
||||||
if (version_compare($data['version'], '3.0', '>') && isset($_POST['objectsToImport']) && $_POST['objectsToImport'] === '') {
|
// if (version_compare($data['version'], '3.0', '>') && isset($_POST['objectsToImport']) && $_POST['objectsToImport'] === '') {
|
||||||
$objectImport = (isset($data['objects'])) ? explode('|', $data['objects']) : "";
|
// $objectImport = (isset($data['objects'])) ? explode('|', $data['objects']) : "";
|
||||||
$ids = new \ProcessMaker\BusinessModel\Migrator\ExportObjects();
|
// $ids = new \ProcessMaker\BusinessModel\Migrator\ExportObjects();
|
||||||
$objectImport = $ids->getIdObjectList($objectImport);
|
// $objectImport = $ids->getIdObjectList($objectImport);
|
||||||
$granularImport = true;
|
// $granularImport = true;
|
||||||
$result = array(
|
// $result = array(
|
||||||
"success" => true,
|
// "success" => true,
|
||||||
"catchMessage" => '',
|
// "catchMessage" => '',
|
||||||
"ExistProcessInDatabase" => 0,
|
// "ExistProcessInDatabase" => 0,
|
||||||
"ExistGroupsInDatabase" => 0,
|
// "ExistGroupsInDatabase" => 0,
|
||||||
"notExistProcessInDatabase" => 0,
|
// "notExistProcessInDatabase" => 0,
|
||||||
"affectedGroups" => '',
|
// "affectedGroups" => '',
|
||||||
"sNewProUid" => '',
|
// "sNewProUid" => '',
|
||||||
"project_type" => 'bpmn',
|
// "project_type" => 'bpmn',
|
||||||
"isGranularImport" => $granularImport,
|
// "isGranularImport" => $granularImport,
|
||||||
"objectGranularImport" => $objectImport,
|
// "objectGranularImport" => $objectImport,
|
||||||
"project_type_aux" => ''
|
// "project_type_aux" => ''
|
||||||
);
|
// );
|
||||||
echo G::json_encode($result);
|
// echo G::json_encode($result);
|
||||||
exit(0);
|
// exit(0);
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
/*----------------------------------********---------------------------------*/
|
/*----------------------------------********---------------------------------*/
|
||||||
if (PMLicensedFeatures::getSingleton()->verifyfeature("B0oWlBLY3hHdWY0YUNpZEtFQm5CeTJhQlIwN3IxMEkwaG4=") &&
|
if (PMLicensedFeatures::getSingleton()->verifyfeature("B0oWlBLY3hHdWY0YUNpZEtFQm5CeTJhQlIwN3IxMEkwaG4=") &&
|
||||||
isset($_FILES["PROCESS_FILENAME"]) &&
|
isset($_FILES["PROCESS_FILENAME"]) &&
|
||||||
@@ -148,6 +148,7 @@ if (isset($_FILES["PROCESS_FILENAME"]) &&
|
|||||||
$opt2 = XmlImporter::GROUP_IMPORT_OPTION_CREATE_NEW;
|
$opt2 = XmlImporter::GROUP_IMPORT_OPTION_CREATE_NEW;
|
||||||
$prjUid = '';
|
$prjUid = '';
|
||||||
$proType = '';
|
$proType = '';
|
||||||
|
$granularImport = false;
|
||||||
$objectsToImport = '';
|
$objectsToImport = '';
|
||||||
if (isset($_POST['objectsToImport']) && sizeof(G::json_decode($_POST['objectsToImport']))){
|
if (isset($_POST['objectsToImport']) && sizeof(G::json_decode($_POST['objectsToImport']))){
|
||||||
$objectsToImport = G::json_decode($_POST['objectsToImport']);
|
$objectsToImport = G::json_decode($_POST['objectsToImport']);
|
||||||
@@ -261,11 +262,49 @@ if (isset($_POST["PRO_FILENAME"]) &&
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
$objectsToImport = '';
|
$objectsToImport = '';
|
||||||
|
|
||||||
|
/*if (isset($_POST['PRO_FILENAME']) && (preg_match("/^(?:pm|pmx)$/", pathinfo($_POST['PRO_FILENAME'], PATHINFO_EXTENSION)))) {
|
||||||
|
$import = new XmlImporter();*/
|
||||||
|
$data = $importer->load();
|
||||||
|
// only uploadFileNewProcessExist??
|
||||||
|
if (version_compare($data['version'], '3.0', '>') && isset($_POST['objectsToImport']) && $_POST['objectsToImport'] === '' && $_POST['IMPORT_OPTION']==="1") {
|
||||||
|
$objectImport = (isset($data['objects'])) ? explode('|', $data['objects']) : "";
|
||||||
|
$ids = new \ProcessMaker\BusinessModel\Migrator\ExportObjects();
|
||||||
|
$objectImport = $ids->getIdObjectList($objectImport);
|
||||||
|
$granularImport = true;
|
||||||
|
$result = array(
|
||||||
|
"success" => true,
|
||||||
|
"catchMessage" => '',
|
||||||
|
"ExistProcessInDatabase" => 0,
|
||||||
|
"ExistGroupsInDatabase" => 0,
|
||||||
|
"notExistProcessInDatabase" => 0,
|
||||||
|
"affectedGroups" => '',
|
||||||
|
"sNewProUid" => '',
|
||||||
|
"project_type" => 'bpmn',
|
||||||
|
"isGranularImport" => $granularImport,
|
||||||
|
"objectGranularImport" => $objectImport,
|
||||||
|
"project_type_aux" => ''
|
||||||
|
);
|
||||||
|
echo G::json_encode($result);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
// }
|
||||||
|
|
||||||
|
if (version_compare($data['version'], '3.0', '>') && $_POST['IMPORT_OPTION']==="3") {
|
||||||
|
$objectsToImport = [];
|
||||||
|
$objects = (isset($data['objects'])) ? explode('|', $data['objects']) : "";
|
||||||
|
$ids = new \ProcessMaker\BusinessModel\Migrator\ExportObjects();
|
||||||
|
$objects = $ids->getIdObjectList($objects);
|
||||||
|
foreach ($objects as $object) {
|
||||||
|
$objectsToImport[] = (object)array('id' => $object, 'action' => 'replace');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (isset($_POST['objectsToImport']) && sizeof(G::json_decode($_POST['objectsToImport']))){
|
if (isset($_POST['objectsToImport']) && sizeof(G::json_decode($_POST['objectsToImport']))){
|
||||||
$objectsToImport = G::json_decode($_POST['objectsToImport']);
|
$objectsToImport = G::json_decode($_POST['objectsToImport']);
|
||||||
}
|
}
|
||||||
$prjUid = $importer->import($option, $optionGroup, null, $objectsToImport);
|
$prjUid = $importer->import($option, $optionGroup, null, $objectsToImport);
|
||||||
|
|
||||||
G::LoadClass( 'Process' );
|
G::LoadClass( 'Process' );
|
||||||
$oProcess = new Process();
|
$oProcess = new Process();
|
||||||
$processData = $oProcess->load( $prjUid );
|
$processData = $oProcess->load( $prjUid );
|
||||||
|
|||||||
@@ -401,11 +401,11 @@ abstract class Importer
|
|||||||
// Build BPMN project struct
|
// Build BPMN project struct
|
||||||
$project = $tables["project"][0];
|
$project = $tables["project"][0];
|
||||||
$diagram = $tables["diagram"][0];
|
$diagram = $tables["diagram"][0];
|
||||||
$diagram["activities"] = $tables["activity"];
|
$diagram["activities"] = (isset($tables["activity"]))? $tables["activity"] : array();
|
||||||
$diagram["artifacts"] = (isset($tables["artifact"]))? $tables["artifact"] : array();
|
$diagram["artifacts"] = (isset($tables["artifact"]))? $tables["artifact"] : array();
|
||||||
$diagram["events"] = $tables["event"];
|
$diagram["events"] = (isset($tables["event"]))? $tables["event"] : array();
|
||||||
$diagram["flows"] = $tables["flow"];
|
$diagram["flows"] = (isset($tables["flow"]))? $tables["flow"] : array();
|
||||||
$diagram["gateways"] = $tables["gateway"];
|
$diagram["gateways"] = (isset($tables["gateway"]))? $tables["gateway"]: array();
|
||||||
$diagram["data"] = (isset($tables["data"]))? $tables["data"] : array();
|
$diagram["data"] = (isset($tables["data"]))? $tables["data"] : array();
|
||||||
$diagram["participants"] = (isset($tables["participant"]))? $tables["participant"] : array();
|
$diagram["participants"] = (isset($tables["participant"]))? $tables["participant"] : array();
|
||||||
$diagram["laneset"] = (isset($tables["laneset"]))? $tables["laneset"] : array();
|
$diagram["laneset"] = (isset($tables["laneset"]))? $tables["laneset"] : array();
|
||||||
@@ -433,58 +433,62 @@ abstract class Importer
|
|||||||
|
|
||||||
public function doImport($generateUid = true)
|
public function doImport($generateUid = true)
|
||||||
{
|
{
|
||||||
$arrayBpmnTables = $this->importData["tables"]["bpmn"];
|
try {
|
||||||
$arrayWorkflowTables = $this->importData["tables"]["workflow"];
|
$arrayBpmnTables = $this->importData["tables"]["bpmn"];
|
||||||
$arrayWorkflowFiles = $this->importData["files"]["workflow"];
|
$arrayWorkflowTables = $this->importData["tables"]["workflow"];
|
||||||
|
$arrayWorkflowFiles = $this->importData["files"]["workflow"];
|
||||||
|
|
||||||
//Import BPMN tables
|
//Import BPMN tables
|
||||||
$result = $this->importBpmnTables($arrayBpmnTables, $generateUid);
|
$result = $this->importBpmnTables($arrayBpmnTables, $generateUid);
|
||||||
|
|
||||||
$projectUidOld = $arrayBpmnTables["project"][0]["prj_uid"];
|
$projectUidOld = $arrayBpmnTables["project"][0]["prj_uid"];
|
||||||
$projectUid = ($generateUid)? $result[0]["new_uid"] : $result;
|
$projectUid = ($generateUid) ? $result[0]["new_uid"] : $result;
|
||||||
|
|
||||||
//Import workflow tables
|
//Import workflow tables
|
||||||
if ($generateUid) {
|
if ($generateUid) {
|
||||||
$result[0]["object"] = "project";
|
$result[0]["object"] = "project";
|
||||||
$result[0]["old_uid"] = $projectUidOld;
|
$result[0]["old_uid"] = $projectUidOld;
|
||||||
$result[0]["new_uid"] = $projectUid;
|
$result[0]["new_uid"] = $projectUid;
|
||||||
|
|
||||||
$workflow = new \ProcessMaker\Project\Workflow();
|
$workflow = new \ProcessMaker\Project\Workflow();
|
||||||
|
|
||||||
list($arrayWorkflowTables, $arrayWorkflowFiles) = $workflow->updateDataUidByArrayUid($arrayWorkflowTables, $arrayWorkflowFiles, $result);
|
list($arrayWorkflowTables, $arrayWorkflowFiles) = $workflow->updateDataUidByArrayUid($arrayWorkflowTables, $arrayWorkflowFiles, $result);
|
||||||
}
|
|
||||||
|
|
||||||
$this->importWfTables($arrayWorkflowTables);
|
|
||||||
|
|
||||||
//Import workflow files
|
|
||||||
$this->importWfFiles($arrayWorkflowFiles);
|
|
||||||
|
|
||||||
//Update
|
|
||||||
$workflow = \ProcessMaker\Project\Workflow::load($projectUid);
|
|
||||||
|
|
||||||
foreach ($arrayWorkflowTables["tasks"] as $key => $value) {
|
|
||||||
$arrayTaskData = $value;
|
|
||||||
|
|
||||||
if (!in_array($arrayTaskData["TAS_TYPE"], array("GATEWAYTOGATEWAY", "WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT", "START-TIMER-EVENT", "INTERMEDIATE-CATCH-TIMER-EVENT", "END-EMAIL-EVENT", "INTERMEDIATE-EMAIL-EVENT"))) {
|
|
||||||
$result = $workflow->updateTask($arrayTaskData["TAS_UID"], $arrayTaskData);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->importWfTables($arrayWorkflowTables);
|
||||||
|
|
||||||
|
//Import workflow files
|
||||||
|
$this->importWfFiles($arrayWorkflowFiles);
|
||||||
|
|
||||||
|
//Update
|
||||||
|
$workflow = \ProcessMaker\Project\Workflow::load($projectUid);
|
||||||
|
|
||||||
|
foreach ($arrayWorkflowTables["tasks"] as $key => $value) {
|
||||||
|
$arrayTaskData = $value;
|
||||||
|
|
||||||
|
if (!in_array($arrayTaskData["TAS_TYPE"], array("GATEWAYTOGATEWAY", "WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT", "START-TIMER-EVENT", "INTERMEDIATE-CATCH-TIMER-EVENT", "END-EMAIL-EVENT", "INTERMEDIATE-EMAIL-EVENT"))) {
|
||||||
|
$result = $workflow->updateTask($arrayTaskData["TAS_UID"], $arrayTaskData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
unset($arrayWorkflowTables["process"]["PRO_CREATE_USER"]);
|
||||||
|
unset($arrayWorkflowTables["process"]["PRO_CREATE_DATE"]);
|
||||||
|
unset($arrayWorkflowTables["process"]["PRO_UPDATE_DATE"]);
|
||||||
|
unset($arrayWorkflowTables["process"]["PRO_CATEGORY"]);
|
||||||
|
unset($arrayWorkflowTables["process"]["PRO_CATEGORY_LABEL"]);
|
||||||
|
|
||||||
|
$workflow->update($arrayWorkflowTables["process"]);
|
||||||
|
|
||||||
|
//Process-Files upgrade
|
||||||
|
$filesManager = new \ProcessMaker\BusinessModel\FilesManager();
|
||||||
|
|
||||||
|
$filesManager->processFilesUpgrade($projectUid);
|
||||||
|
|
||||||
|
//Return
|
||||||
|
return $projectUid;
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
throw $e;
|
||||||
}
|
}
|
||||||
|
|
||||||
unset($arrayWorkflowTables["process"]["PRO_CREATE_USER"]);
|
|
||||||
unset($arrayWorkflowTables["process"]["PRO_CREATE_DATE"]);
|
|
||||||
unset($arrayWorkflowTables["process"]["PRO_UPDATE_DATE"]);
|
|
||||||
unset($arrayWorkflowTables["process"]["PRO_CATEGORY"]);
|
|
||||||
unset($arrayWorkflowTables["process"]["PRO_CATEGORY_LABEL"]);
|
|
||||||
|
|
||||||
$workflow->update($arrayWorkflowTables["process"]);
|
|
||||||
|
|
||||||
//Process-Files upgrade
|
|
||||||
$filesManager = new \ProcessMaker\BusinessModel\FilesManager();
|
|
||||||
|
|
||||||
$filesManager->processFilesUpgrade($projectUid);
|
|
||||||
|
|
||||||
//Return
|
|
||||||
return $projectUid;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1177,8 +1177,56 @@ function exportImportProcessObjects(typeAction)
|
|||||||
}
|
}
|
||||||
importProcessGlobal.objectsToImport = processObjectsArray;
|
importProcessGlobal.objectsToImport = processObjectsArray;
|
||||||
Ext.getCmp('objectsToImport').setValue(processObjectsArray);
|
Ext.getCmp('objectsToImport').setValue(processObjectsArray);
|
||||||
Ext.getCmp('buttonUpload').el.dom.click();
|
|
||||||
granularWindow.close();
|
var uploader = Ext.getCmp('formUploader');
|
||||||
|
uploader.getForm().setValues({"objectsToImport":processObjectsArray});
|
||||||
|
if (uploader.getForm().isValid()) {
|
||||||
|
uploader.getForm().submit({
|
||||||
|
url : 'processes_Import_Ajax',
|
||||||
|
waitMsg : _('ID_UPLOADING_PROCESS_FILE'),
|
||||||
|
waitTitle : " ",
|
||||||
|
timeout: 3600,
|
||||||
|
success: function(o, resp) {
|
||||||
|
var resp_ = Ext.util.JSON.decode(resp.response.responseText);
|
||||||
|
var sNewProUid = resp_.sNewProUid;
|
||||||
|
if (resp_.ExistGroupsInDatabase == 0) {
|
||||||
|
if (typeof(resp_.project_type) != "undefined" && resp_.project_type == "bpmn") {
|
||||||
|
if (typeof(resp_.project_type_aux) != "undefined" && resp_.project_type_aux == "NORMAL") {
|
||||||
|
importProcessCallbackFile = false;
|
||||||
|
}
|
||||||
|
var goTo = importProcessCallbackFile ? importProcessCallbackFile : "../designer?prj_uid=";
|
||||||
|
openWindowIfIE(goTo + sNewProUid);
|
||||||
|
} else {
|
||||||
|
window.location.href = "processes_Map?PRO_UID=" + sNewProUid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
affectedGroups = resp_.affectedGroups;
|
||||||
|
importProcessGlobal.proFileName = resp_.proFileName;
|
||||||
|
importProcessGlobal.groupBeforeAccion = resp_.groupBeforeAccion;
|
||||||
|
importProcessGlobal.sNewProUid = resp_.sNewProUid;
|
||||||
|
importProcessGlobal.importOption = resp_.importOption;
|
||||||
|
importProcessExistGroup();
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
failure : function(o, resp) {
|
||||||
|
var msg = resp.result ? resp.result.msg : resp.response.responseText;
|
||||||
|
Ext.getCmp('objectsToImport').setValue("");
|
||||||
|
w.close();
|
||||||
|
Ext.MessageBox.show({
|
||||||
|
title : _('ID_ERROR'),
|
||||||
|
msg : msg,
|
||||||
|
buttons : Ext.MessageBox.OK,
|
||||||
|
animEl : 'mb9',
|
||||||
|
fn : function(){},
|
||||||
|
icon : Ext.MessageBox.ERROR
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
@@ -1592,25 +1640,30 @@ importProcessExistProcess = function()
|
|||||||
success: function(o, resp) {
|
success: function(o, resp) {
|
||||||
var resp_ = Ext.util.JSON.decode(resp.response.responseText);
|
var resp_ = Ext.util.JSON.decode(resp.response.responseText);
|
||||||
var sNewProUid = resp_.sNewProUid;
|
var sNewProUid = resp_.sNewProUid;
|
||||||
|
if(resp_.isGranularImport) {
|
||||||
if (resp_.ExistGroupsInDatabase == 0) {
|
importProcessGlobal.isGranularImport = resp_.isGranularImport;
|
||||||
if (typeof(resp_.project_type) != "undefined" && resp_.project_type == "bpmn") {
|
importProcessGlobal.objectGranularImport = resp_.objectGranularImport;
|
||||||
if (typeof(resp_.project_type_aux) != "undefined" && resp_.project_type_aux == "NORMAL") {
|
exportImportProcessObjects('import');
|
||||||
importProcessCallbackFile = false;
|
} else {
|
||||||
|
if (resp_.ExistGroupsInDatabase == 0) {
|
||||||
|
if (typeof(resp_.project_type) != "undefined" && resp_.project_type == "bpmn") {
|
||||||
|
if (typeof(resp_.project_type_aux) != "undefined" && resp_.project_type_aux == "NORMAL") {
|
||||||
|
importProcessCallbackFile = false;
|
||||||
|
}
|
||||||
|
var goTo = importProcessCallbackFile ? importProcessCallbackFile : "../designer?prj_uid=";
|
||||||
|
openWindowIfIE(goTo + sNewProUid);
|
||||||
|
} else {
|
||||||
|
window.location.href = "processes_Map?PRO_UID=" + sNewProUid;
|
||||||
}
|
}
|
||||||
var goTo = importProcessCallbackFile ? importProcessCallbackFile : "../designer?prj_uid=";
|
|
||||||
openWindowIfIE(goTo + sNewProUid);
|
|
||||||
} else {
|
|
||||||
window.location.href = "processes_Map?PRO_UID=" + sNewProUid;
|
|
||||||
}
|
}
|
||||||
}
|
else {
|
||||||
else {
|
affectedGroups = resp_.affectedGroups;
|
||||||
affectedGroups = resp_.affectedGroups;
|
importProcessGlobal.proFileName = resp_.proFileName;
|
||||||
importProcessGlobal.proFileName = resp_.proFileName;
|
importProcessGlobal.groupBeforeAccion = resp_.groupBeforeAccion;
|
||||||
importProcessGlobal.groupBeforeAccion = resp_.groupBeforeAccion;
|
importProcessGlobal.sNewProUid = resp_.sNewProUid;
|
||||||
importProcessGlobal.sNewProUid = resp_.sNewProUid;
|
importProcessGlobal.importOption = resp_.importOption;
|
||||||
importProcessGlobal.importOption = resp_.importOption;
|
importProcessExistGroup();
|
||||||
importProcessExistGroup();
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
failure : function(o, resp) {
|
failure : function(o, resp) {
|
||||||
|
|||||||
Reference in New Issue
Block a user