diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/FilesMigrator.php b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/FilesMigrator.php index 327123a5e..1d428da53 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/FilesMigrator.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/FilesMigrator.php @@ -32,7 +32,29 @@ class FilesMigrator implements Importable, Exportable public function import($data) { try { - $this->processes->createFilesManager($data[0]['PRO_UID'],$data); + $aTable = $data['TABLE']; + foreach ($aTable as $value) { + if($value['PRF_EDITABLE'] !== 1){ + $this->processes->createFilesManager($value['PRO_UID'],array($value)); + } + } + $aPath = $data['PATH']; + foreach ($aPath as $target => $files) { + $basePath = PATH_DATA . 'sites' . PATH_SEP . SYS_SYS . PATH_SEP . 'public' . PATH_SEP; + if(strtoupper($target) === 'PUBLIC'){ + foreach ($files as $file) { + $filename = $basePath . ((isset($file["file_path"]))? $file["file_path"] : $file["filepath"]); + $path = dirname($filename); + + if (!is_dir($path)) { + Util\Common::mk_dir($path, 0775); + } + + file_put_contents($filename, $file["file_content"]); + chmod($filename, 0775); + } + } + } } catch (\Exception $e) { Logger::log($e); } diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/GranularImporter.php b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/GranularImporter.php index ed40f3764..9a1156b86 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/GranularImporter.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/GranularImporter.php @@ -19,24 +19,67 @@ class GranularImporter $this->factory = new MigratorFactory(); } + /** + * Load Objects List Selected + */ + public function loadObjectsListSelected($data, $aGranular) { + $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']; + } + return $objectList; + } + + /** + * Update the structure from File + */ public function structureBpmnData(array $tables){ $project = $tables["project"][0]; $diagram = $tables["diagram"][0]; - $diagram["activities"] = $tables["activity"]; - $diagram["artifacts"] = (isset($tables["artifact"]))? $tables["artifact"] : array(); - $diagram["events"] = $tables["event"]; - $diagram["flows"] = $tables["flow"]; - $diagram["gateways"] = $tables["gateway"]; - $diagram["data"] = (isset($tables["data"]))? $tables["data"] : array(); + $diagram["activities"] = (isset($tables["activity"])) ? $tables["activity"] : array(); + $diagram["artifacts"] = (isset($tables["artifact"])) ? $tables["artifact"] : array(); + $diagram["events"] = (isset($tables["event"])) ? $tables["event"] : array(); + $diagram["flows"] = (isset($tables["flow"])) ? $tables["flow"] : array(); + $diagram["gateways"] = (isset($tables["gateway"])) ? $tables["gateway"] : array(); + $diagram["data"] = (isset($tables["data"]))? $tables["data"] : array(); $diagram["participants"] = (isset($tables["participant"]))? $tables["participant"] : array(); - $diagram["laneset"] = (isset($tables["laneset"]))? $tables["laneset"] : array(); - $diagram["lanes"] = (isset($tables["lane"]))? $tables["lane"] : array(); - $project["diagrams"] = array($diagram); - $project["prj_author"] = isset($this->data["usr_uid"])? $this->data["usr_uid"]: "00000000000000000000000000000001"; - $project["process"] = $tables["process"][0]; + $diagram["laneset"] = (isset($tables["laneset"]))? $tables["laneset"] : array(); + $diagram["lanes"] = (isset($tables["lane"]))? $tables["lane"] : array(); + $project["diagrams"] = array($diagram); + $project["prj_author"] = isset($this->data["usr_uid"])? $this->data["usr_uid"]: "00000000000000000000000000000001"; + $project["process"] = $tables["process"][0]; return $project; } + /** + * import + */ public function import($objectList) { foreach ($objectList as $key => $data) { diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/ProcessDefinitionMigrator.php b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/ProcessDefinitionMigrator.php index ccaffc91e..e390c61c2 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/ProcessDefinitionMigrator.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/ProcessDefinitionMigrator.php @@ -33,7 +33,7 @@ class ProcessDefinitionMigrator implements Importable, Exportable public function import($data) { try { - return $this->bpmn->createFromStruct($data);; + $this->bpmn->createFromStruct($data, false); } catch (\Exception $e) { return $e->getMessage(); } diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/TemplatesMigrator.php b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/TemplatesMigrator.php index 8d736845c..5a4d9f9aa 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/TemplatesMigrator.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/TemplatesMigrator.php @@ -30,35 +30,28 @@ class TemplatesMigrator implements Importable, Exportable public function import($data) { try { - foreach ($data as $target => $files) { - switch (strtoupper($target)) { - case 'DYNAFORMS': - $basePath = PATH_DYNAFORM; - break; - case 'PUBLIC': - $basePath = PATH_DATA . 'sites' . PATH_SEP . SYS_SYS . PATH_SEP . 'public' . PATH_SEP; - break; - case 'TEMPLATES': - $basePath = PATH_DATA . 'sites' . PATH_SEP . SYS_SYS . PATH_SEP . 'mailTemplates' . PATH_SEP; - break; - default: - $basePath = ''; + //TABLE + $aTable = $data['TABLE']; + foreach ($aTable as $value) { + if($value['PRF_EDITABLE'] === 1){ + $this->processes->createFilesManager($value['PRO_UID'],array($value)); } + } + $aPath = $data['PATH']; + foreach ($aPath as $target => $files) { + $basePath = PATH_DATA . 'sites' . PATH_SEP . SYS_SYS . PATH_SEP . 'mailTemplates' . PATH_SEP; + if(strtoupper($target) === 'TEMPLATES'){ + foreach ($files as $file) { + $filename = $basePath . ((isset($file["file_path"]))? $file["file_path"] : $file["filepath"]); + $path = dirname($filename); - if (empty($basePath)) { - continue; - } + if (!is_dir($path)) { + Util\Common::mk_dir($path, 0775); + } - foreach ($files as $file) { - $filename = $basePath . ((isset($file["file_path"]))? $file["file_path"] : $file["filepath"]); - $path = dirname($filename); - - if (!is_dir($path)) { - Util\Common::mk_dir($path, 0775); + file_put_contents($filename, $file["file_content"]); + chmod($filename, 0775); } - - file_put_contents($filename, $file["file_content"]); - chmod($filename, 0775); } } } catch (\Exception $e) {