Merge remote-tracking branch 'upstream/3.1' into HOR-998
This commit is contained in:
@@ -493,7 +493,7 @@ class InputDocument
|
||||
*
|
||||
* return array Return an array with data of an InputDocument
|
||||
*/
|
||||
public function addCasesInputDocument($applicationUid, $taskUid, $appDocComment, $inputDocumentUid, $userUid)
|
||||
public function addCasesInputDocument($applicationUid, $taskUid, $appDocComment, $inputDocumentUid, $userUid, $runningWorkflow = true)
|
||||
{
|
||||
try {
|
||||
if ((isset( $_FILES['form'] )) && ($_FILES['form']['error'] != 0)) {
|
||||
@@ -535,7 +535,60 @@ class InputDocument
|
||||
$appDocType = 'INPUT';
|
||||
$case = new \Cases();
|
||||
$delIndex = \AppDelegation::getCurrentIndex($applicationUid);
|
||||
$case->thisIsTheCurrentUser($applicationUid, $delIndex, $userUid, "REDIRECT", "casesListExtJs");
|
||||
|
||||
if ($runningWorkflow) {
|
||||
$case->thisIsTheCurrentUser($applicationUid, $delIndex, $userUid, 'REDIRECT', 'casesListExtJs');
|
||||
} else {
|
||||
$criteria = new \Criteria('workflow');
|
||||
|
||||
$criteria->add(\AppDelegationPeer::APP_UID, $applicationUid);
|
||||
$criteria->add(\AppDelegationPeer::DEL_INDEX, $delIndex);
|
||||
$criteria->add(\AppDelegationPeer::USR_UID, $userUid);
|
||||
|
||||
$rsCriteria = \ProcessUserPeer::doSelectRS($criteria);
|
||||
|
||||
if (!$rsCriteria->next()) {
|
||||
$case2 = new \ProcessMaker\BusinessModel\Cases();
|
||||
|
||||
$arrayApplicationData = $case2->getApplicationRecordByPk($applicationUid, [], false);
|
||||
|
||||
$msg = '';
|
||||
|
||||
$supervisor = new \ProcessMaker\BusinessModel\ProcessSupervisor();
|
||||
$flagps = $supervisor->isUserProcessSupervisor($arrayApplicationData['PRO_UID'], $userUid);
|
||||
|
||||
if ($flagps == false) {
|
||||
$msg = \G::LoadTranslation('ID_USER_NOT_IT_BELONGS_CASE_OR_NOT_SUPERVISOR');
|
||||
}
|
||||
|
||||
if ($msg == '') {
|
||||
$criteria = new \Criteria('workflow');
|
||||
|
||||
$criteria->add(\StepSupervisorPeer::PRO_UID, $arrayApplicationData['PRO_UID'], \Criteria::EQUAL);
|
||||
$criteria->add(\StepSupervisorPeer::STEP_TYPE_OBJ, 'INPUT_DOCUMENT', \Criteria::EQUAL);
|
||||
$criteria->add(\StepSupervisorPeer::STEP_UID_OBJ, $inputDocumentUid, \Criteria::EQUAL);
|
||||
|
||||
$rsCriteria = \StepSupervisorPeer::doSelectRS($criteria);
|
||||
|
||||
if (!$rsCriteria->next()) {
|
||||
$msg = \G::LoadTranslation('ID_USER_IS_SUPERVISOR_DOES_NOT_ASSOCIATED_INPUT_DOCUMENT');
|
||||
}
|
||||
}
|
||||
|
||||
if ($msg != '') {
|
||||
if ($runningWorkflow) {
|
||||
\G::SendMessageText($msg, 'ERROR');
|
||||
$backUrlObj = explode('sys' . SYS_SYS, $_SERVER['HTTP_REFERER']);
|
||||
|
||||
\G::header('location: ' . '/sys' . SYS_SYS . $backUrlObj[1]);
|
||||
exit(0);
|
||||
} else {
|
||||
throw new \Exception($msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Load the fields
|
||||
$arrayField = $case->loadCase($applicationUid);
|
||||
$arrayField["APP_DATA"] = array_merge($arrayField["APP_DATA"], \G::getSystemConstants());
|
||||
|
||||
@@ -179,10 +179,13 @@ class NotificationDevice
|
||||
}
|
||||
|
||||
$userIds = $arrayTaskUser;
|
||||
//sub process
|
||||
$taskAssignType = (isset($nextDel["TAS_ASSIGN_TYPE"])) ? $nextDel["TAS_ASSIGN_TYPE"] : $nextDel["SP_TYPE"];
|
||||
$message = '#' . $appFields['APP_NUMBER'] . ' : ' . $appFields['APP_TITLE'];
|
||||
$data = array(
|
||||
'processId' => $appFields['PRO_UID'],
|
||||
'taskId' => $nextDel["TAS_UID"],
|
||||
'taskAssignType' => $taskAssignType,
|
||||
'caseId' => $appFields['APP_UID'],
|
||||
'caseTitle' => $appFields['APP_TITLE'],
|
||||
'delIndex' => $iNewDelIndex,
|
||||
@@ -281,5 +284,4 @@ class NotificationDevice
|
||||
|
||||
return $arrayTaskUser;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -100,17 +100,19 @@ class PushMessageIOS
|
||||
// $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
|
||||
// if (!$fp)
|
||||
// exit("Failed to connect: $err $errstr" . PHP_EOL);
|
||||
|
||||
$alert = new \stdClass();
|
||||
$alert->{'loc-key'} = $data['taskAssignType'];
|
||||
$alert->{'loc-args'} = array($message);
|
||||
// Create the payload body
|
||||
if (!is_null($data)) {
|
||||
$body['aps'] = array(
|
||||
'alert' => $message,
|
||||
'alert' => $alert,
|
||||
'sound' => 'default',
|
||||
'data' => $data
|
||||
);
|
||||
} else {
|
||||
$body['aps'] = array(
|
||||
'alert' => $message,
|
||||
'alert' => $alert,
|
||||
'sound' => 'default'
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1523,5 +1523,57 @@ class ProcessSupervisor
|
||||
$oCriteria->setStepPosition($pos);
|
||||
$oCriteria->save();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate if the user is supervisor of the process
|
||||
*
|
||||
* @param string $projectUid Unique id of process
|
||||
* @param string $userUid Unique id of User
|
||||
*
|
||||
* @return bool Return
|
||||
*/
|
||||
public function isUserProcessSupervisor($projectUid, $userUid)
|
||||
{
|
||||
try {
|
||||
$criteria = new \Criteria('workflow');
|
||||
|
||||
$criteria->add(\ProcessUserPeer::USR_UID, $userUid, \Criteria::EQUAL);
|
||||
$criteria->add(\ProcessUserPeer::PRO_UID, $projectUid, \Criteria::EQUAL);
|
||||
$criteria->add(\ProcessUserPeer::PU_TYPE, 'SUPERVISOR', \Criteria::EQUAL);
|
||||
|
||||
$rsCriteria = \ProcessUserPeer::doSelectRS($criteria);
|
||||
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
||||
|
||||
if ($rsCriteria->next()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$criteria = new \Criteria('workflow');
|
||||
|
||||
$criteria->addSelectColumn(\ProcessUserPeer::USR_UID);
|
||||
|
||||
$criteria->add(\ProcessUserPeer::PRO_UID, $projectUid, \Criteria::EQUAL);
|
||||
$criteria->add(\ProcessUserPeer::PU_TYPE, 'GROUP_SUPERVISOR', \Criteria::EQUAL);
|
||||
|
||||
$rsCriteria = \ProcessUserPeer::doSelectRS($criteria);
|
||||
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
||||
|
||||
while ($rsCriteria->next()) {
|
||||
$record = $rsCriteria->getRow();
|
||||
|
||||
$groupUid = $record['USR_UID'];
|
||||
|
||||
$obj = \GroupUserPeer::retrieveByPK($groupUid, $userUid);
|
||||
|
||||
if (!is_null($obj)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
//Return
|
||||
return false;
|
||||
} catch (\Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -150,8 +150,12 @@ class Table
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getTableData($tab_uid, $pro_uid = '', $reportFlag = false)
|
||||
public function getTableData($tab_uid, $pro_uid = '', $filter = null, $reportFlag = false)
|
||||
{
|
||||
//Validation
|
||||
$inputFilter = new \InputFilter();
|
||||
$filter = $inputFilter->sanitizeInputValue($filter, 'nosql');
|
||||
|
||||
//VALIDATION
|
||||
if ($reportFlag) {
|
||||
$pro_uid = $this->validateProUid($pro_uid);
|
||||
@@ -160,7 +164,7 @@ class Table
|
||||
|
||||
$additionalTables = new AdditionalTables();
|
||||
$table = $additionalTables->load($tab_uid, true);
|
||||
$result = $additionalTables->getAllData($tab_uid);
|
||||
$result = $additionalTables->getAllData($tab_uid, null, null, null, $filter);
|
||||
$primaryKeys = $additionalTables->getPrimaryKeys();
|
||||
if (is_array($result['rows'])) {
|
||||
foreach ($result['rows'] as $i => $row) {
|
||||
|
||||
@@ -922,6 +922,7 @@ class Variable
|
||||
$sqlOrderBy = " ORDER BY " . $sFieldSel;
|
||||
}
|
||||
|
||||
$start = 0;
|
||||
$sqlLimit = "";
|
||||
if ($start >= 0) {
|
||||
$sqlLimit = " LIMIT " . $start;
|
||||
@@ -943,17 +944,43 @@ class Variable
|
||||
$row = $ds->getRow();
|
||||
if (isset($row["DBS_TYPE"])) {
|
||||
if ($row["DBS_TYPE"] === "pgsql") {
|
||||
$sqlLimit = $this->limitPgsql($start, $limit);
|
||||
if ($start >= 0) {
|
||||
$sqlLimit = " OFFSET " . $start;
|
||||
}
|
||||
if ($limit !== "") {
|
||||
$sqlLimit = $sqlLimit . " LIMIT " . $limit;
|
||||
}
|
||||
}
|
||||
if ($row["DBS_TYPE"] === "mssql") {
|
||||
return $this->limitMssqlOracle($sqlSelect, $sqlFrom, $sqlWhere, $sqlGroupBy, $sqlHaving, $sqlOrderBy, $start, $limit, true);
|
||||
$sqlLimit = "";
|
||||
if ($limit !== "") {
|
||||
$wordsSearch = [" DISTINCT ", " ALL "];
|
||||
$wordsSearchCount = count($wordsSearch);
|
||||
for ($i = 0; $i < $wordsSearchCount; $i++) {
|
||||
$stringSearch = $wordsSearch[$i];
|
||||
$stringPosition = strpos($sqlSelect, $stringSearch);
|
||||
if ($stringPosition !== false) {
|
||||
$stringLength = strlen($stringSearch);
|
||||
$string1 = substr($sqlSelect, 0, $stringPosition + $stringLength);
|
||||
$string2 = substr($sqlSelect, $stringPosition + $stringLength);
|
||||
$sqlSelect = $string1 . "TOP(" . $limit . ") " . $string2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($row["DBS_TYPE"] === "oracle") {
|
||||
return $this->limitMssqlOracle($sqlSelect, $sqlFrom, $sqlWhere, $sqlGroupBy, $sqlHaving, $sqlOrderBy, $start, $limit, false);
|
||||
$sqlLimit = "";
|
||||
if ($limit !== "") {
|
||||
if (strpos($sqlWhere, "WHERE ") === false) {
|
||||
$sqlWhere = " WHERE ROWNUM <= " . $limit;
|
||||
} else {
|
||||
$sqlWhere = $sqlWhere . " AND ROWNUM <= " . $limit;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $sqlSelect . $sqlFrom . $sqlWhere . $sqlGroupBy . $sqlHaving . $sqlOrderBy . $sqlLimit;
|
||||
return $sqlSelect . $sqlFrom . $sqlWhere . $sqlGroupBy . $sqlHaving . " " . $sqlOrderBy . $sqlLimit;
|
||||
}
|
||||
if (!empty($sqlParsed['CALL'])) {
|
||||
$sCall = "CALL ";
|
||||
@@ -981,36 +1008,6 @@ class Variable
|
||||
}
|
||||
}
|
||||
|
||||
public function limitPgsql($start = 0, $limit = "")
|
||||
{
|
||||
$sqlLimit = "";
|
||||
if ($start >= 0) {
|
||||
$sqlLimit = " OFFSET " . $start;
|
||||
}
|
||||
if ($limit !== "") {
|
||||
$sqlLimit = $sqlLimit . " LIMIT " . $limit;
|
||||
}
|
||||
return $sqlLimit;
|
||||
}
|
||||
|
||||
public function limitMssqlOracle($sqlSelect = "", $sqlFrom = "", $sqlWhere = "", $sqlGroupBy = "", $sqlHaving = "", $sqlOrderBy = "", $start = 0, $limit = "", $isMssql = true)
|
||||
{
|
||||
$sqlLimit = "";
|
||||
if ($start >= 0) {
|
||||
$sqlLimit = "WHERE rn >= " . $start;
|
||||
}
|
||||
if ($start >= 0 && $limit != "") {
|
||||
$sqlLimit = "WHERE rn BETWEEN " . $start . " AND " . $limit;
|
||||
}
|
||||
$sql = ""
|
||||
. "SELECT * FROM ("
|
||||
. " " . $sqlSelect . ", ROW_NUMBER() OVER( " . $sqlOrderBy . " desc )-1 " . ($isMssql ? " AS " : "") . " rn "
|
||||
. " " . $sqlFrom . $sqlWhere . $sqlGroupBy . $sqlHaving
|
||||
. ")" . ($isMssql ? " AS A " : "")
|
||||
. $sqlLimit;
|
||||
return $sql;
|
||||
}
|
||||
|
||||
public function getVariableTypeByName($processUid, $variableName)
|
||||
{
|
||||
try {
|
||||
|
||||
@@ -174,11 +174,27 @@ abstract class Importer
|
||||
/*----------------------------------********---------------------------------*/
|
||||
if($objectsToImport === ''){
|
||||
/*----------------------------------********---------------------------------*/
|
||||
try {
|
||||
$this->verifyIfTheProcessHasStartedCases();
|
||||
} catch (\Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
$this->removeProject();
|
||||
/*----------------------------------********---------------------------------*/
|
||||
} else {
|
||||
$granularObj = new \ProcessMaker\BusinessModel\Migrator\GranularImporter();
|
||||
$objectList = $granularObj->loadObjectsListSelected($this->importData, $objectsToImport);
|
||||
try {
|
||||
foreach ($objectList as $rowObject) {
|
||||
if ($rowObject['name'] === 'PROCESSDEFINITION') {
|
||||
$this->verifyIfTheProcessHasStartedCases();
|
||||
}
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
$exception = new ImportException($e->getMessage());
|
||||
$exception->setNameException($e->getMessage());
|
||||
throw $exception;
|
||||
}
|
||||
try {
|
||||
foreach ($objectList as $rowObject) {
|
||||
if ($rowObject['name'] === 'PROCESSDEFINITION') {
|
||||
@@ -351,6 +367,46 @@ abstract class Importer
|
||||
$project->remove(true, false, $onlyDiagram);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check tasks that have cases.
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function verifyIfTheProcessHasStartedCases()
|
||||
{
|
||||
$tasksIds = array();
|
||||
$importedTasks = $this->importData["tables"]["workflow"]["tasks"];
|
||||
foreach ($importedTasks as $value) {
|
||||
$tasksIds[] = $value["TAS_UID"];
|
||||
}
|
||||
|
||||
$criteria = new \Criteria("workflow");
|
||||
$criteria->addSelectColumn(\TaskPeer::TAS_UID);
|
||||
$criteria->add(\TaskPeer::PRO_UID, $this->metadata["uid"], \Criteria::EQUAL);
|
||||
$criteria->add(\TaskPeer::TAS_UID, $tasksIds, \Criteria::NOT_IN);
|
||||
$ds = \TaskPeer::doSelectRS($criteria);
|
||||
$ds->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
||||
$tasksEliminatedIds = array();
|
||||
while ($ds->next()) {
|
||||
$row = $ds->getRow();
|
||||
$tasksEliminatedIds[] = $row["TAS_UID"];
|
||||
}
|
||||
|
||||
$criteria = new \Criteria("workflow");
|
||||
$criteria->addSelectColumn(\AppDelegationPeer::TAS_UID);
|
||||
$criteria->add(\AppDelegationPeer::PRO_UID, $this->metadata["uid"], \Criteria::EQUAL);
|
||||
$criteria->add(\AppDelegationPeer::DEL_FINISH_DATE, null, \Criteria::ISNULL);
|
||||
$criteria->add(\AppDelegationPeer::TAS_UID, $tasksEliminatedIds, \Criteria::IN);
|
||||
$ds = \AppDelegationPeer::doSelectRS($criteria);
|
||||
$ds->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
||||
$ds->next();
|
||||
$row = $ds->getRow();
|
||||
if (isset($row["TAS_UID"])) {
|
||||
$exception = new \Exception(\G::LoadTranslation("ID_PROCESS_CANNOT_BE_UPDATED_THERE_ARE_TASKS_WITH_ACTIVE_CASES"));
|
||||
throw $exception;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the temporal file save directory
|
||||
* @param $dirName
|
||||
@@ -481,7 +537,7 @@ abstract class Importer
|
||||
foreach ($arrayWorkflowTables["tasks"] as $key => $value) {
|
||||
$arrayTaskData = $value;
|
||||
|
||||
if (!in_array($arrayTaskData["TAS_TYPE"], array("GATEWAYTOGATEWAY", "WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT", "START-TIMER-EVENT", "INTERMEDIATE-CATCH-TIMER-EVENT", "END-EMAIL-EVENT", "INTERMEDIATE-EMAIL-EVENT"))) {
|
||||
if (!in_array($arrayTaskData["TAS_TYPE"], array("GATEWAYTOGATEWAY", "WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT", "START-TIMER-EVENT", "INTERMEDIATE-CATCH-TIMER-EVENT", "END-EMAIL-EVENT", "INTERMEDIATE-THROW-EMAIL-EVENT"))) {
|
||||
$result = $workflow->updateTask($arrayTaskData["TAS_UID"], $arrayTaskData);
|
||||
}
|
||||
}
|
||||
|
||||
105
workflow/engine/src/ProcessMaker/Policies/AccessControl.php
Normal file
105
workflow/engine/src/ProcessMaker/Policies/AccessControl.php
Normal file
@@ -0,0 +1,105 @@
|
||||
<?php
|
||||
namespace ProcessMaker\Policies;
|
||||
|
||||
use \Luracast\Restler\iAuthenticate;
|
||||
use \Luracast\Restler\RestException;
|
||||
use \Luracast\Restler\Defaults;
|
||||
use \Luracast\Restler\Util;
|
||||
use \Luracast\Restler\Scope;
|
||||
use \OAuth2\Request;
|
||||
use \ProcessMaker\Services\OAuth2\Server;
|
||||
use \ProcessMaker\BusinessModel\User;
|
||||
|
||||
class AccessControl implements iAuthenticate
|
||||
{
|
||||
public static $role;
|
||||
public static $permission;
|
||||
public static $className;
|
||||
private $userUid = null;
|
||||
private $oUser;
|
||||
|
||||
/**
|
||||
* This method checks if an endpoint permission or permissions access
|
||||
*
|
||||
* @return bool
|
||||
* @throws RestException
|
||||
*/
|
||||
public function __isAllowed()
|
||||
{
|
||||
$response = true;
|
||||
$oServerOauth = new Server();
|
||||
$this->oUser = new User();
|
||||
$server = $oServerOauth->getServer();
|
||||
$request = Request::createFromGlobals();
|
||||
$allowed = $server->verifyResourceRequest($request);
|
||||
$this->userUid = $oServerOauth->getUserId();
|
||||
$this->oUser->loadUserRolePermission('PROCESSMAKER', $this->userUid);
|
||||
$metadata = Util::nestedValue($this->restler, 'apiMethodInfo', 'metadata');
|
||||
if ($allowed && !empty($this->userUid) && (!empty($metadata['access']) && $metadata['access'] == 'protected')) {
|
||||
$parameters = Util::nestedValue($this->restler, 'apiMethodInfo', 'parameters');
|
||||
if (!is_null(self::$className) && is_string(self::$className)) {
|
||||
$authObj = Scope::get(self::$className);
|
||||
$authObj->parameters = $parameters;
|
||||
$authObj->permission = self::$permission;
|
||||
if (!method_exists($authObj, Defaults::$authenticationMethod)) {
|
||||
throw new RestException (
|
||||
500,
|
||||
'Authentication Class should implement iAuthenticate');
|
||||
} elseif (!$authObj->{Defaults::$authenticationMethod}()) {
|
||||
throw new RestException(401);
|
||||
}
|
||||
} elseif (!$this->verifyAccess(self::$permission)) {
|
||||
throw new RestException(401);
|
||||
}
|
||||
}
|
||||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function __getWWWAuthenticateString()
|
||||
{
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $permissions
|
||||
* @return bool
|
||||
*/
|
||||
public function verifyAccess($permissions)
|
||||
{
|
||||
$response = false;
|
||||
$access = -1;
|
||||
if (!is_array($permissions)) {
|
||||
$access = $this->userCanAccess($permissions);
|
||||
} elseif (count($permissions) > 0) {
|
||||
foreach ($permissions as $perm) {
|
||||
$access = $this->userCanAccess($perm);
|
||||
if ($access == 1) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($access == 1 || empty($permissions)) {
|
||||
$response = true;
|
||||
}
|
||||
return $response;
|
||||
}
|
||||
|
||||
public function userCanAccess($perm)
|
||||
{
|
||||
$res = -1;
|
||||
$permissions = Util::nestedValue($this->oUser, 'aUserInfo', 'PROCESSMAKER', 'PERMISSIONS');
|
||||
if (isset($permissions)) {
|
||||
$res = -3;
|
||||
foreach ($permissions as $key => $val) {
|
||||
if ($perm == $val['PER_CODE']) {
|
||||
$res = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $res;
|
||||
}
|
||||
}
|
||||
@@ -31,7 +31,8 @@ class BpmnWorkflow extends Project\Bpmn
|
||||
"intermediate-catch-message-event" => array("type" => "INTERMEDIATE-CATCH-MESSAGE-EVENT", "prefix" => "icme-"),
|
||||
"start-timer-event" => array("type" => "START-TIMER-EVENT", "prefix" => "ste-"),
|
||||
"intermediate-catch-timer-event" => array("type" => "INTERMEDIATE-CATCH-TIMER-EVENT", "prefix" => "icte-"),
|
||||
"end-email-event" => array("type" => "END-EMAIL-EVENT", "prefix" => "eee-")
|
||||
"end-email-event" => array("type" => "END-EMAIL-EVENT", "prefix" => "eee-"),
|
||||
"intermediate-throw-email-event" => array("type" => "INTERMEDIATE-THROW-EMAIL-EVENT", "prefix" => "itee-")
|
||||
);
|
||||
|
||||
private $arrayElementTaskRelation = array();
|
||||
@@ -885,10 +886,6 @@ class BpmnWorkflow extends Project\Bpmn
|
||||
\BpmnFlowPeer::FLO_ELEMENT_ORIGIN_TYPE => "bpmnGateway"
|
||||
));
|
||||
|
||||
//if ($arrayFlow > 0) {
|
||||
// $this->wp->resetTaskRoutes($activityUid);
|
||||
//}
|
||||
|
||||
foreach ($arrayFlow as $value) {
|
||||
$arrayFlowData = $value->toArray();
|
||||
|
||||
@@ -980,12 +977,13 @@ class BpmnWorkflow extends Project\Bpmn
|
||||
|
||||
if (!is_null($arrayEventData)) {
|
||||
$arrayEventType = array("INTERMEDIATE");
|
||||
$arrayEventMarker = array("MESSAGECATCH", "TIMER");
|
||||
$arrayEventMarker = array("MESSAGECATCH", "TIMER", "EMAIL");
|
||||
|
||||
if (in_array($arrayEventData["EVN_TYPE"], $arrayEventType) && in_array($arrayEventData["EVN_MARKER"], $arrayEventMarker)) {
|
||||
$arrayKey = array(
|
||||
"MESSAGECATCH" => "intermediate-catch-message-event",
|
||||
"TIMER" => "intermediate-catch-timer-event"
|
||||
"TIMER" => "intermediate-catch-timer-event",
|
||||
"EMAIL" => "intermediate-throw-email-event"
|
||||
);
|
||||
|
||||
$taskUid = $this->createTaskByElement(
|
||||
|
||||
@@ -85,8 +85,9 @@ class InputDocument extends Api
|
||||
{
|
||||
try {
|
||||
$userUid = $this->getUserId();
|
||||
|
||||
$inputDocument = new \ProcessMaker\BusinessModel\Cases\InputDocument();
|
||||
$response = $inputDocument->addCasesInputDocument($app_uid, $tas_uid, $app_doc_comment, $inp_doc_uid, $userUid);
|
||||
$response = $inputDocument->addCasesInputDocument($app_uid, $tas_uid, $app_doc_comment, $inp_doc_uid, $userUid, false);
|
||||
return $response;
|
||||
} catch (\Exception $e) {
|
||||
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
|
||||
|
||||
@@ -902,10 +902,10 @@ class Light extends Api
|
||||
$dynaForm->setFormatFieldNameInUppercase(false);
|
||||
$_SESSION['PROCESS'] = $prj_uid;
|
||||
$response = $dynaForm->getDynaForm($dyn_uid);
|
||||
$result = $this->parserDataDynaForm($response);
|
||||
$result['formContent'] = (isset($result['formContent']) && $result['formContent'] != null)?json_decode($result['formContent']):"";
|
||||
$result = $this->parserDataDynaForm($response);
|
||||
$result['formContent'] = (isset($result['formContent']) && $result['formContent'] != null) ? \G::json_decode($result['formContent']) : "";
|
||||
\G::LoadClass("pmDynaform");
|
||||
$pmDynaForm = new \pmDynaform();
|
||||
$pmDynaForm = new \pmDynaform(["CURRENT_DYNAFORM" => $dyn_uid]);
|
||||
$pmDynaForm->jsonr($result['formContent']);
|
||||
return $result;
|
||||
} catch (\Exception $e) {
|
||||
|
||||
@@ -79,11 +79,11 @@ class Pmtable extends Api
|
||||
*
|
||||
* @url GET /:pmt_uid/data
|
||||
*/
|
||||
public function doGetPmTableData($pmt_uid)
|
||||
public function doGetPmTableData($pmt_uid, $filter = null)
|
||||
{
|
||||
try {
|
||||
$oPmTable = new \ProcessMaker\BusinessModel\Table();
|
||||
$response = $oPmTable->getTableData($pmt_uid);
|
||||
$response = $oPmTable->getTableData($pmt_uid, null, $filter);
|
||||
return $response;
|
||||
} catch (\Exception $e) {
|
||||
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
|
||||
|
||||
@@ -87,7 +87,7 @@ class ReportTable extends Api
|
||||
{
|
||||
try {
|
||||
$oReportTable = new \ProcessMaker\BusinessModel\Table();
|
||||
$response = $oReportTable->getTableData($rep_uid, $prj_uid, true);
|
||||
$response = $oReportTable->getTableData($rep_uid, $prj_uid, null, true);
|
||||
return $response;
|
||||
} catch (\Exception $e) {
|
||||
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
|
||||
|
||||
@@ -37,10 +37,13 @@ class Common extends \Maveriks\Util\Common
|
||||
}
|
||||
|
||||
$numc = 50;
|
||||
|
||||
$total = $numc - 2 - strlen($data);
|
||||
if($total < 0){
|
||||
$total = 0;
|
||||
}
|
||||
switch ($option) {
|
||||
case "BAR":
|
||||
echo "\r" . "| " . $data . str_repeat(" ", $numc - 2 - strlen($data));
|
||||
echo "\r" . "| " . $data . str_repeat(" ", $total);
|
||||
break;
|
||||
case "TEXT":
|
||||
echo "\r" . '| ' . $data . "\n";
|
||||
|
||||
Reference in New Issue
Block a user