Merged in dheeyi/processmaker/MT-28 (pull request #3920)
MT-28 Fixes para la importacion
This commit is contained in:
@@ -27,12 +27,12 @@ use \ProcessMaker\Importer\XmlImporter;
|
||||
ini_set("max_execution_time", 0);
|
||||
$affectedGroups = array();
|
||||
|
||||
if(preg_match("/^(?:pm|pmx)$/", pathinfo($_FILES["PROCESS_FILENAME"]["name"], PATHINFO_EXTENSION))){
|
||||
if (preg_match("/^(?:pm|pmx)$/", pathinfo($_FILES["PROCESS_FILENAME"]["name"], PATHINFO_EXTENSION))) {
|
||||
$import = new XmlImporter();
|
||||
$granularImport = false;
|
||||
$objectImport = array();
|
||||
$data = $import->load($_FILES["PROCESS_FILENAME"]["tmp_name"]);
|
||||
if(!version_compare($data['version'], '3.0', '>')){
|
||||
if (!version_compare($data['version'], '3.0', '>')) {
|
||||
$objectImport = (isset($data['objects'])) ? explode('|', $data['objects']) : "";
|
||||
$ids = new \ProcessMaker\BusinessModel\Migrator\ExportObjects();
|
||||
$objectImport = $ids->getIdObjectList($objectImport);
|
||||
@@ -134,21 +134,25 @@ if (isset($_FILES["PROCESS_FILENAME"]) &&
|
||||
$opt2 = XmlImporter::GROUP_IMPORT_OPTION_CREATE_NEW;
|
||||
$prjUid = '';
|
||||
$proType = '';
|
||||
if(isset($_POST['objectsToImport']) && sizeof(G::json_decode($_POST['objectsToImport']))){
|
||||
$_POST['objectsToImport'] = '[{"id":4,"action":"merge"},{"id":7,"action":"replace"},{"id":9,
|
||||
"action":"merge"}]';
|
||||
if (isset($_POST['objectsToImport']) && sizeof(G::json_decode($_POST['objectsToImport']))) {
|
||||
$objectsToImport = G::json_decode($_POST['objectsToImport']);
|
||||
if($_POST['generateUid'] === 'generate') {
|
||||
if ($_POST['generateUid'] === 'generate') {
|
||||
$generateUid = true;
|
||||
$prjUid = $importer->import($opt1,$opt2,$generateUid);
|
||||
} elseif($_POST['generateUid'] === 'keep') {
|
||||
$prjUid = $importer->import($opt1, $opt2, $generateUid);
|
||||
} elseif ($_POST['generateUid'] === 'keep') {
|
||||
$generateUid = false;
|
||||
$prjUid = $importer->import($opt1,$opt2,$generateUid);
|
||||
$prjUid = $importer->import($opt1, $opt2, $generateUid);
|
||||
} else {
|
||||
$prjUid = $importer->import($opt1,$opt2, null, $objectsToImport);
|
||||
$prjUid = $importer->import($opt1, $opt2, null, $objectsToImport);
|
||||
}
|
||||
G::LoadClass( 'Process' );
|
||||
G::LoadClass('Process');
|
||||
$oProcess = new Process();
|
||||
$processData = $oProcess->load( $prjUid );
|
||||
$processData = $oProcess->load($prjUid);
|
||||
$proType = $processData["PRO_TYPE"];
|
||||
$granularImport = false;
|
||||
$objectImport = '';
|
||||
}
|
||||
|
||||
$result = array(
|
||||
@@ -188,8 +192,8 @@ if (isset($_FILES["PROCESS_FILENAME"]) &&
|
||||
"affectedGroups" => !empty($affectedGroups)? $affectedGroups : '',
|
||||
"sNewProUid" => '',
|
||||
"project_type" => 'bpmn',
|
||||
"isGranularImport" => $granularImport,
|
||||
"objectGranularImport" => $objectImport,
|
||||
"isGranularImport" => false,
|
||||
"objectGranularImport" => '',
|
||||
"proFileName" => $_FILES["PROCESS_FILENAME"]["name"],
|
||||
"groupBeforeAccion" => 'uploadFileNewProcess',
|
||||
"importOption" => 0
|
||||
@@ -272,8 +276,8 @@ if (isset($_POST["PRO_FILENAME"]) &&
|
||||
"affectedGroups" => !empty($affectedGroups)? $affectedGroups : '',
|
||||
"sNewProUid" => '',
|
||||
"project_type" => 'bpmn',
|
||||
"isGranularImport" => '',
|
||||
"objectGranularImport" => $objectImport,
|
||||
"isGranularImport" => false,
|
||||
"objectGranularImport" => '',
|
||||
"proFileName" => $_POST["PRO_FILENAME"],
|
||||
"groupBeforeAccion" => "uploadFileNewProcess",
|
||||
"importOption" => (isset($_POST["IMPORT_OPTION"]))? (int)($_POST["IMPORT_OPTION"]) : 0
|
||||
|
||||
@@ -51,6 +51,21 @@ class ExportObjects
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $idObject
|
||||
* @return mixed
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function getObjectName($idObject)
|
||||
{
|
||||
try {
|
||||
return (str_replace(' ', '', $this->objectsList[$idObject - 1]));
|
||||
|
||||
} catch (\Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $objects
|
||||
* @return array
|
||||
|
||||
@@ -23,36 +23,70 @@ class GranularImporter
|
||||
* Load Objects List Selected
|
||||
*/
|
||||
public function loadObjectsListSelected($data, $aGranular)
|
||||
{
|
||||
$listObjectGranular = array();
|
||||
$exportObjects = new ExportObjects();
|
||||
//create structure
|
||||
foreach ($aGranular as $key => $rowObject) {
|
||||
array_push($listObjectGranular, array("name" => strtoupper($exportObjects->getObjectName
|
||||
($rowObject->id)), "data" => "", "value" => $rowObject->action));
|
||||
}
|
||||
//add data
|
||||
foreach ($listObjectGranular as $key => $rowObject) {
|
||||
$listObjectGranular[$key]['data'] = $this->addObjectData($listObjectGranular[$key]['name'], $data);
|
||||
}
|
||||
return $listObjectGranular;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $nameObject
|
||||
* @param $data
|
||||
* @return array
|
||||
*/
|
||||
public function addObjectData($nameObject, $data)
|
||||
{
|
||||
$objectList = array();
|
||||
if (in_array('PROCESSDEFINITION', $aGranular)) {
|
||||
$objectList['PROCESSDEFINITION'] = $this->structureBpmnData($data['tables']['bpmn']);
|
||||
}
|
||||
if (in_array('ASSIGNMENTRULES', $aGranular)) {
|
||||
$objectList['ASSIGNMENTRULES'] = $data['tables']['workflow']['tasks'];
|
||||
}
|
||||
if (in_array('VARIABLES', $aGranular)) {
|
||||
$objectList['VARIABLES'] = $data['tables']['workflow']['processVariables'];
|
||||
}
|
||||
if (in_array('DYNAFORMS', $aGranular)) {
|
||||
$objectList['DYNAFORMS'] = $data['tables']['workflow']['dynaforms'];
|
||||
}
|
||||
if (in_array('INPUTDOCUMENTS', $aGranular)) {
|
||||
$objectList['INPUTDOCUMENTS'] = $data['tables']['workflow']['inputs'];
|
||||
}
|
||||
if (in_array('OUTPUTDOCUMENTS', $aGranular)) {
|
||||
$objectList['OUTPUTDOCUMENTS'] = $data['tables']['workflow']['outputs'];
|
||||
}
|
||||
if (in_array('TRIGGERS', $aGranular)) {
|
||||
$objectList['TRIGGERS'] = $data['tables']['workflow']['triggers'];
|
||||
}
|
||||
if (in_array('TEMPLATES', $aGranular)) {
|
||||
$objectList['TEMPLATES']['TABLE'] = $data['tables']['workflow']['filesManager'];
|
||||
$objectList['TEMPLATES']['PATH'] = $data['files']['workflow'];
|
||||
}
|
||||
if (in_array('FILES', $aGranular)) {
|
||||
$objectList['FILES']['TABLE'] = $data['tables']['workflow']['filesManager'];
|
||||
$objectList['FILES']['PATH'] = $data['files']['workflow'];
|
||||
switch ($nameObject) {
|
||||
case 'PROCESSDEFINITION':
|
||||
$objectList['PROCESSDEFINITION'] = isset($data['tables']['bpmn']) ? $this->structureBpmnData
|
||||
($data['tables']['bpmn']) : '';
|
||||
break;
|
||||
case 'ASSIGNMENTRULES':
|
||||
$objectList['ASSIGNMENTRULES'] = isset($data['tables']['workflow']['tasks']) ?
|
||||
$data['tables']['workflow']['tasks'] : '';
|
||||
break;
|
||||
case 'VARIABLES':
|
||||
$objectList['VARIABLES'] = isset($data['tables']['workflow']['processVariables']) ?
|
||||
$data['tables']['workflow']['processVariables'] : '';
|
||||
break;
|
||||
case 'DYNAFORMS':
|
||||
$objectList['DYNAFORMS'] = isset($data['tables']['workflow']['dynaforms']) ?
|
||||
$data['tables']['workflow']['dynaforms'] : '';
|
||||
break;
|
||||
case 'INPUTDOCUMENTS':
|
||||
$objectList['INPUTDOCUMENTS'] = isset($data['tables']['workflow']['inputs']) ?
|
||||
$data['tables']['workflow']['inputs'] : '';
|
||||
break;
|
||||
case 'OUTPUTDOCUMENTS':
|
||||
$objectList['OUTPUTDOCUMENTS'] = isset($data['tables']['workflow']['outputs']) ?
|
||||
$data['tables']['workflow']['outputs'] : '';
|
||||
break;
|
||||
case 'TRIGGERS':
|
||||
$objectList['TRIGGERS'] = isset($data['tables']['workflow']['triggers']) ?
|
||||
$data['tables']['workflow']['triggers'] : '';
|
||||
break;
|
||||
case 'TEMPLATES':
|
||||
$objectList['TEMPLATES']['TABLE'] = isset($data['tables']['workflow']['filesManager']) ?
|
||||
$data['tables']['workflow']['filesManager'] : '';
|
||||
$objectList['TEMPLATES']['PATH'] = isset($data['files']['workflow']) ? $data['files']['workflow'] : '';
|
||||
break;
|
||||
case 'FILES':
|
||||
$objectList['FILES']['TABLE'] = isset($data['tables']['workflow']['filesManager']) ?
|
||||
$data['tables']['workflow']['filesManager'] : '';
|
||||
$objectList['FILES']['PATH'] = isset($data['files']['workflow']) ? $data['files']['workflow'] : '';
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return $objectList;
|
||||
}
|
||||
@@ -85,10 +119,12 @@ class GranularImporter
|
||||
public function import($objectList)
|
||||
{
|
||||
try {
|
||||
foreach ($objectList as $key => $data) {
|
||||
$objClass = $this->factory->create($key);
|
||||
foreach ($objectList as $data) {
|
||||
$objClass = $this->factory->create($data['name']);
|
||||
if (is_object($objClass)) {
|
||||
$migratorData = $objClass->import($data);
|
||||
$dataImport = $data['data'][$data['name']];
|
||||
$replace = ($data['value'] == 'merge') ? true : false;
|
||||
$migratorData = $objClass->import($dataImport, $replace);
|
||||
}
|
||||
}
|
||||
} catch (ExportException $e) {
|
||||
|
||||
@@ -213,11 +213,10 @@ abstract class Importer
|
||||
}
|
||||
|
||||
//Granular Import
|
||||
//$granularOptions merge
|
||||
if($objectsToImport){
|
||||
if ($objectsToImport !== '') {
|
||||
$granularObj = new \ProcessMaker\BusinessModel\Migrator\GranularImporter();
|
||||
$objectList = $granularObj->loadObjectsListSelected($this->importData, $objectsToImport);
|
||||
if(sizeof($objectList)>0){
|
||||
if (sizeof($objectList) > 0) {
|
||||
$granularObj->import($objectList);
|
||||
}
|
||||
return $this->importData['tables']['bpmn']["project"][0]["prj_uid"];
|
||||
@@ -245,7 +244,7 @@ abstract class Importer
|
||||
|
||||
$this->importData = $this->load();
|
||||
|
||||
$this->validateImportData();
|
||||
//$this->validateImportData();
|
||||
}
|
||||
|
||||
public function setData($key, $value)
|
||||
|
||||
Reference in New Issue
Block a user