From d10e3a4e2976d798c55f4c7436abb94ad7629aa4 Mon Sep 17 00:00:00 2001 From: dheeyi Date: Tue, 22 Mar 2016 16:32:33 -0400 Subject: [PATCH 1/2] MT-28 MT-28 MT-28 --- workflow/engine/classes/class.processes.php | 5 +- .../Migrator/AssignmentRulesMigrator.php | 7 ++- .../Migrator/DBConnectionMigrator.php | 14 +++-- .../Migrator/DynaformsMigrator.php | 14 +++-- .../BusinessModel/Migrator/FilesMigrator.php | 31 +++++++---- .../Migrator/GranularImporter.php | 52 ++++++++++--------- .../Migrator/InputDocumentsMigrator.php | 14 +++-- .../BusinessModel/Migrator/NullMigrator.php | 2 +- .../Migrator/OutputDocumentsMigrator.php | 14 +++-- .../Migrator/PermissionsMigrator.php | 17 +++++- .../Migrator/ProcessDefinitionMigrator.php | 2 +- .../Migrator/ReportTablesMigrator.php | 18 ++++++- .../Migrator/SupervisorsMigrator.php | 17 +++++- .../Migrator/SupervisorsObjectsMigrator.php | 17 +++++- .../Migrator/TemplatesMigrator.php | 20 ++++--- .../Migrator/TriggersMigrator.php | 12 ++++- .../Migrator/VariablesMigrator.php | 3 +- 17 files changed, 190 insertions(+), 69 deletions(-) diff --git a/workflow/engine/classes/class.processes.php b/workflow/engine/classes/class.processes.php index 9f85e84be..4621dc81c 100755 --- a/workflow/engine/classes/class.processes.php +++ b/workflow/engine/classes/class.processes.php @@ -2599,6 +2599,7 @@ class Processes /** * @param $aStepSupervisor + * @throws Exception */ public function updateStepSupervisorRows ($aStepSupervisor) { @@ -2717,6 +2718,7 @@ class Processes /** * @param $aPermission + * @throws Exception */ public function createObjectPermissionRows ($aPermission) { @@ -2735,6 +2737,7 @@ class Processes /** * @param $aPermission + * @throws Exception */ public function updateObjectPermissionRows ($aPermission) { @@ -3925,7 +3928,7 @@ class Processes * @param array $arrayData * @throws Exception */ - public function updateFilesManager(array $arrayData) + public function updateFilesManager($processUid, array $arrayData) { try { $filesManager = new \ProcessMaker\BusinessModel\FilesManager(); diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/AssignmentRulesMigrator.php b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/AssignmentRulesMigrator.php index 6c705e1a3..a3041589c 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/AssignmentRulesMigrator.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/AssignmentRulesMigrator.php @@ -27,7 +27,12 @@ class AssignmentRulesMigrator implements Importable, Exportable // TODO: Implement beforeImport() method. } - public function import($data) + /** + * @param $data + * @param $replace + * @throws ImportException + */ + public function import($data, $replace) { try { $this->processes->createTaskRows($data); diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/DBConnectionMigrator.php b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/DBConnectionMigrator.php index f4848c28c..bbe9ef452 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/DBConnectionMigrator.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/DBConnectionMigrator.php @@ -25,13 +25,21 @@ class DBConnectionMigrator implements Importable, Exportable // TODO: Implement beforeImport() method. } - public function import($data) + /** + * @param $data + * @param $replace + */ + public function import($data, $replace) { try { - $this->processes->createDBConnectionsRows($data); + if ($replace) { + $this->processes->createDBConnectionsRows($data); + } else { + $this->processes->updateDBConnectionsRows($data); + } } catch (\Exception $e) { \Logger::log($e->getMessage()); - throw new ImportException($e->getMessage()); + throwException(new ImportException($e->getMessage())); } } diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/DynaformsMigrator.php b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/DynaformsMigrator.php index 9e0100363..1c3c74fd0 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/DynaformsMigrator.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/DynaformsMigrator.php @@ -24,13 +24,21 @@ class DynaformsMigrator implements Importable, Exportable // TODO: Implement beforeImport() method. } - public function import($data) + /** + * @param $data + * @param $replace + */ + public function import($data, $replace) { try { - $this->processes->createDynaformRows($data); + if ($replace) { + $this->processes->createDynaformRows($data); + } else { + $this->processes->updateDynaformRows($data); + } } catch (\Exception $e) { \Logger::log($e->getMessage()); - throw new ImportException($e->getMessage()); + throwException(new ImportException($e->getMessage())); } } diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/FilesMigrator.php b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/FilesMigrator.php index 8f7d7ceef..03c033a56 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/FilesMigrator.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/FilesMigrator.php @@ -29,29 +29,38 @@ class FilesMigrator implements Importable, Exportable // TODO: Implement beforeImport() method. } - public function import($data) + /** + * @param $data + * @param $replace + * @throws ImportException + */ + public function import($data, $replace) { try { $aTable = $data['TABLE']; foreach ($aTable as $value) { - if($value['PRF_EDITABLE'] !== 1){ - $this->processes->createFilesManager($value['PRO_UID'],array($value)); + if ($value['PRF_EDITABLE'] !== 1) { + if ($replace) { + $this->processes->createFilesManager($value['PRO_UID'], array($value)); + } else { + $this->processes->updateFilesManager($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'){ + if (strtoupper($target) === 'PUBLIC') { foreach ($files as $file) { - $filename = $basePath . ((isset($file["file_path"]))? $file["file_path"] : $file["filepath"]); - $path = dirname($filename); + $filename = $basePath . ((isset($file["file_path"])) ? $file["file_path"] : $file["filepath"]); + $path = dirname($filename); - if (!is_dir($path)) { - Util\Common::mk_dir($path, 0775); - } + 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); } } } diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/GranularImporter.php b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/GranularImporter.php index 69903be8e..be4113a53 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/GranularImporter.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/GranularImporter.php @@ -22,36 +22,37 @@ class GranularImporter /** * Load Objects List Selected */ - public function loadObjectsListSelected($data, $aGranular) { + public function loadObjectsListSelected($data, $aGranular) + { $objectList = array(); - if(in_array('PROCESSDEFINITION', $aGranular)){ + if (in_array('PROCESSDEFINITION', $aGranular)) { $objectList['PROCESSDEFINITION'] = $this->structureBpmnData($data['tables']['bpmn']); } - if(in_array('ASSIGNMENTRULES', $aGranular)){ + if (in_array('ASSIGNMENTRULES', $aGranular)) { $objectList['ASSIGNMENTRULES'] = $data['tables']['workflow']['tasks']; } - if(in_array('VARIABLES', $aGranular)){ + if (in_array('VARIABLES', $aGranular)) { $objectList['VARIABLES'] = $data['tables']['workflow']['processVariables']; } - if(in_array('DYNAFORMS', $aGranular)){ + if (in_array('DYNAFORMS', $aGranular)) { $objectList['DYNAFORMS'] = $data['tables']['workflow']['dynaforms']; } - if(in_array('INPUTDOCUMENTS', $aGranular)){ + if (in_array('INPUTDOCUMENTS', $aGranular)) { $objectList['INPUTDOCUMENTS'] = $data['tables']['workflow']['inputs']; } - if(in_array('OUTPUTDOCUMENTS', $aGranular)){ + if (in_array('OUTPUTDOCUMENTS', $aGranular)) { $objectList['OUTPUTDOCUMENTS'] = $data['tables']['workflow']['outputs']; } - if(in_array('TRIGGERS', $aGranular)){ + if (in_array('TRIGGERS', $aGranular)) { $objectList['TRIGGERS'] = $data['tables']['workflow']['triggers']; } - if(in_array('TEMPLATES', $aGranular)){ + if (in_array('TEMPLATES', $aGranular)) { $objectList['TEMPLATES']['TABLE'] = $data['tables']['workflow']['filesManager']; - $objectList['TEMPLATES']['PATH'] = $data['files']['workflow']; + $objectList['TEMPLATES']['PATH'] = $data['files']['workflow']; } - if(in_array('FILES', $aGranular)){ + if (in_array('FILES', $aGranular)) { $objectList['FILES']['TABLE'] = $data['tables']['workflow']['filesManager']; - $objectList['FILES']['PATH'] = $data['files']['workflow']; + $objectList['FILES']['PATH'] = $data['files']['workflow']; } return $objectList; } @@ -59,21 +60,22 @@ class GranularImporter /** * Update the structure from File */ - public function structureBpmnData(array $tables){ + public function structureBpmnData(array $tables) + { $project = $tables["project"][0]; $diagram = $tables["diagram"][0]; $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["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]; return $project; } @@ -85,7 +87,7 @@ class GranularImporter try { foreach ($objectList as $key => $data) { $objClass = $this->factory->create($key); - if(is_object($objClass)) { + if (is_object($objClass)) { $migratorData = $objClass->import($data); } } diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/InputDocumentsMigrator.php b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/InputDocumentsMigrator.php index 409dbe766..8592ff62b 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/InputDocumentsMigrator.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/InputDocumentsMigrator.php @@ -25,13 +25,21 @@ class InputDocumentsMigrator implements Importable, Exportable // TODO: Implement beforeImport() method. } - public function import($data) + /** + * @param $data + * @param $replace + */ + public function import($data, $replace) { try { - $this->processes->createInputRows($data); + if ($replace) { + $this->processes->createInputRows($data); + } else { + $this->processes->updateInputRows($data); + } } catch (\Exception $e) { \Logger::log($e->getMessage()); - throw new ImportException($e->getMessage()); + throwException(new ImportException($e->getMessage())); } } diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/NullMigrator.php b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/NullMigrator.php index 7e08e39ca..394b79da6 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/NullMigrator.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/NullMigrator.php @@ -31,7 +31,7 @@ class NullMigrator implements Importable, Exportable // TODO: Implement beforeImport() method. } - public function import($data) + public function import($data, $replace) { // TODO: Implement import() method. } diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/OutputDocumentsMigrator.php b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/OutputDocumentsMigrator.php index 7e4c111c0..88a90b5f2 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/OutputDocumentsMigrator.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/OutputDocumentsMigrator.php @@ -27,13 +27,21 @@ class OutputDocumentsMigrator implements Importable, Exportable // TODO: Implement beforeImport() method. } - public function import($data) + /** + * @param $data + * @param $replace + */ + public function import($data, $replace) { try { - $this->processes->createOutputRows($data); + if ($replace) { + $this->processes->createOutputRows($data); + } else { + $this->processes->updateOutputRows($data); + } } catch (\Exception $e) { \Logger::log($e->getMessage()); - throw new ImportException($e->getMessage()); + throwException(new ImportException($e->getMessage())); } } diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/PermissionsMigrator.php b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/PermissionsMigrator.php index 5f81cdefd..3703aa672 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/PermissionsMigrator.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/PermissionsMigrator.php @@ -26,9 +26,22 @@ class PermissionsMigrator implements Importable, Exportable // TODO: Implement beforeImport() method. } - public function import($data) + /** + * @param $data + * @param $replace + */ + public function import($data, $replace) { - + try { + if ($replace) { + $this->processes->createObjectPermissionsRows($data); + } else { + $this->processes->updateObjectPermissionRows($data); + } + } catch (\Exception $e) { + \Logger::log($e->getMessage()); + throwException(new ImportException($e->getMessage())); + } } public function afterImport($data) diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/ProcessDefinitionMigrator.php b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/ProcessDefinitionMigrator.php index 3318492fd..87cfec374 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/ProcessDefinitionMigrator.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/ProcessDefinitionMigrator.php @@ -81,7 +81,7 @@ class ProcessDefinitionMigrator implements Importable, Exportable $oData->tasks = $this->processes->getTaskRows($prj_uid); $oDataTask = new \StdClass(); - $oDataTask->taskusers = $this->getTaskUserRows( $oData->tasks ); + $oDataTask->taskusers = $this->getTaskUserRows($oData->tasks); $oData->routes = $this->processes->getRouteRows($prj_uid); $oData->lanes = $this->processes->getLaneRows($prj_uid); diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/ReportTablesMigrator.php b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/ReportTablesMigrator.php index 1f6d1e33f..5b8f3fded 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/ReportTablesMigrator.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/ReportTablesMigrator.php @@ -25,9 +25,23 @@ class ReportTablesMigrator implements Importable, Exportable // TODO: Implement beforeImport() method. } - public function import($data) + /** + * @param $data + * @param $replace + */ + public function import($data, $replace) { - + try { + $aReportTablesVars = array(); + if ($replace) { + $this->processes->createReportTables($data, $aReportTablesVars); + } else { + $this->processes->updateReportTables($data, $aReportTablesVars); + } + } catch (\Exception $e) { + \Logger::log($e->getMessage()); + throwException(new ImportException($e->getMessage())); + } } public function afterImport($data) diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/SupervisorsMigrator.php b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/SupervisorsMigrator.php index 567f331d0..a457ce955 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/SupervisorsMigrator.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/SupervisorsMigrator.php @@ -26,9 +26,22 @@ class SupervisorsMigrator implements Importable, Exportable // TODO: Implement beforeImport() method. } - public function import($data) + /** + * @param $data + * @param $replace + */ + public function import($data, $replace) { - + try { + if ($replace) { + $this->processes->createProcessUser($data); + } else { + $this->processes->updateProcessUser($data); + } + } catch (\Exception $e) { + \Logger::log($e->getMessage()); + throwException(new ImportException($e->getMessage())); + } } public function afterImport($data) diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/SupervisorsObjectsMigrator.php b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/SupervisorsObjectsMigrator.php index be3722fca..0c17b73fd 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/SupervisorsObjectsMigrator.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/SupervisorsObjectsMigrator.php @@ -25,9 +25,22 @@ class SupervisorsObjectsMigrator implements Importable, Exportable // TODO: Implement beforeImport() method. } - public function import($data) + /** + * @param $data + * @param $replace + */ + public function import($data, $replace) { - + try { + if ($replace) { + $this->processes->createStepSupervisorRows($data); + } else { + $this->processes->updateStepSupervisorRows($data); + } + } catch (\Exception $e) { + \Logger::log($e->getMessage()); + throwException(new ImportException($e->getMessage())); + } } public function afterImport($data) diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/TemplatesMigrator.php b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/TemplatesMigrator.php index 7dce9a5df..d92e5393c 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/TemplatesMigrator.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/TemplatesMigrator.php @@ -27,22 +27,30 @@ class TemplatesMigrator implements Importable, Exportable // TODO: Implement beforeImport() method. } - public function import($data) + /** + * @param $data + * @param $replace + * @throws ImportException + */ + public function import($data, $replace) { try { - //TABLE $aTable = $data['TABLE']; foreach ($aTable as $value) { - if($value['PRF_EDITABLE'] === 1){ - $this->processes->createFilesManager($value['PRO_UID'],array($value)); + if ($value['PRF_EDITABLE'] === 1) { + if ($replace) { + $this->processes->createFilesManager($value['PRO_UID'], array($value)); + } else { + $this->processes->updateFilesManager($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'){ + if (strtoupper($target) === 'TEMPLATES') { foreach ($files as $file) { - $filename = $basePath . ((isset($file["file_path"]))? $file["file_path"] : $file["filepath"]); + $filename = $basePath . ((isset($file["file_path"])) ? $file["file_path"] : $file["filepath"]); $path = dirname($filename); if (!is_dir($path)) { diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/TriggersMigrator.php b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/TriggersMigrator.php index ba2ccbd50..4f52b131d 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/TriggersMigrator.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/TriggersMigrator.php @@ -27,10 +27,18 @@ class TriggersMigrator implements Importable, Exportable // TODO: Implement beforeImport() method. } - public function import($data) + /** + * @param $data + * @param $replace + */ + public function import($data, $replace) { try { - $this->processes->createTriggerRows($data); + if ($replace) { + $this->processes->createTriggerRows($data); + } else { + $this->processes->updateTriggerRows($data); + } } catch (\Exception $e) { \Logger::log($e->getMessage()); throwException(new ImportException($e->getMessage())); diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/VariablesMigrator.php b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/VariablesMigrator.php index d861a373b..9c0ea59c8 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/VariablesMigrator.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/VariablesMigrator.php @@ -29,8 +29,9 @@ class VariablesMigrator implements Importable, Exportable } /** - * Imports the process variables * @param $data + * @param $replace + * @throws ImportException */ public function import($data, $replace) { From 62851d499e172f7123418e670de66a1a40a3a6d8 Mon Sep 17 00:00:00 2001 From: dheeyi Date: Wed, 23 Mar 2016 13:28:28 -0400 Subject: [PATCH 2/2] MT-28 manejo de respuestas ajax... para la visulaizacion del listObject --- .../processes/processes_Import_Ajax.php | 64 +++++++++---------- .../BusinessModel/Migrator/ExportObjects.php | 23 +++++++ .../src/ProcessMaker/Importer/Importer.php | 28 ++++---- .../src/ProcessMaker/Importer/XmlImporter.php | 6 +- 4 files changed, 68 insertions(+), 53 deletions(-) diff --git a/workflow/engine/methods/processes/processes_Import_Ajax.php b/workflow/engine/methods/processes/processes_Import_Ajax.php index f41083345..ba3991ea7 100644 --- a/workflow/engine/methods/processes/processes_Import_Ajax.php +++ b/workflow/engine/methods/processes/processes_Import_Ajax.php @@ -27,6 +27,18 @@ use \ProcessMaker\Importer\XmlImporter; ini_set("max_execution_time", 0); $affectedGroups = array(); +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', '>')){ + $objectImport = (isset($data['objects'])) ? explode('|', $data['objects']) : ""; + $ids = new \ProcessMaker\BusinessModel\Migrator\ExportObjects(); + $objectImport = $ids->getIdObjectList($objectImport); + $granularImport = true; + } +} /*----------------------------------********---------------------------------*/ if (PMLicensedFeatures::getSingleton()->verifyfeature("B0oWlBLY3hHdWY0YUNpZEtFQm5CeTJhQlIwN3IxMEkwaG4=") && isset($_FILES["PROCESS_FILENAME"]) && @@ -61,10 +73,6 @@ if (PMLicensedFeatures::getSingleton()->verifyfeature("B0oWlBLY3hHdWY0YUNpZEtFQm $arrayTrigger = $data["tables"]["workflow"]["triggers"]; $projectTitle = $data["tables"]["bpmn"]["project"][0]["prj_name"]; } - if(isset($data['objects'])){ - $objectImport = $data['objects']; - $granularImport = 'YES'; - } break; } @@ -124,21 +132,25 @@ if (isset($_FILES["PROCESS_FILENAME"]) && try { $opt1 = XmlImporter::IMPORT_OPTION_CREATE_NEW; $opt2 = XmlImporter::GROUP_IMPORT_OPTION_CREATE_NEW; - if($_POST['generateUid'] === 'generate') { - $generateUid = true; - $prjUid = $importer->import($opt1,$opt2,$generateUid); - } elseif($_POST['generateUid'] === 'keep') { - $generateUid = false; - $prjUid = $importer->import($opt1,$opt2,$generateUid); - } else { - $prjUid = $importer->import(); + $prjUid = ''; + $proType = ''; + if(isset($_POST['objectsToImport']) && sizeof(G::json_decode($_POST['objectsToImport']))){ + $objectsToImport = G::json_decode($_POST['objectsToImport']); + if($_POST['generateUid'] === 'generate') { + $generateUid = true; + $prjUid = $importer->import($opt1,$opt2,$generateUid); + } elseif($_POST['generateUid'] === 'keep') { + $generateUid = false; + $prjUid = $importer->import($opt1,$opt2,$generateUid); + } else { + $prjUid = $importer->import($opt1,$opt2, null, $objectsToImport); + } + G::LoadClass( 'Process' ); + $oProcess = new Process(); + $processData = $oProcess->load( $prjUid ); + $proType = $processData["PRO_TYPE"]; } - G::LoadClass( 'Process' ); - $oProcess = new Process(); - $processData = $oProcess->load( $prjUid ); - $proType = $processData["PRO_TYPE"]; - $result = array( "success" => true, "catchMessage" => '', @@ -148,8 +160,8 @@ if (isset($_FILES["PROCESS_FILENAME"]) && "affectedGroups" => '', "sNewProUid" => $prjUid, "project_type" => 'bpmn', - "isGranularImport" => '', - "objectGranularImport" => '', + "isGranularImport" => $granularImport, + "objectGranularImport" => $objectImport, "project_type_aux" => $proType ); } catch (Exception $e) { @@ -217,25 +229,11 @@ if (isset($_POST["PRO_FILENAME"]) && break; } - //Check the Granular Import selected by User - $granularOptions = ''; - $granularImport = 'NO'; - if(isset($_POST["granularOptions"])){ - $granularImport = 'YES'; - $export = new \ProcessMaker\BusinessModel\Migrator\ExportObjects(); - $granularOptions = $export->mapObjectList($_POST["granularOptions"]); - - } - $importer = new XmlImporter(); $importer->setData("usr_uid", $_SESSION["USER_LOGGED"]); $importer->setSourceFile(PATH_DOCUMENT . "input" . PATH_SEP . $_POST["PRO_FILENAME"]); try { - if(version_compare($importer->getVersion(), '3.0', '>')){ - //To do - } - $prjUid = $importer->import($option, $optionGroup, null, $granularImport,$granularOptions); G::LoadClass( 'Process' ); diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/ExportObjects.php b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/ExportObjects.php index 216b5e1f5..a8e1c8fbe 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/ExportObjects.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/ExportObjects.php @@ -63,5 +63,28 @@ class ExportObjects throw $e; } } + + /** + * @param $objects + * @return array + * @throws \Exception + */ + public function getIdObjectList($objects) + { + try { + $idObjectList = array(); + foreach ($this->objectsList as $key => $val) { + $key++; + foreach ($objects as $row) { + if(strtoupper(str_replace(' ', '', $this->objectsList[$key - 1])) === $row){ + array_push($idObjectList, $key); + } + } + } + return $idObjectList; + } catch (\Exception $e) { + throw $e; + } + } } diff --git a/workflow/engine/src/ProcessMaker/Importer/Importer.php b/workflow/engine/src/ProcessMaker/Importer/Importer.php index 7e0cf55cb..2ed4796c2 100755 --- a/workflow/engine/src/ProcessMaker/Importer/Importer.php +++ b/workflow/engine/src/ProcessMaker/Importer/Importer.php @@ -77,7 +77,7 @@ abstract class Importer } } - public function import($option = self::IMPORT_OPTION_CREATE_NEW, $optionGroup = self::GROUP_IMPORT_OPTION_CREATE_NEW, $generateUidFromJs = null, $granularImporter = 'NO', $granularOptions = '') + public function import($option = self::IMPORT_OPTION_CREATE_NEW, $optionGroup = self::GROUP_IMPORT_OPTION_CREATE_NEW, $generateUidFromJs = null, $objectsToImport = '') { $this->prepare(); @@ -170,10 +170,10 @@ abstract class Importer break; case self::IMPORT_OPTION_OVERWRITE: //Shouldn't generate new UID for all objects - if($granularImporter === 'NO'){ + if($objectsToImport === ''){ $this->removeProject(); } else { - if(in_array('PROCESSDEFINITION', $granularOptions)){ + if(in_array('PROCESSDEFINITION', $objectsToImport)){ $this->removeProject(); } } @@ -213,20 +213,14 @@ abstract class Importer } //Granular Import - switch ($granularImporter) { - case '': - throw new \Exception(\G::LoadTranslation("ID_GRANULAR"),self::IMPORTED_PROJECT_DOES_NOT_EXISTS); - break; - case 'YES': - if($granularOptions === 'YES'){ - $granularObj = new \ProcessMaker\BusinessModel\Migrator\GranularImporter(); - $objectList = $granularObj->loadObjectsListSelected($this->importData, $granularOptions); - if(sizeof($objectList)>0){ - $granularObj->import($objectList); - } - return $this->importData['tables']['bpmn']["project"][0]["prj_uid"]; - } - break; + //$granularOptions merge + if($objectsToImport){ + $granularObj = new \ProcessMaker\BusinessModel\Migrator\GranularImporter(); + $objectList = $granularObj->loadObjectsListSelected($this->importData, $objectsToImport); + if(sizeof($objectList)>0){ + $granularObj->import($objectList); + } + return $this->importData['tables']['bpmn']["project"][0]["prj_uid"]; } $result = $this->doImport($generateUid); diff --git a/workflow/engine/src/ProcessMaker/Importer/XmlImporter.php b/workflow/engine/src/ProcessMaker/Importer/XmlImporter.php index a9fd76734..5d4c2444d 100644 --- a/workflow/engine/src/ProcessMaker/Importer/XmlImporter.php +++ b/workflow/engine/src/ProcessMaker/Importer/XmlImporter.php @@ -131,13 +131,13 @@ class XmlImporter extends Importer } } //Get the ProcessObject - $this->objects = (isset($this->metadata['processObject'])) ? $this->metadata['processObject'] : ''; + $this->objects = (isset($this->metadata['export_objects'])) ? $this->metadata['export_objects'] : ''; return array( "tables" => $tables, "files" => array("workflow" => $wfFiles, "bpmn" => array()), - "version" => $this->version, - "objects" => $this->objects + "version" => $this->getVersion(), + "objects" => $this->getObjects() ); }