diff --git a/workflow/engine/classes/model/BpmnBound.php b/workflow/engine/classes/model/BpmnBound.php index 1c89ae457..54317434d 100644 --- a/workflow/engine/classes/model/BpmnBound.php +++ b/workflow/engine/classes/model/BpmnBound.php @@ -54,12 +54,12 @@ class BpmnBound extends BaseBpmnBound $rs = BpmnBoundPeer::doSelectRS($c); $rs->setFetchmode(\ResultSet::FETCHMODE_ASSOC); - $activities = array(); + $bounds = array(); while ($rs->next()) { - $activities[] = $changeCaseTo !== CASE_UPPER ? array_change_key_case($rs->getRow(), CASE_LOWER) : $rs->getRow(); + $bounds[] = $changeCaseTo !== CASE_UPPER ? array_change_key_case($rs->getRow(), CASE_LOWER) : $rs->getRow(); } - return $activities; + return $bounds; } } // BpmnBound diff --git a/workflow/engine/classes/model/BpmnDiagram.php b/workflow/engine/classes/model/BpmnDiagram.php index 38a90440e..36a717f24 100644 --- a/workflow/engine/classes/model/BpmnDiagram.php +++ b/workflow/engine/classes/model/BpmnDiagram.php @@ -24,6 +24,27 @@ class BpmnDiagram extends BaseBpmnDiagram return BpmnDiagramPeer::doSelect($c); } + public static function getAll($prjUid = null, $start = null, $limit = null, $filter = '', $changeCaseTo = CASE_UPPER) + { + $c = new Criteria('workflow'); + $c->addSelectColumn("BPMN_DIAGRAM.*"); + + if (! is_null($prjUid)) { + $c->add(BpmnDiagramPeer::PRJ_UID, $prjUid, Criteria::EQUAL); + } + + $rs = BpmnDiagramPeer::doSelectRS($c); + $rs->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + + $diagrams = array(); + + while ($rs->next()) { + $diagrams[] = $changeCaseTo !== CASE_UPPER ? array_change_key_case($rs->getRow(), CASE_LOWER) : $rs->getRow(); + } + + return $diagrams; + } + // Overrides public function toArray($type = BasePeer::TYPE_FIELDNAME) diff --git a/workflow/engine/classes/model/BpmnFlow.php b/workflow/engine/classes/model/BpmnFlow.php index 64ae9c04e..56f1f83f3 100644 --- a/workflow/engine/classes/model/BpmnFlow.php +++ b/workflow/engine/classes/model/BpmnFlow.php @@ -64,7 +64,7 @@ class BpmnFlow extends BaseBpmnFlow return BpmnFlowPeer::doSelect($c); } - public static function getAll($prjUid = null, $start = null, $limit = null, $filter = '', $changeCaseTo = CASE_UPPER) + public static function getAll($prjUid = null, $start = null, $limit = null, $filter = '', $changeCaseTo = CASE_UPPER, $decodeState = true) { //TODO implement $start, $limit and $filter $c = new Criteria('workflow'); @@ -80,7 +80,9 @@ class BpmnFlow extends BaseBpmnFlow while ($rs->next()) { $flow = $rs->getRow(); - $flow["FLO_STATE"] = @json_decode($flow["FLO_STATE"], true); + if ($decodeState) { + $flow["FLO_STATE"] = @json_decode($flow["FLO_STATE"], true); + } //$flow["FLO_IS_INMEDIATE"] = $flow["FLO_IS_INMEDIATE"] == 1 ? true : false; $flow = $changeCaseTo !== CASE_UPPER ? array_change_key_case($flow, CASE_LOWER) : $flow; diff --git a/workflow/engine/classes/model/BpmnProcess.php b/workflow/engine/classes/model/BpmnProcess.php index 2b0c54646..947b7cad2 100644 --- a/workflow/engine/classes/model/BpmnProcess.php +++ b/workflow/engine/classes/model/BpmnProcess.php @@ -24,6 +24,26 @@ class BpmnProcess extends BaseBpmnProcess return BpmnProcessPeer::doSelect($c); } + public static function getAll($prjUid = null, $start = null, $limit = null, $filter = '', $changeCaseTo = CASE_UPPER) + { + $c = new Criteria('workflow'); + $c->addSelectColumn("BPMN_PROCESS.*"); + + if (! is_null($prjUid)) { + $c->add(BpmnProcessPeer::PRJ_UID, $prjUid, Criteria::EQUAL); + } + + $rs = BpmnProcessPeer::doSelectRS($c); + $rs->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + + $processes = array(); + while ($rs->next()) { + $processes[] = $changeCaseTo !== CASE_UPPER ? array_change_key_case($rs->getRow(), CASE_LOWER) : $rs->getRow(); + } + + return $processes; + } + // Overrides diff --git a/workflow/engine/src/ProcessMaker/Exporter/Exporter.php b/workflow/engine/src/ProcessMaker/Exporter/Exporter.php index 9cf92d175..6dd2e8c53 100644 --- a/workflow/engine/src/ProcessMaker/Exporter/Exporter.php +++ b/workflow/engine/src/ProcessMaker/Exporter/Exporter.php @@ -28,20 +28,19 @@ abstract class Exporter $bpmnStruct["ACTIVITY"] = \BpmnActivity::getAll($this->prjUid); - //$data["BPMN_STRUCTURE"]["BPMN_BOUND"] = $this->bwap->getBounds(); -// $data["bpmn_data"] = $this->bwap->getProject(); -// $data["bpmn_diagram"] = $this->bwap->getProject(); -// $data["bpmn_documentation"] = $this->bwap->getProject(); + $bpmnStruct["BOUND"] = \BpmnBound::getAll($this->prjUid); + $bpmnStruct["DATA"] = array(); + $bpmnStruct["DIAGRAM"] = \BpmnDiagram::getAll($this->prjUid); + $bpmnStruct["DOCUMENTATION"] = array(); $bpmnStruct["BPMN_EVENT"] = \BpmnEvent::getAll($this->prjUid); -// $data["bpmn_extension"] = $this->bwap->getProject(); -// $data["bpmn_flow"] = $this->bwap->getProject(); + $bpmnStruct["EXTENSION"] = array(); + $bpmnStruct["FLOW"] = \BpmnFlow::getAll($this->prjUid, null, null, "", CASE_UPPER, false); $bpmnStruct["BPMN_GATEWAY"] = \BpmnGateway::getAll($this->prjUid); -// $data["bpmn_lane"] = $this->bwap->getProject(); -// $data["bpmn_laneset"] = $this->bwap->getProject(); -// $data["bpmn_participant"] = $this->bwap->getProject(); -// $data["bpmn_process"] = $this->bwap->getProject(); -// $data["bpmn_project"] = $this->bwap->getProject(); - + $bpmnStruct["LANE"] = array(); + $bpmnStruct["LANESET"] = array(); + $bpmnStruct["PARTICIPANT"] = array(); + $bpmnStruct["PROCESS"] = \BpmnProcess::getAll($this->prjUid); + $bpmnStruct["PROJECT"] = array(\BpmnProjectPeer::retrieveByPK($this->prjUid)->toArray()); \G::LoadClass( 'processes' ); $oProcess = new \Processes(); @@ -68,7 +67,7 @@ abstract class Exporter $htmlFile = PATH_DYNAFORM . $dynaform['DYN_FILENAME'] . '.html'; if (file_exists($htmlFile)) { - $dynaforms[] = array( + $data["WORKFLOW_FILES"]["DYNAFORMS"][] = array( "filename" => $dynaform['DYN_FILENAME'] . '.html', "filepath" => $dynaform['DYN_FILENAME'] . '.html', "file_content" => file_get_contents($htmlFile) @@ -77,33 +76,29 @@ abstract class Exporter } // getting templates files - $templates = array(); - $workspaceDir = PATH_DATA . 'sites' . PATH_SEP . SYS_SYS . PATH_SEP; - $templatesDir = $workspaceDir . 'mailTemplates' . PATH_SEP . $this->prjUid; - $templatesFiles = \G::rglob("*", 0, $templatesDir); + $workspaceTargetDirs = array("TEMPLATES" => "mailTemplates", "PUBLIC" => "public"); + $workspaceDir = PATH_DATA . "sites" . PATH_SEP . SYS_SYS . PATH_SEP; - foreach ($templatesFiles as $templatesFile) { - if (is_dir($templatesFile)) continue; + foreach ($workspaceTargetDirs as $target => $workspaceTargetDir) { + $templatesDir = $workspaceDir . $workspaceTargetDir . PATH_SEP . $this->prjUid; + $templatesFiles = \G::rglob("*", 0, $templatesDir); - $templates[] = array( - "filename" => basename($templatesFile), - "filepath" => str_replace($templatesDir, "", $templatesFile), - "file_content" => file_get_contents($templatesFile) - ); + foreach ($templatesFiles as $templatesFile) { + if (is_dir($templatesFile)) continue; + + $data["WORKFLOW_FILES"][$target][] = array( + "filename" => basename($templatesFile), + "filepath" => str_replace($templatesDir, "", $templatesFile), + "file_content" => file_get_contents($templatesFile) + ); + } } - $data["WORKFLOW_FILES"]["DYNAFORMS"] = $dynaforms; - $data["WORKFLOW_FILES"]["TEMPLATES"] = $templates; - $data["WORKFLOW_FILES"]["PUBLIC"] = array(); - return $data; } public function getSystemInfo() { - //$sysInfo = \System::getSysInfo(); - //print_r($sysInfo); die; - return array( "vendor" => "ProcessMaker", "codename" => "Michelangelo", diff --git a/workflow/engine/src/ProcessMaker/Exporter/XmlExporter.php b/workflow/engine/src/ProcessMaker/Exporter/XmlExporter.php index 517feed05..24da197c9 100644 --- a/workflow/engine/src/ProcessMaker/Exporter/XmlExporter.php +++ b/workflow/engine/src/ProcessMaker/Exporter/XmlExporter.php @@ -54,6 +54,7 @@ class XmlExporter extends Exporter foreach ($recordData as $key => $value) { $columnNode = $this->dom->createElement(strtoupper($key)); + if (is_array($value)) {print_r($value); die;} if (preg_match('/^[\w\s]+$/', $value, $match) || empty($value)) { $textNode = $this->dom->createTextNode($value); } else { @@ -77,8 +78,6 @@ class XmlExporter extends Exporter // workflow dynaforms files foreach ($data["WORKFLOW_FILES"] as $elementName => $elementData) { - //$wfFilesNode = $this->dom->createElement($elementName); - foreach ($elementData as $fileData) { $fileNode = $this->dom->createElement("FILE"); $fileNode->setAttribute("target", strtolower($elementName)); @@ -97,8 +96,6 @@ class XmlExporter extends Exporter $workflowFilesNode->appendChild($fileNode); } - - //$workflowFilesNode->appendChild($wfFilesNode); } $this->rootNode->appendChild($workflowFilesNode);