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 {
|
||||
|
||||
Reference in New Issue
Block a user