Merge remote-tracking branch 'upstream/3.0.1.6-Gmail' into 3.0.1.6-Gmail

This commit is contained in:
Marco A. Nina Mena
2015-11-11 08:57:07 -04:00
14 changed files with 208 additions and 261 deletions

View File

@@ -1973,6 +1973,7 @@ class Cases
public function CloseCurrentDelegation($sAppUid, $iDelIndex)
{
try {
$oApplication = ApplicationPeer::retrieveByPk($sAppUid);
$c = new Criteria();
$c->add(AppDelegationPeer::APP_UID, $sAppUid);
$c->add(AppDelegationPeer::DEL_INDEX, $iDelIndex);
@@ -1991,6 +1992,18 @@ class Cases
}
throw (new PropelException('The row cannot be created!', new PropelException($msg)));
}
$taskNext = TaskPeer::retrieveByPK($appDel->getTasUid());
if($taskNext->getTasType() == 'NORMAL'){
if($oApplication->getAppStatus() == "DRAFT"){
$sUserUid = $appDel->getUsrUid();
$users = new Users();
$users->refreshTotal($sUserUid, "remove", "draft");
}else{
$sUserUid = $appDel->getUsrUid();
$users = new Users();
$users->refreshTotal($sUserUid, "remove", "inbox");
}
}
}
/*----------------------------------********---------------------------------*/
$inbox = new ListInbox();

View File

