Removed the deletion of WebEntry record when it is disabled. This attribute has no effect.
Fixed importation of processes with WebEntry task information.
This commit is contained in:
davidcallizaya
2017-06-01 16:54:48 -04:00
parent a845ba95cd
commit b533a87bd6
5 changed files with 187 additions and 92 deletions

View File

@@ -883,6 +883,29 @@ class Processes
return true;
}
/**
* change and Renew all Task GUID owned by WebEntries
*
* @param string $oData
* @return boolean
*/
public function renewAllWebEntryEventGuid(&$oData)
{
$map = array();
foreach ($oData->webEntryEvent as $key => $val) {
if (isset($val["EVN_UID_OLD"])) {
$uidNew = \ProcessMaker\BusinessModel\WebEntryEvent::getTaskUidFromEvnUid($val["EVN_UID"]);
$uidOld = \ProcessMaker\BusinessModel\WebEntryEvent::getTaskUidFromEvnUid($val["EVN_UID_OLD"]);
foreach($oData->tasks as $index => $task) {
if ($task["TAS_UID"]===$uidOld) {
$oData->tasks[$index]["TAS_UID"]=$uidNew;
$oData->tasks[$index]["TAS_UID_OLD"]=$uidOld;
}
}
}
}
}
/**
* change and Renew all Task GUID, because the process needs to have a new set of tasks
*
@@ -2617,6 +2640,7 @@ class Processes
$oData->uid["PROCESS"] = array($oData->process["PRO_PARENT"] => $oData->process["PRO_UID"]);
}
$this->renewAllWebEntryEventGuid($oData);
$this->renewAllTaskGuid($oData);
$this->renewAllDynaformGuid($oData);
$this->renewAllInputGuid($oData);

View File

@@ -269,13 +269,13 @@ class WebEntry
$task->throwExceptionIfNotExistsTask($processUid, $arrayData["TAS_UID"], $this->arrayFieldNameForException["taskUid"]);
}
if (isset($arrayData["DYN_UID"])) {
if (!empty($arrayData["DYN_UID"])) {
$dynaForm = new \ProcessMaker\BusinessModel\DynaForm();
$dynaForm->throwExceptionIfNotExistsDynaForm($arrayData["DYN_UID"], $processUid, $this->arrayFieldNameForException["dynaFormUid"]);
}
if ($arrayDataMain["WE_METHOD"] == "WS" && isset($arrayData["USR_UID"])) {
if ($arrayDataMain["WE_METHOD"] == "WS" && !empty($arrayData["USR_UID"])) {
$process->throwExceptionIfNotExistsUser($arrayData["USR_UID"], $this->arrayFieldNameForException["userUid"]);
}
@@ -301,7 +301,7 @@ class WebEntry
}
}
if (isset($arrayData["DYN_UID"])) {
if (isset($arrayData["DYN_UID"]) && (!isset($arrayData["WE_TYPE"]) || $arrayData["WE_TYPE"]==='SINGLE')) {
$dynaForm = new \Dynaform();
$arrayDynaFormData = $dynaForm->Load($arrayData["DYN_UID"]);
@@ -313,7 +313,7 @@ class WebEntry
}
}
if ($arrayDataMain["WE_METHOD"] == "WS" && isset($arrayData["USR_UID"])) {
if ($arrayDataMain["WE_METHOD"] == "WS" && !empty($arrayData["USR_UID"])) {
$user = new \Users();
$arrayUserData = $user->load($arrayData["USR_UID"]);

View File

@@ -317,13 +317,13 @@ class WebEntryEvent
}
}
if (isset($arrayData["DYN_UID"])) {
if (!empty($arrayData["DYN_UID"])) {
$dynaForm = new \ProcessMaker\BusinessModel\DynaForm();
$dynaForm->throwExceptionIfNotExistsDynaForm($arrayData["DYN_UID"], $projectUid, $this->arrayFieldNameForException["dynaFormUid"]);
}
if (isset($arrayData["USR_UID"])) {
if (!empty($arrayData["USR_UID"])) {
$process->throwExceptionIfNotExistsUser($arrayData["USR_UID"], $this->arrayFieldNameForException["userUid"]);
}
} catch (\Exception $e) {
@@ -331,6 +331,18 @@ class WebEntryEvent
}
}
/**
* Return an UID for the task related to the WebEntryEvent.
* TAS_UID is based on the EVN_UID to maintain the steps assignation
* during the import process
*
*/
public static function getTaskUidFromEvnUid($eventUid)
{
$prefix = "wee-";
return $prefix . substr($eventUid, (32 - strlen($prefix)) * -1);
}
/**
* Create WebEntry
*
@@ -355,40 +367,46 @@ class WebEntryEvent
//Task
$task = new \Task();
$prefix = "wee-";
$tasUid = static::getTaskUidFromEvnUid($eventUid);
$this->webEntryEventWebEntryTaskUid = $task->create(
array(
"TAS_UID" => $prefix . substr(\ProcessMaker\Util\Common::generateUID(), (32 - strlen($prefix)) * -1),
"PRO_UID" => $projectUid,
"TAS_TYPE" => "WEBENTRYEVENT",
"TAS_TITLE" => "WEBENTRYEVENT",
"TAS_START" => "TRUE",
"TAS_POSX" => (int)($arrayEventData["BOU_X"]),
"TAS_POSY" => (int)($arrayEventData["BOU_Y"])
),
false
);
if (\TaskPeer::retrieveByPK($tasUid)) {
$this->webEntryEventWebEntryTaskUid = $tasUid;
} else {
$this->webEntryEventWebEntryTaskUid = $task->create(
array(
"TAS_UID" => $tasUid,
"PRO_UID" => $projectUid,
"TAS_TYPE" => "WEBENTRYEVENT",
"TAS_TITLE" => "WEBENTRYEVENT",
"TAS_START" => "TRUE",
"TAS_POSX" => (int)($arrayEventData["BOU_X"]),
"TAS_POSY" => (int)($arrayEventData["BOU_Y"])
),
false
);
//Task - Step
$step = new \Step();
if (!isset($arrayData['WE_TYPE']) || $arrayData['WE_TYPE']==='SINGLE') {
//Task - Step
$step = new \Step();
$stepUid = $step->create(array("PRO_UID" => $projectUid, "TAS_UID" => $this->webEntryEventWebEntryTaskUid));
if (!empty($dynaFormUid)) {
$result = $step->update(array("STEP_UID" => $stepUid, "STEP_TYPE_OBJ" => "DYNAFORM", "STEP_UID_OBJ" => $dynaFormUid, "STEP_POSITION" => 1, "STEP_MODE" => "EDIT"));
}
}
//Task - User
$task = new \Tasks();
if (!(isset($arrayData['WE_AUTHENTICATION']) && $arrayData['WE_AUTHENTICATION']==='LOGIN_REQUIRED')) {
$task->assignUser($this->webEntryEventWebEntryTaskUid, $userUid, 1);
}
//Route
$workflow = \ProcessMaker\Project\Workflow::load($projectUid);
$result = $workflow->addRoute($this->webEntryEventWebEntryTaskUid, $activityUid, "SEQUENTIAL");
$stepUid = $step->create(array("PRO_UID" => $projectUid, "TAS_UID" => $this->webEntryEventWebEntryTaskUid));
if (!empty($dynaFormUid)) {
$result = $step->update(array("STEP_UID" => $stepUid, "STEP_TYPE_OBJ" => "DYNAFORM", "STEP_UID_OBJ" => $dynaFormUid, "STEP_POSITION" => 1, "STEP_MODE" => "EDIT"));
}
//Task - User
$task = new \Tasks();
if (!(isset($arrayData['WE_AUTHENTICATION']) && $arrayData['WE_AUTHENTICATION']==='LOGIN_REQUIRED')) {
$task->assignUser($this->webEntryEventWebEntryTaskUid, $userUid, 1);
}
//Route
$workflow = \ProcessMaker\Project\Workflow::load($projectUid);
$result = $workflow->addRoute($this->webEntryEventWebEntryTaskUid, $activityUid, "SEQUENTIAL");
//WebEntry
if (isset($arrayData['WE_LINK_GENERATION']) && $arrayData['WE_LINK_GENERATION']==='ADVANCED') {
$arrayData['WE_DATA'] = isset($arrayData['WEE_URL'])?$arrayData['WEE_URL']:null;
@@ -522,19 +540,17 @@ class WebEntryEvent
try {
//WebEntry
if ($arrayData["WEE_STATUS"] == "ENABLED") {
$this->createWebEntry(
$projectUid,
$arrayData["EVN_UID"],
$arrayData["ACT_UID"],
empty($arrayData["DYN_UID"])?null:$arrayData["DYN_UID"],
$arrayData["USR_UID"],
$arrayData["WEE_TITLE"],
$arrayData["WEE_DESCRIPTION"],
$userUidCreator,
$arrayData
);
}
$this->createWebEntry(
$projectUid,
$arrayData["EVN_UID"],
$arrayData["ACT_UID"],
empty($arrayData["DYN_UID"])?null:$arrayData["DYN_UID"],
$arrayData["USR_UID"],
$arrayData["WEE_TITLE"],
$arrayData["WEE_DESCRIPTION"],
$userUidCreator,
$arrayData
);
//WebEntry-Event
$webEntryEvent = new \WebEntryEvent();
@@ -634,38 +650,6 @@ class WebEntryEvent
try {
//WebEntry
$option = "UPDATE";
if (isset($arrayData["WEE_STATUS"])) {
if ($arrayData["WEE_STATUS"] == "ENABLED") {
if ($arrayWebEntryEventData["WEE_STATUS"] == "DISABLED") {
$option = "INSERT";
}
} else {
if ($arrayWebEntryEventData["WEE_STATUS"] == "ENABLED") {
$option = "DELETE";
}
}
}
switch ($option) {
case "INSERT":
$this->createWebEntry(
$arrayFinalData["PRJ_UID"],
$arrayFinalData["EVN_UID"],
$arrayFinalData["ACT_UID"],
$arrayFinalData["DYN_UID"],
$arrayFinalData["USR_UID"],
$arrayFinalData["WEE_TITLE"],
$arrayFinalData["WEE_DESCRIPTION"],
$userUidUpdater,
$arrayFinalData
);
$arrayData["WEE_WE_UID"] = $this->webEntryEventWebEntryUid;
$arrayData["WEE_WE_TAS_UID"] = $this->webEntryEventWebEntryTaskUid;
break;
case "UPDATE":
if ($arrayWebEntryEventData["WEE_WE_UID"] != "") {
$task = new \Tasks();
@@ -760,14 +744,6 @@ class WebEntryEvent
$arrayDataAux = $this->webEntry->update($arrayWebEntryEventData["WEE_WE_UID"], $userUidUpdater, $arrayDataAux);
}
}
break;
case "DELETE":
$this->deleteWebEntry($arrayWebEntryEventData["WEE_WE_UID"], $arrayWebEntryEventData["WEE_WE_TAS_UID"]);
$arrayData["WEE_WE_UID"] = "";
$arrayData["WEE_WE_TAS_UID"] = "";
break;
}
//WebEntry-Event
$webEntryEvent = \WebEntryEventPeer::retrieveByPK($webEntryEventUid);