$_FILES = $filter->xssFilterHard($_FILES); $_SESSION['USER_LOGGED'] = $filter->xssFilterHard($_SESSION['USER_LOGGED']); if (isset($_FILES["PROCESS_FILENAME"]) && pathinfo($_FILES["PROCESS_FILENAME"]["name"], PATHINFO_EXTENSION) == "bpmn") { try { $createMode = $_REQUEST["createMode"]; $createMode = $filter->xssFilterHard($createMode); $name = pathinfo($_FILES["PROCESS_FILENAME"]["name"], PATHINFO_FILENAME); $data = array("type" => "bpmnProject", "PRO_TITLE" => $name, "PRO_DESCRIPTION" => "", "PRO_CATEGORY" => "", "PRO_CREATE_USER" => $_SESSION['USER_LOGGED']); if ($createMode === "overwrite") { $process = Process::getByProTitle($data["PRO_TITLE"]); if ($process !== null) { $oProcess = new Process(); $oProcess->remove($process["PRO_UID"]); } } if ($createMode === "rename") { $data["PRO_TITLE"] = Process::getNextTitle($data["PRO_TITLE"]); } $project = new \ProcessMaker\Project\Adapter\WorkflowBpmn($data); copy($_FILES["PROCESS_FILENAME"]["tmp_name"], PATH_DOCUMENT . $project->getUid()); $result = array("success" => true, "catchMessage" => "", "prj_uid" => $project->getUid(), "createMode" => $createMode); } catch (Exception $e) { $result = array("success" => "confirm", "catchMessage" => $e->getMessage(), "createMode" => $createMode); } echo G::json_encode($result); exit(0); } else { $result = array("success" => "error", "catchMessage" => G::LoadTranslation("ID_FILE_UPLOAD_INCORRECT_EXTENSION")); echo G::json_encode($result); exit(0); }
/** * @url POST /generate-bpmn * * @param array $request_data * * @status 201 */ public function doPostGenerateBpmn(array $request_data) { try { //Set data $request_data = array_change_key_case($request_data, CASE_UPPER); //Verify data $process = new \ProcessMaker\BusinessModel\Process(); $process->throwExceptionIfDataNotMetFieldDefinition( $request_data, array("PRO_UID" => array("type" => "string", "required" => true, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "processUid")), array("processUid" => "pro_uid"), true ); //Generate BPMN $workflowBpmn = new \ProcessMaker\Project\Adapter\WorkflowBpmn(); $projectUid = $workflowBpmn->generateBpmn($request_data["PRO_UID"], "pro_uid", $this->getUserId()); $arrayData = array_change_key_case(array_merge(array("PRJ_UID" => $projectUid), $request_data), CASE_LOWER); $response = $arrayData; return $response; } catch (\Exception $e) { throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); } }
/** * Generate BPMN (New record is generated) * * return void */ public function generateBpmn() { try { $processUid = $_POST["processUid"]; $workflowBpmn = new \ProcessMaker\Project\Adapter\WorkflowBpmn(); $projectUid = $workflowBpmn->generateBpmn($processUid, "processUid", $_SESSION["USER_LOGGED"]); $this->status = "OK"; $this->projectUid = $projectUid; } catch (Exception $e) { $this->status = "ERROR"; $this->message = $e->getMessage(); } }