@@ -630,6 +630,99 @@ class Derivation
}
}
/**
* Throw Events for the Case
*
* @param string $elementOriginUid Unique id of Element Origin (unique id of Task)
* @param string $elementDestUid Unique id of Element Destination (unique id of Task)
* @param array $arrayApplicationData Case data
* @param bool $flagEventExecuteBeforeGateway Execute event before gateway
* @param bool $flagEventExecuteAfterGateway Execute event after gateway
*
* @return void
*/
private function throwEventsBetweenElementOriginAndElementDest($elementOriginUid, $elementDestUid, array $arrayApplicationData, $flagEventExecuteBeforeGateway = true, $flagEventExecuteAfterGateway = true)
{
try {
//Verify if the Project is BPMN
$bpmn = new \ProcessMaker\Project\Bpmn();
if (!$bpmn->exists($arrayApplicationData["PRO_UID"])) {
return;
}
//Element origin and dest
$elementTaskRelation = new \ProcessMaker\BusinessModel\ElementTaskRelation();
$arrayElement = [
"elementOrigin" => ["uid" => $elementOriginUid, "type" => "bpmnActivity"],
"elementDest" => ["uid" => $elementDestUid, "type" => "bpmnActivity"]
];
foreach ($arrayElement as $key => $value) {
$arrayElementTaskRelationData = $elementTaskRelation->getElementTaskRelationWhere(
[
ElementTaskRelationPeer::PRJ_UID => $arrayApplicationData["PRO_UID"],
ElementTaskRelationPeer::ELEMENT_TYPE => "bpmnEvent",
ElementTaskRelationPeer::TAS_UID => $arrayElement[$key]["uid"]
],
true
);
if (!is_null($arrayElementTaskRelationData)) {
$arrayElement[$key]["uid"] = $arrayElementTaskRelationData["ELEMENT_UID"];
$arrayElement[$key]["type"] = "bpmnEvent";
}
}
$elementOriginUid = $arrayElement["elementOrigin"]["uid"];
$elementOriginType = $arrayElement["elementOrigin"]["type"];
$elementDestUid = $arrayElement["elementDest"]["uid"];
$elementDestType = $arrayElement["elementDest"]["type"];
//Throw Events
$messageApplication = new \ProcessMaker\BusinessModel\MessageApplication();
$emailEvent = new \ProcessMaker\BusinessModel\EmailEvent();
$arrayEventExecute = ["BEFORE" => $flagEventExecuteBeforeGateway, "AFTER" => $flagEventExecuteAfterGateway];
$positionEventExecute = "BEFORE";
$arrayElement = $bpmn->getElementsBetweenElementOriginAndElementDest(
$elementOriginUid,
$elementOriginType,
$elementDestUid,
$elementDestType
);
foreach ($arrayElement as $value) {
switch ($value[1]) {
case "bpmnEvent":
if ($arrayEventExecute[$positionEventExecute]) {
$event = \BpmnEventPeer::retrieveByPK($value[0]);
if (!is_null($event)) {
if (preg_match("/^(?:END|INTERMEDIATE)$/", $event->getEvnType()) && $event->getEvnMarker() == "MESSAGETHROW") {
//Message-Application throw
$result = $messageApplication->create($arrayApplicationData["APP_UID"], $arrayApplicationData["PRO_UID"], $value[0], $arrayApplicationData);
}
if (preg_match("/^(?:END|INTERMEDIATE)$/", $event->getEvnType()) && $event->getEvnMarker() == "EMAIL") {
//Email-Event throw
$result = $emailEvent->sendEmail($arrayApplicationData["APP_UID"], $arrayApplicationData["PRO_UID"], $value[0], $arrayApplicationData);
}
}
}
break;
case "bpmnGateway":
$positionEventExecute = "AFTER";
break;
}
}
} catch (Exception $e) {
throw $e;
}
}
/**
* Update counters
*
@@ -653,9 +746,9 @@ class Derivation
$application = ApplicationPeer::retrieveByPK($arrayApplicationData["APP_UID"]);
if ($application->getAppStatus() == "DRAFT") {
$user->refreshTotal($arrayApplicationData["CURRENT_USER_UID"], "remove", "draft");
//$user->refreshTotal($arrayApplicationData["CURRENT_USER_UID"], "remove", "draft");
} else {
$user->refreshTotal($arrayApplicationData["CURRENT_USER_UID"], "remove", "inbox");
//$user->refreshTotal($arrayApplicationData["CURRENT_USER_UID"], "remove", "inbox");
}
} else {
if ($arrayNextDelegationData["TAS_UID"] != "-1") {
@@ -683,9 +776,9 @@ class Derivation
$application = ApplicationPeer::retrieveByPK($arrayApplicationData["APP_UID"]);
if ($application->getAppStatus() == "DRAFT") {
$user->refreshTotal($arrayApplicationData["CURRENT_USER_UID"], "remove", "draft");
//$user->refreshTotal($arrayApplicationData["CURRENT_USER_UID"], "remove", "draft");
} else {
$user->refreshTotal($arrayApplicationData["CURRENT_USER_UID"], "remove", "inbox");
//$user->refreshTotal($arrayApplicationData["CURRENT_USER_UID"], "remove", "inbox");
}
}
}
@@ -694,9 +787,9 @@ class Derivation
$application = ApplicationPeer::retrieveByPK($arrayApplicationData["APP_UID"]);
if ($application->getAppStatus() == "DRAFT") {
$user->refreshTotal($arrayApplicationData["CURRENT_USER_UID"], "remove", "draft");
//$user->refreshTotal($arrayApplicationData["CURRENT_USER_UID"], "remove", "draft");
} else {
$user->refreshTotal($arrayApplicationData["CURRENT_USER_UID"], "remove", "inbox");
//$user->refreshTotal($arrayApplicationData["CURRENT_USER_UID"], "remove", "inbox");
}
}
}
@@ -728,9 +821,6 @@ class Derivation
$this->case = new cases();
$messageApplication = new \ProcessMaker\BusinessModel\MessageApplication();
$emailEvent = new \ProcessMaker\BusinessModel\EmailEvent();
//Get data for this DEL_INDEX current
$appFields = $this->case->loadCase( $currentDelegation['APP_UID'], $currentDelegation['DEL_INDEX'] );
@@ -811,19 +901,13 @@ class Derivation
$this->case->closeAllThreads( $currentDelegation['APP_UID'] );
//I think we need to change the APP_STATUS to completed,
//BpmnEvent - END-MESSAGE-EVENT, END-EMAIL-EVENT
//BpmnEvent
if (isset($nextDel["TAS_UID_DUMMY"])) {
$taskDummy = TaskPeer::retrieveByPK($nextDel["TAS_UID_DUMMY"]);
switch ($taskDummy->getTasType()) {
case "END-MESSAGE-EVENT":
//Throw Message-Events - BpmnEvent - END-MESSAGE-EVENT
$messageApplication->throwMessageEventBetweenElementOriginAndElementDest($currentDelegation["TAS_UID"], $nextDel["TAS_UID_DUMMY"], $appFields, $flagFirstIteration, true);
break;
case "END-EMAIL-EVENT":
//Throw Email-Events - BpmnEvent - END-EMAIL-EVENT
$emailEvent->emailEventBetweenElementOriginAndElementDest($currentDelegation["TAS_UID"], $nextDel["TAS_UID_DUMMY"], $appFields, $flagFirstIteration, true);
break;
if (preg_match("/^(?:END-MESSAGE-EVENT|END-EMAIL-EVENT)$/", $taskDummy->getEvnType())) {
//Throw Events
$this->throwEventsBetweenElementOriginAndElementDest($currentDelegation["TAS_UID"], $nextDel["TAS_UID_DUMMY"], $appFields, $flagFirstIteration, true);
}
}
break;
@@ -881,11 +965,8 @@ class Derivation
}
if ($canDerivate) {
//Throw Message-Events
$messageApplication->throwMessageEventBetweenElementOriginAndElementDest($currentDelegation["TAS_UID"], $nextDel["TAS_UID"], $appFields, $flagFirstIteration, true);
//Throw Email-Events
$emailEvent->emailEventBetweenElementOriginAndElementDest($currentDelegation["TAS_UID"], $nextDel["TAS_UID"], $appFields, $flagFirstIteration, true);
//Throw Events
$this->throwEventsBetweenElementOriginAndElementDest($currentDelegation["TAS_UID"], $nextDel["TAS_UID"], $appFields, $flagFirstIteration, true);
//Derivate
$aSP = (isset($aSP))? $aSP : null;
@@ -990,11 +1071,8 @@ class Derivation
switch ($routeType) {
case 'SEC-JOIN':
//Throw Message-Events
$messageApplication->throwMessageEventBetweenElementOriginAndElementDest($currentDelegation["TAS_UID"], $nextDel["TAS_UID"], $appFields, $flagFirstIteration, false);
//Throw Email-Events
$emailEvent->emailEventBetweenElementOriginAndElementDest($currentDelegation["TAS_UID"], $nextDel["TAS_UID"], $appFields, $flagFirstIteration, false);
//Throw Events
$this->throwEventsBetweenElementOriginAndElementDest($currentDelegation["TAS_UID"], $nextDel["TAS_UID"], $appFields, $flagFirstIteration, false);
//Close thread
$this->case->closeAppThread( $currentDelegation['APP_UID'], $iAppThreadIndex );

View File

@@ -537,6 +537,12 @@ class pmDynaform
}
}
}
if (isset($json->options) && isset($json->options[0])) {
$data[$json->variable === "" ? $json->id : $json->variable] = $json->options[0]->value;
}
if (isset($json->placeholder) && $json->placeholder !== "") {
$data[$json->variable === "" ? $json->id : $json->variable] = $json->placeholder;
}
if (isset($json->defaultValue) && $json->defaultValue !== "") {
$data[$json->variable === "" ? $json->id : $json->variable] = $json->defaultValue;
}

View File

@@ -751,7 +751,7 @@ class AdditionalTables extends BaseAdditionalTables
} else {
// grids
foreach ($caseData[$dKey] as $dIndex => $dRow) {
if (!is_array($dRow)) {
if (is_array($dRow)) {
foreach ($dRow as $k => $v) {
if (trim($v) === '') {
$caseData[$dKey][$dIndex][$k] = null;

View File

@@ -116,7 +116,7 @@ class ListCompleted extends BaseListCompleted
$dataset->next();
$aRow = $dataset->getRow();
if ($aRow['TAS_TYPE'] != 'SUBPROCESS') {
$users->refreshTotal($data['USR_UID'], 'remove', 'inbox');
//$users->refreshTotal($data['USR_UID'], 'remove', 'inbox');
}
} else {
$criteria = new Criteria();
@@ -125,9 +125,9 @@ class ListCompleted extends BaseListCompleted
$dataset = SubApplicationPeer::doSelectRS($criteria);
$dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
if ($dataset->next()) {
$users->refreshTotal($data['USR_UID'], 'remove', 'inbox');
//$users->refreshTotal($data['USR_UID'], 'remove', 'inbox');
} else {
$users->refreshTotal($data['USR_UID'], 'remove', 'draft');
//$users->refreshTotal($data['USR_UID'], 'remove', 'draft');
}
}

View File

@@ -324,12 +324,12 @@ class ListInbox extends BaseListInbox
$criteria->add( SubApplicationPeer::APP_UID, $data['APP_UID'], Criteria::EQUAL );
$dataset = SubApplicationPeer::doSelectRS($criteria);
if ($dataset->next()) {
$users->refreshTotal($delPreviusUsrUid, 'remove', 'inbox');
//$users->refreshTotal($delPreviusUsrUid, 'remove', 'inbox');
} else {
$users->refreshTotal($delPreviusUsrUid, 'remove', 'draft');
//$users->refreshTotal($delPreviusUsrUid, 'remove', 'draft');
}
} else {
$users->refreshTotal($delPreviusUsrUid, 'remove', 'inbox');
//$users->refreshTotal($delPreviusUsrUid, 'remove', 'inbox');
}
}
if (!$isSelfService) {
@@ -341,9 +341,9 @@ class ListInbox extends BaseListInbox
$users->refreshTotal($data['USR_UID'], 'add', 'inbox');
}
if ($dataPreviusApplication['APP_STATUS'] == 'DRAFT') {
$users->refreshTotal($dataPreviusApplication['CURRENT_USER_UID'], 'remove', 'draft');
//$users->refreshTotal($dataPreviusApplication['CURRENT_USER_UID'], 'remove', 'draft');
} else {
$users->refreshTotal($dataPreviusApplication['CURRENT_USER_UID'], 'remove', 'inbox');
//$users->refreshTotal($dataPreviusApplication['CURRENT_USER_UID'], 'remove', 'inbox');
}
}
self::create($data, $isSelfService);

View File

@@ -216,11 +216,8 @@ if ($flagExecuteBeforeTriggers) {
if (! isset( $_SESSION['_NO_EXECUTE_TRIGGERS_'] )) {
//Execute before triggers - Start
if (!isset($_SESSION['beforeTriggersExecuted']) || $_GET['POSITION'] > 1) {
$oStep = $oStep->loadByProcessTaskPosition( $_SESSION['PROCESS'], $_SESSION['TASK'], $_GET['POSITION'] );
if($oStep) {
$Fields['APP_DATA'] = $oCase->ExecuteTriggers( $_SESSION['TASK'], $oStep->getStepTypeObj(), $oStep->getStepUidObj(), 'BEFORE', $Fields['APP_DATA'] );
}
if (!isset($_SESSION['beforeTriggersExecuted']) || $triggers) {
$Fields['APP_DATA'] = $oCase->ExecuteTriggers( $_SESSION['TASK'], $_GET['TYPE'], $_GET['UID'], 'BEFORE', $Fields['APP_DATA'] );
} else {
unset($_SESSION['beforeTriggersExecuted']);
}

View File

@@ -47,6 +47,7 @@ if (PMLicensedFeatures
$record['APP_UID'] = $_REQUEST['APP_UID'];
$record['DEL_INDEX'] = $_REQUEST['DEL_INDEX'];
$record['ABER'] = $_REQUEST['ABER'];
$record['APP_DATA'] = $caseFields['APP_DATA'];
if (is_null($caseFields['DEL_FINISH_DATE'])) {
$a = new pmDynaform($record);
$a->printABE($action,$record);

View File

@@ -93,7 +93,6 @@ if (PMLicensedFeatures
$dataResponses['ABE_RES_MESSAGE'] = '';
try {
set_include_path(PATH_PLUGINS . 'actionsByEmail' . PATH_SEPARATOR . get_include_path());
require_once 'classes/model/AbeResponses.php';
$abeAbeResponsesInstance = new AbeResponses();

View File

@@ -393,94 +393,6 @@ class EmailEvent
}
}
/**
* Email-event for the Case
*
* @param string $elementOriginUid Unique id of Element Origin (unique id of Task)
* @param string $elementDestUid Unique id of Element Dest (unique id of Task)
* @param array $arrayApplicationData Case data
* @param bool $flagEventExecuteBeforeGateway Execute event before gateway
* @param bool $flagEventExecuteAfterGateway Execute event after gateway
*
* @return void
*/
public function emailEventBetweenElementOriginAndElementDest($elementOriginUid, $elementDestUid, array $arrayApplicationData, $flagEventExecuteBeforeGateway = true, $flagEventExecuteAfterGateway = true)
{
try {
//Verify if the Project is BPMN
$bpmn = new \ProcessMaker\Project\Bpmn();
if (!$bpmn->exists($arrayApplicationData["PRO_UID"])) {
return;
}
//Element origin and dest
$elementTaskRelation = new \ProcessMaker\BusinessModel\ElementTaskRelation();
$arrayElement = array(
"elementOrigin" => array("uid" => $elementOriginUid, "type" => "bpmnActivity"),
"elementDest" => array("uid" => $elementDestUid, "type" => "bpmnActivity")
);
foreach ($arrayElement as $key => $value) {
$arrayElementTaskRelationData = $elementTaskRelation->getElementTaskRelationWhere(
array(
\ElementTaskRelationPeer::PRJ_UID => $arrayApplicationData["PRO_UID"],
\ElementTaskRelationPeer::ELEMENT_TYPE => "bpmnEvent",
\ElementTaskRelationPeer::TAS_UID => $arrayElement[$key]["uid"]
),
true
);
if (!is_null($arrayElementTaskRelationData)) {
$arrayElement[$key]["uid"] = $arrayElementTaskRelationData["ELEMENT_UID"];
$arrayElement[$key]["type"] = "bpmnEvent";
}
}
$elementOriginUid = $arrayElement["elementOrigin"]["uid"];
$elementOriginType = $arrayElement["elementOrigin"]["type"];
$elementDestUid = $arrayElement["elementDest"]["uid"];
$elementDestType = $arrayElement["elementDest"]["type"];
//Throw Email-Events
$arrayEventType = array("END", "INTERMEDIATE");
$arrayEventMarker = array("EMAIL");
$arrayEventExecute = array("BEFORE" => $flagEventExecuteBeforeGateway, "AFTER" => $flagEventExecuteAfterGateway);
$positionEventExecute = "BEFORE";
$arrayElement = $bpmn->getElementsBetweenElementOriginAndElementDest(
$elementOriginUid,
$elementOriginType,
$elementDestUid,
$elementDestType
);
foreach ($arrayElement as $value) {
switch ($value[1]) {
case "bpmnEvent":
$event = \BpmnEventPeer::retrieveByPK($value[0]);
if (!is_null($event) &&
in_array($event->getEvnType(), $arrayEventType) && in_array($event->getEvnMarker(), $arrayEventMarker)
) {
if ($arrayEventExecute[$positionEventExecute]) {
//Email-Event throw
$result = $this->sendEmail($arrayApplicationData["APP_UID"], $arrayApplicationData["PRO_UID"], $value[0], $arrayApplicationData);
}
}
break;
case "bpmnGateway":
$positionEventExecute = "AFTER";
break;
}
}
} catch (\Exception $e) {
throw $e;
}
}
/**
* Email-event do function
*

View File

@@ -66,7 +66,7 @@ class Light
foreach ($processList[$key] as $keyChild => $processInfoChild) {
$webEntryEventStart = $webEntryEvent->getWebEntryEvents($processInfoChild['pro_uid']);
if(empty($webEntryEventStart)){
$tempTreeChild['text'] = htmlentities($keyChild, ENT_QUOTES, 'UTF-8'); //ellipsis ( $keyChild, 50 );
$tempTreeChild['text'] = $keyChild; //ellipsis ( $keyChild, 50 );
$tempTreeChild['processId'] = $processInfoChild['pro_uid'];
$tempTreeChild['taskId'] = $processInfoChild['uid'];
$forms = $task->getSteps($processInfoChild['uid']);
@@ -405,10 +405,10 @@ class Light
$triggers = $oCase->loadTriggers( $tas_uid, 'ASSIGN_TASK', '-1', 'BEFORE');
if (isset($triggers)){
$cases = new \ProcessMaker\BusinessModel\Cases();
foreach($triggers as $trigger){
$cases->putExecuteTriggerCase($app_uid, $trigger['TRI_UID'], $usr_uid);
}
$Fields = $oCase->loadCase( $app_uid );
$Fields['APP_DATA'] = array_merge( $Fields['APP_DATA'], G::getSystemConstants() );
$Fields['APP_DATA'] = $oCase->ExecuteTriggers( $tas_uid, 'DYNAFORM', '-1', 'BEFORE', $Fields['APP_DATA'] );
$oCase->updateCase( $app_uid, $Fields );
}
$oDerivation = new \Derivation();
$aData = array();
@@ -457,6 +457,8 @@ class Light
$response[] = $taskAss;
break;
case 'MANUAL':
case "MULTIPLE_INSTANCE":
case "MULTIPLE_INSTANCE_VALUE_BASED":
$manual = array();
$manual['taskId'] = $aValues['NEXT_TASK']['TAS_UID'];
$manual['taskName'] = $aValues['NEXT_TASK']['TAS_TITLE'];
@@ -492,7 +494,7 @@ class Light
}
if (empty( $response )) {
throw (new Exception( G::LoadTranslation( 'ID_NO_DERIVATION_RULE' ) ));
throw new \Exception(G::LoadTranslation("ID_NO_DERIVATION_RULE"));
}
} catch (\Exception $e) {
throw $e;

View File

@@ -150,30 +150,12 @@ class NotificationDevice
public function routeCaseNotification($currentUserId, $processId, $currentTaskId, $appFields, $aTasks, $nextIndex)
{
try {
$oUser = new \Users();
$aUser = $oUser->load( $currentUserId );
$response = array();
$task = new \Tasks();
$group = new \Groups();
foreach ($aTasks as $aTask) {
$arrayTaskUser = array();
switch ($aTask["TAS_ASSIGN_TYPE"]) {
case "SELF_SERVICE":
if (isset($aTask["TAS_UID"]) && !empty($aTask["TAS_UID"])) {
$arrayAux1 = $task->getGroupsOfTask($aTask["TAS_UID"], 1);
foreach ($arrayAux1 as $arrayGroup) {
$arrayAux2 = $group->getUsersOfGroup($arrayGroup["GRP_UID"]);
foreach ($arrayAux2 as $arrayUser) {
$arrayTaskUser[] = $arrayUser["USR_UID"];
}
}
$arrayAux1 = $task->getUsersOfTask($aTask["TAS_UID"], 1);
foreach ($arrayAux1 as $arrayUser) {
$arrayTaskUser[] = $arrayUser["USR_UID"];
}
}
$arrayTaskUser = $this->getTaskUserSelfService($aTask["TAS_UID"], $appFields);
break;
default:
if (isset($aTask["USR_UID"]) && !empty($aTask["USR_UID"])) {
@@ -182,8 +164,6 @@ class NotificationDevice
break;
}
// $oTask = new \Task();
// $currentTask = $oTask->load($aTask['TAS_UID']);
$delIndex = null;
foreach ($nextIndex as $nIndex) {
if($aTask['TAS_UID'] == $nIndex['TAS_UID']){
@@ -250,4 +230,43 @@ class NotificationDevice
return $response;
}
public function getTaskUserSelfService($tas_uid, $appFields)
{
$oTask = new \Tasks();
$oGroup = new \Groups();
$taskNextDel = \TaskPeer::retrieveByPK($tas_uid);
$arrayTaskUser = array();
if ($taskNextDel->getTasAssignType() == "SELF_SERVICE" && trim($taskNextDel->getTasGroupVariable()) != "") {
// Self Service Value Based Assignment
$nextTaskGroupVariable = trim($taskNextDel->getTasGroupVariable(), " @#");
if (isset($appFields["APP_DATA"][$nextTaskGroupVariable])) {
$dataGroupVariable = $appFields["APP_DATA"][$nextTaskGroupVariable];
$dataGroupVariable = (is_array($dataGroupVariable))? $dataGroupVariable : trim($dataGroupVariable);
if (!empty($dataGroupVariable) && is_array($dataGroupVariable)){
$arrayTaskUser[] = $dataGroupVariable;
} elseif(!empty($dataGroupVariable)) {
$arrayUsersOfGroup = $oGroup->getUsersOfGroup($dataGroupVariable);
foreach ($arrayUsersOfGroup as $arrayUser) {
$arrayTaskUser[] = $arrayUser["USR_UID"];
}
}
}
} else { // Self Service
$arrayGroupsOfTask = $oTask->getGroupsOfTask($tas_uid, 1);
foreach ($arrayGroupsOfTask as $arrayGroup) {
$arrayUsersOfGroup = $oGroup->getUsersOfGroup($arrayGroup["GRP_UID"]);
foreach ($arrayUsersOfGroup as $arrayUser) {
$arrayTaskUser[] = $arrayUser["USR_UID"];
}
}
$arrayUsersOfTask = $oTask->getUsersOfTask($tas_uid, 1);
foreach ($arrayUsersOfTask as $arrayUser) {
$arrayTaskUser[] = $arrayUser["USR_UID"];
}
}
return $arrayTaskUser;
}
}

View File

@@ -354,94 +354,6 @@ class MessageApplication
}
}
/**
* Throw Message-Events for the Case
*
* @param string $elementOriginUid Unique id of Element Origin (unique id of Task)
* @param string $elementDestUid Unique id of Element Dest (unique id of Task)
* @param array $arrayApplicationData Case data
* @param bool $flagEventExecuteBeforeGateway Execute event before gateway
* @param bool $flagEventExecuteAfterGateway Execute event after gateway
*
* @return void
*/
public function throwMessageEventBetweenElementOriginAndElementDest($elementOriginUid, $elementDestUid, array $arrayApplicationData, $flagEventExecuteBeforeGateway = true, $flagEventExecuteAfterGateway = true)
{
try {
//Verify if the Project is BPMN
$bpmn = new \ProcessMaker\Project\Bpmn();
if (!$bpmn->exists($arrayApplicationData["PRO_UID"])) {
return;
}
//Element origin and dest
$elementTaskRelation = new \ProcessMaker\BusinessModel\ElementTaskRelation();
$arrayElement = array(
"elementOrigin" => array("uid" => $elementOriginUid, "type" => "bpmnActivity"),
"elementDest" => array("uid" => $elementDestUid, "type" => "bpmnActivity")
);
foreach ($arrayElement as $key => $value) {
$arrayElementTaskRelationData = $elementTaskRelation->getElementTaskRelationWhere(
array(
\ElementTaskRelationPeer::PRJ_UID => $arrayApplicationData["PRO_UID"],
\ElementTaskRelationPeer::ELEMENT_TYPE => "bpmnEvent",
\ElementTaskRelationPeer::TAS_UID => $arrayElement[$key]["uid"]
),
true
);
if (!is_null($arrayElementTaskRelationData)) {
$arrayElement[$key]["uid"] = $arrayElementTaskRelationData["ELEMENT_UID"];
$arrayElement[$key]["type"] = "bpmnEvent";
}
}
$elementOriginUid = $arrayElement["elementOrigin"]["uid"];
$elementOriginType = $arrayElement["elementOrigin"]["type"];
$elementDestUid = $arrayElement["elementDest"]["uid"];
$elementDestType = $arrayElement["elementDest"]["type"];
//Throw Message-Events
$arrayEventType = array("END", "INTERMEDIATE");
$arrayEventMarker = array("MESSAGETHROW");
$arrayEventExecute = array("BEFORE" => $flagEventExecuteBeforeGateway, "AFTER" => $flagEventExecuteAfterGateway);
$positionEventExecute = "BEFORE";
$arrayElement = $bpmn->getElementsBetweenElementOriginAndElementDest(
$elementOriginUid,
$elementOriginType,
$elementDestUid,
$elementDestType
);
foreach ($arrayElement as $value) {
switch ($value[1]) {
case "bpmnEvent":
$event = \BpmnEventPeer::retrieveByPK($value[0]);
if (!is_null($event) &&
in_array($event->getEvnType(), $arrayEventType) && in_array($event->getEvnMarker(), $arrayEventMarker)
) {
if ($arrayEventExecute[$positionEventExecute]) {
//Message-Application throw
$result = $this->create($arrayApplicationData["APP_UID"], $arrayApplicationData["PRO_UID"], $value[0], $arrayApplicationData);
}
}
break;
case "bpmnGateway":
$positionEventExecute = "AFTER";
break;
}
}
} catch (\Exception $e) {
throw $e;
}
}
/**
* Catch Message-Events for the Cases
*

View File

@@ -1375,29 +1375,36 @@ class Bpmn extends Handler
$elementOriginUid,
$elementOriginType,
$elementDestUid,
$elementDestType
$elementDestType,
$index
) {
try {
if (isset($this->arrayElementOriginChecked[$elementOriginUid]) && $this->arrayElementOriginChecked[$elementOriginUid] == $elementOriginType) {
//Return
return array();
return [];
}
$this->arrayElementOriginChecked[$elementOriginUid] = $elementOriginType;
if ($elementOriginType == $elementDestType && $elementOriginUid == $elementDestUid) {
$arrayEvent = array();
array_unshift($arrayEvent, array($elementDestUid, $elementDestType));
if ($index > 0 && $elementOriginType == $elementDestType) {
if ($elementOriginUid == $elementDestUid) {
$arrayEvent = [];
array_unshift($arrayEvent, [$elementDestUid, $elementDestType]);
//Return
return $arrayEvent;
}
//Return
return $arrayEvent;
return [];
} else {
//Flows
$arrayFlow = \BpmnFlow::findAllBy(array(
\BpmnFlowPeer::FLO_TYPE => array("MESSAGE", \Criteria::NOT_EQUAL),
$arrayFlow = \BpmnFlow::findAllBy([
\BpmnFlowPeer::FLO_TYPE => ["MESSAGE", \Criteria::NOT_EQUAL],
\BpmnFlowPeer::FLO_ELEMENT_ORIGIN => $elementOriginUid,
\BpmnFlowPeer::FLO_ELEMENT_ORIGIN_TYPE => $elementOriginType
));
]);
foreach ($arrayFlow as $value) {
$arrayFlowData = $value->toArray();
@@ -1406,11 +1413,12 @@ class Bpmn extends Handler
$arrayFlowData["FLO_ELEMENT_DEST"],
$arrayFlowData["FLO_ELEMENT_DEST_TYPE"],
$elementDestUid,
$elementDestType
$elementDestType,
$index + 1
);
if (!empty($arrayEvent)) {
array_unshift($arrayEvent, array($elementOriginUid, $elementOriginType));
array_unshift($arrayEvent, [$elementOriginUid, $elementOriginType]);
//Return
return $arrayEvent;
@@ -1418,7 +1426,7 @@ class Bpmn extends Handler
}
//Return
return array();
return [];
}
} catch (\Exception $e) {
self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString());
@@ -1434,10 +1442,10 @@ class Bpmn extends Handler
$elementDestType
) {
try {
$this->arrayElementOriginChecked = array();
$this->arrayElementOriginChecked = [];
//Return
return call_user_func_array(array($this, "__getElementsBetweenElementOriginAndElementDest"), func_get_args());
return call_user_func_array([$this, "__getElementsBetweenElementOriginAndElementDest"], array_merge(func_get_args(), [0]));
} catch (\Exception $e) {
self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString());