Merged in victorsl/processmaker/PM-3844 (pull request #3017)

PM-3844
This commit is contained in:
Julio Cesar Laura Avendaño
2015-10-23 18:07:14 -04:00
6 changed files with 351 additions and 446 deletions

View File

@@ -1371,12 +1371,11 @@ class Bpmn extends Handler
}
}
public function getElementsBetweenElementOriginAndElementDest(
private function __getElementsBetweenElementOriginAndElementDest(
$elementOriginUid,
$elementOriginType,
$elementDestUid,
$elementDestType,
$index
$elementDestType
) {
try {
if (isset($this->arrayElementOriginChecked[$elementOriginUid]) && $this->arrayElementOriginChecked[$elementOriginUid] == $elementOriginType) {
@@ -1388,7 +1387,7 @@ class Bpmn extends Handler
if ($elementOriginType == $elementDestType && $elementOriginUid == $elementDestUid) {
$arrayEvent = array();
$arrayEvent[$index] = array($elementDestUid, $elementDestType);
array_unshift($arrayEvent, array($elementDestUid, $elementDestType));
//Return
return $arrayEvent;
@@ -1403,16 +1402,15 @@ class Bpmn extends Handler
foreach ($arrayFlow as $value) {
$arrayFlowData = $value->toArray();
$arrayEvent = $this->getElementsBetweenElementOriginAndElementDest(
$arrayEvent = $this->__getElementsBetweenElementOriginAndElementDest(
$arrayFlowData["FLO_ELEMENT_DEST"],
$arrayFlowData["FLO_ELEMENT_DEST_TYPE"],
$elementDestUid,
$elementDestType,
$index + 1
$elementDestType
);
if (!empty($arrayEvent)) {
$arrayEvent[$index] = array($elementOriginUid, $elementOriginType);
array_unshift($arrayEvent, array($elementOriginUid, $elementOriginType));
//Return
return $arrayEvent;
@@ -1429,89 +1427,17 @@ class Bpmn extends Handler
}
}
public function getMessageEventsOfThrowTypeBetweenElementOriginAndElementDest(
public function getElementsBetweenElementOriginAndElementDest(
$elementOriginUid,
$elementOriginType,
$elementDestUid,
$elementDestType
) {
try {
$arrayEventType = array("END", "INTERMEDIATE");
$arrayEventMarker = array("MESSAGETHROW");
$this->arrayElementOriginChecked = array();
$arrayEventAux = $this->getElementsBetweenElementOriginAndElementDest(
$elementOriginUid,
$elementOriginType,
$elementDestUid,
$elementDestType,
0
);
ksort($arrayEventAux);
$arrayEvent = array();
foreach ($arrayEventAux as $value) {
if ($value[1] == "bpmnEvent") {
$event = \BpmnEventPeer::retrieveByPK($value[0]);
if (!is_null($event) &&
in_array($event->getEvnType(), $arrayEventType) && in_array($event->getEvnMarker(), $arrayEventMarker)
) {
$arrayEvent[] = $value;
}
}
}
//Return
return $arrayEvent;
} catch (\Exception $e) {
self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString());
throw $e;
}
}
public function getEmailEventTypeBetweenElementOriginAndElementDest(
$elementOriginUid,
$elementOriginType,
$elementDestUid,
$elementDestType
) {
try {
$arrayEventType = array("END", "INTERMEDIATE");
$arrayEventMarker = array("EMAIL");
$this->arrayElementOriginChecked = array();
$arrayEventAux = $this->getElementsBetweenElementOriginAndElementDest(
$elementOriginUid,
$elementOriginType,
$elementDestUid,
$elementDestType,
0
);
ksort($arrayEventAux);
$arrayEvent = array();
foreach ($arrayEventAux as $value) {
if ($value[1] == "bpmnEvent") {
$event = \BpmnEventPeer::retrieveByPK($value[0]);
if (!is_null($event) &&
in_array($event->getEvnType(), $arrayEventType) && in_array($event->getEvnMarker(), $arrayEventMarker)
) {
$arrayEvent[] = $value;
}
}
}
//Return
return $arrayEvent;
return call_user_func_array(array($this, "__getElementsBetweenElementOriginAndElementDest"), func_get_args());
} catch (\Exception $e) {
self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString());