From e4bb4ba86e9b23943abfd7a581821c13d9166f67 Mon Sep 17 00:00:00 2001 From: dheeyi Date: Fri, 8 Apr 2016 12:36:01 -0400 Subject: [PATCH] MT-115 Selective Import/Export - Add license key to include it only in enterprise/enterprise edition MT-115 addons feature MT-115 --- .../engine/classes/class.licensedFeatures.php | 18 ++++++++++ workflow/engine/data/mysql/insert.sql | 3 +- .../Migrator/GranularExporter.php | 31 +++++++++-------- .../Migrator/GranularImporter.php | 33 +++++++++++++------ 4 files changed, 61 insertions(+), 24 deletions(-) diff --git a/workflow/engine/classes/class.licensedFeatures.php b/workflow/engine/classes/class.licensedFeatures.php index 3bc51eb8c..619fb1ee4 100644 --- a/workflow/engine/classes/class.licensedFeatures.php +++ b/workflow/engine/classes/class.licensedFeatures.php @@ -282,6 +282,24 @@ class PMLicensedFeatures "type" => "features", "url" => "", "version" => "" + ), + 15 => array(), + 16 => array( + "description" => "Selective Import Export.", + "enabled" => false, + "id" => "selectiveImportExport", + "latest_version" => "", + "log" => null, + "name" => "selectiveImportExport", + "nick" => "selectiveImportExport", + "progress" => 0, + "publisher" => "Colosa", + "release_type" => "localRegistry", + "status" => "ready", + "store" => "00000000000000000000000000010016", + "type" => "features", + "url" => "", + "version" => "" ) ); diff --git a/workflow/engine/data/mysql/insert.sql b/workflow/engine/data/mysql/insert.sql index 5430c4e39..cac89cf4a 100644 --- a/workflow/engine/data/mysql/insert.sql +++ b/workflow/engine/data/mysql/insert.sql @@ -61452,4 +61452,5 @@ INSERT INTO ADDONS_MANAGER (ADDON_DESCRIPTION,ADDON_ID,ADDON_NAME,ADDON_NICK,ADD ('SSO with an LDAP provider.','windowsSSO','windowsSSO','windowsSSO','Colosa','localRegistry','ready','00000000000000000000000000010011','features','','','0'), ('Integration with Gmail','pmGmail','pmGmail','pmGmail','Colosa','localRegistry','ready','00000000000000000000000000010012','features','','','0'), ('User-based Language Management.','userBasedLanguage','userBasedLanguage','userBasedLanguage','Colosa','localRegistry','ready','00000000000000000000000000010013','features','','','0'), -('User-based Time Zone Management.','userBasedTimeZone','userBasedTimeZone','userBasedTimeZone','Colosa','localRegistry','ready','00000000000000000000000000010014','features','','','0'); \ No newline at end of file +('User-based Time Zone Management.','userBasedTimeZone','userBasedTimeZone','userBasedTimeZone','Colosa','localRegistry','ready','00000000000000000000000000010014','features','','','0'), +('Selective Import Export.','selectiveImportExport','selectiveImportExport','selectiveImportExport','Colosa','localRegistry','ready','00000000000000000000000000010016','features','','','0'); \ No newline at end of file diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/GranularExporter.php b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/GranularExporter.php index 5186c7e03..10c49102c 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/GranularExporter.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/GranularExporter.php @@ -31,20 +31,25 @@ class GranularExporter public function export($objectList) { try { - $exportObject = new ExportObjects(); - $objectList = $exportObject->mapObjectList($objectList); - $this->beforeExport($objectList); - foreach ($objectList as $data) { - $migrator = $this->factory->create($data); - $migratorData = $migrator->export($this->prjuid); - $this->mergeData($migratorData); + if (\PMLicensedFeatures::getSingleton()->verifyfeature + ("jXsSi94bkRUcVZyRStNVExlTXhEclVadGRRcG9xbjNvTWVFQUF3cklKQVBiVT0=") + ) { + $exportObject = new ExportObjects(); + $objectList = $exportObject->mapObjectList($objectList); + $this->beforeExport($objectList); + foreach ($objectList as $data) { + $migrator = $this->factory->create($data); + $migratorData = $migrator->export($this->prjuid); + $this->mergeData($migratorData); + } + return $this->publish(); + } else { + $exception = new ExportException(); + $exception->setNameException(\G::LoadTranslation('ID_NO_LICENSE_SELECTIVEIMPORTEXPORT_ENABLED')); + throw($exception); } - return $this->publish(); - } catch (ExportException $e) { - return array( - 'success' => false, - 'message' => $e->getMessage() - ); + } catch (\Exception $e) { + throw $e; } } diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/GranularImporter.php b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/GranularImporter.php index 1a1ce886d..adf550b43 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/GranularImporter.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/GranularImporter.php @@ -161,26 +161,39 @@ class GranularImporter public function import($objectList) { try { - $objectList = $this->reorderImportOrder($objectList); - foreach ($objectList as $data) { - $objClass = $this->factory->create($data['name']); - if (is_object($objClass)) { - $dataImport = $data['data'][$data['name']]; - $replace = ($data['value'] == 'replace') ? true : false; - $migratorData = $objClass->import($dataImport, $replace); + if (\PMLicensedFeatures::getSingleton()->verifyfeature + ("jXsSi94bkRUcVZyRStNVExlTXhEclVadGRRcG9xbjNvTWVFQUF3cklKQVBiVT0=") + ) { + $objectList = $this->reorderImportOrder($objectList); + foreach ($objectList as $data) { + $objClass = $this->factory->create($data['name']); + if (is_object($objClass)) { + $dataImport = $data['data'][$data['name']]; + $replace = ($data['value'] == 'replace') ? true : false; + $migratorData = $objClass->import($dataImport, $replace); + } } + } else { + $exception = new ImportException(); + $exception->setNameException(\G::LoadTranslation('ID_NO_LICENSE_SELECTIVEIMPORTEXPORT_ENABLED')); + throw($exception); } + } catch (\Exception $e) { - $exception = new ImportException('Please review your current process definition + if (get_class($e) === 'ProcessMaker\BusinessModel\Migrator\ImportException') { + throw $e; + } else { + $exception = new ImportException('Please review your current process definition for missing elements, it\'s recommended that a new process should be exported with all the elements.'); - throw $exception; + throw $exception; + } } } /** * @param $objectList - * @param bool $generateUid + * @param $option * @return bool * @throws \Exception */