@@ -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());
|
||||
|
||||
@@ -1511,5 +1511,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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -348,11 +348,45 @@ class ReportTable
|
||||
$result = new \stdClass();
|
||||
|
||||
try {
|
||||
$additionalTableUid = $arrayData['REP_TAB_UID'];
|
||||
$flagNew = 0;
|
||||
|
||||
$additionalTables = \AdditionalTablesPeer::retrieveByPK($arrayData['REP_TAB_UID']);
|
||||
|
||||
if (!is_null($additionalTables)){
|
||||
$arrayData['REP_TAB_NAME'] = 'PMT_' . trim($arrayData['REP_TAB_NAME']);
|
||||
|
||||
if ($additionalTables->getAddTabName() != $arrayData['REP_TAB_NAME']) {
|
||||
$arrayData['REP_TAB_UID'] = '';
|
||||
$flagNew = 1;
|
||||
}
|
||||
}
|
||||
|
||||
ob_start();
|
||||
|
||||
$arrayData['PRO_UID'] = trim($arrayData['PRO_UID']);
|
||||
$arrayData['columns'] = \G::json_decode(stripslashes($arrayData['columns'])); //Decofing data columns
|
||||
|
||||
if ($flagNew == 1) {
|
||||
$arrayNewColumn = [];
|
||||
$counter = 0;
|
||||
|
||||
foreach ($arrayData['columns'] as $value) {
|
||||
$column = $value;
|
||||
|
||||
if (!preg_match('/^(?:APP_UID|APP_NUMBER|APP_STATUS|ROW)$/', $column->field_name)) {
|
||||
$column->uid = '';
|
||||
$column->_index = $counter;
|
||||
|
||||
$arrayNewColumn[] = $column;
|
||||
|
||||
$counter++;
|
||||
}
|
||||
}
|
||||
|
||||
$arrayData['columns'] = $arrayNewColumn;
|
||||
}
|
||||
|
||||
$additionalTable = new \AdditionalTables();
|
||||
|
||||
$repTabClassName = $additionalTable->getPHPName($arrayData['REP_TAB_NAME']);
|
||||
@@ -531,6 +565,18 @@ class ReportTable
|
||||
|
||||
$result->success = true;
|
||||
$result->message = $result->msg = $buildResult;
|
||||
|
||||
require_once(PATH_CORE . 'controllers/pmTablesProxy.php');
|
||||
|
||||
if ($flagNew == 1) {
|
||||
$pmTablesProxy = new \pmTablesProxy();
|
||||
|
||||
$obj = new \stdClass();
|
||||
$obj->rows = \G::json_encode([['id' => $additionalTableUid, 'type' => '']]);
|
||||
|
||||
//Delete Report Table
|
||||
$resultDeleteReportTable = $pmTablesProxy->delete($obj);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
$buildResult = ob_get_contents();
|
||||
|
||||
|
||||
@@ -1270,6 +1270,40 @@ class TimerEvent
|
||||
}
|
||||
|
||||
if ($flagCase) {
|
||||
//Update Timer-Event
|
||||
$arrayData = [];
|
||||
|
||||
switch ($arrayTimerEventData['TMREVN_OPTION']) {
|
||||
case 'HOURLY':
|
||||
case 'DAILY':
|
||||
case 'MONTHLY':
|
||||
case 'EVERY':
|
||||
if ($timerEventNextRunDateNew == '') {
|
||||
$timerEventNextRunDateNew = $this->getNextRunDateByDataAndDatetime(
|
||||
$arrayTimerEventData, $timerEventNextRunDate, false
|
||||
);
|
||||
}
|
||||
|
||||
if ($arrayTimerEventData['TMREVN_OPTION'] != 'EVERY' &&
|
||||
$arrayTimerEventData['TMREVN_END_DATE'] . '' != '' &&
|
||||
strtotime($timerEventNextRunDateNew) > strtotime($arrayTimerEventData['TMREVN_END_DATE'] . ' 23:59:59')
|
||||
) {
|
||||
$arrayData['TMREVN_STATUS'] = 'PROCESSED';
|
||||
} else {
|
||||
$arrayData['TMREVN_NEXT_RUN_DATE'] = $timerEventNextRunDateNew;
|
||||
}
|
||||
break;
|
||||
case 'ONE-DATE-TIME':
|
||||
$arrayData['TMREVN_STATUS'] = 'PROCESSED';
|
||||
break;
|
||||
}
|
||||
|
||||
$arrayData['TMREVN_LAST_RUN_DATE'] = $timerEventNextRunDate;
|
||||
$arrayData['TMREVN_LAST_EXECUTION_DATE'] = date('Y-m-d H:i:s');
|
||||
|
||||
$result = $this->singleUpdate($arrayTimerEventData['TMREVN_UID'], $arrayData);
|
||||
|
||||
//Show info in terminal
|
||||
if ($flagRecord) {
|
||||
$common->frontEndShow("TEXT", "");
|
||||
}
|
||||
@@ -1314,36 +1348,6 @@ class TimerEvent
|
||||
$this->log("CREATED-NEW-CASE", "Failed: " . $arrayResult["message"] . ", PRO_UID: " . $arrayTimerEventData["PRJ_UID"]);
|
||||
}
|
||||
|
||||
//Update Timer-Event
|
||||
$arrayData = array();
|
||||
|
||||
switch ($arrayTimerEventData["TMREVN_OPTION"]) {
|
||||
case "HOURLY":
|
||||
case "DAILY":
|
||||
case "MONTHLY":
|
||||
case "EVERY":
|
||||
if ($timerEventNextRunDateNew == "") {
|
||||
$timerEventNextRunDateNew = $this->getNextRunDateByDataAndDatetime($arrayTimerEventData, $timerEventNextRunDate, false);
|
||||
}
|
||||
|
||||
if ($arrayTimerEventData["TMREVN_OPTION"] != "EVERY" &&
|
||||
$arrayTimerEventData["TMREVN_END_DATE"] . "" != "" && strtotime($timerEventNextRunDateNew) > strtotime($arrayTimerEventData["TMREVN_END_DATE"] . " 23:59:59")
|
||||
) {
|
||||
$arrayData["TMREVN_STATUS"] = "PROCESSED";
|
||||
} else {
|
||||
$arrayData["TMREVN_NEXT_RUN_DATE"] = $timerEventNextRunDateNew;
|
||||
}
|
||||
break;
|
||||
case "ONE-DATE-TIME":
|
||||
$arrayData["TMREVN_STATUS"] = "PROCESSED";
|
||||
break;
|
||||
}
|
||||
|
||||
$arrayData["TMREVN_LAST_RUN_DATE"] = $timerEventNextRunDate;
|
||||
$arrayData["TMREVN_LAST_EXECUTION_DATE"] = date("Y-m-d H:i:s");
|
||||
|
||||
$result = $this->singleUpdate($arrayTimerEventData["TMREVN_UID"], $arrayData);
|
||||
|
||||
$flagRecord = true;
|
||||
}
|
||||
}
|
||||
@@ -1513,6 +1517,7 @@ class TimerEvent
|
||||
}
|
||||
|
||||
if ($flagCase) {
|
||||
//Show info in terminal
|
||||
if ($flagRecord) {
|
||||
$common->frontEndShow("TEXT", "");
|
||||
}
|
||||
|
||||
@@ -504,16 +504,30 @@ class User
|
||||
\G::LoadSystem("rbac");
|
||||
|
||||
//Verify data
|
||||
$process = new \ProcessMaker\BusinessModel\Process();
|
||||
$validator = new \ProcessMaker\BusinessModel\Validator();
|
||||
|
||||
$validator->throwExceptionIfDataIsNotArray($arrayData, "\$arrayData");
|
||||
$validator->throwExceptionIfDataIsEmpty($arrayData, "\$arrayData");
|
||||
|
||||
//Set data
|
||||
$arrayData = array_change_key_case($arrayData, CASE_UPPER);
|
||||
$arrayDataAux = array_change_key_case($arrayData, CASE_UPPER);
|
||||
$arrayData = $arrayDataAux;
|
||||
|
||||
unset($arrayData["USR_UID"]);
|
||||
unset(
|
||||
$arrayData['USR_UID'],
|
||||
$arrayData['USR_COST_BY_HOUR'],
|
||||
$arrayData['USR_UNIT_COST']
|
||||
);
|
||||
|
||||
/*----------------------------------********---------------------------------*/
|
||||
if (array_key_exists('USR_COST_BY_HOUR', $arrayDataAux)) {
|
||||
$arrayData['USR_COST_BY_HOUR'] = $arrayDataAux['USR_COST_BY_HOUR'];
|
||||
}
|
||||
|
||||
if (array_key_exists('USR_UNIT_COST', $arrayDataAux)) {
|
||||
$arrayData['USR_UNIT_COST'] = $arrayDataAux['USR_UNIT_COST'];
|
||||
}
|
||||
/*----------------------------------********---------------------------------*/
|
||||
|
||||
$this->throwExceptionIfDataIsInvalid("", $arrayData);
|
||||
|
||||
@@ -604,16 +618,31 @@ class User
|
||||
\G::LoadSystem("rbac");
|
||||
|
||||
//Verify data
|
||||
$process = new \ProcessMaker\BusinessModel\Process();
|
||||
$validator = new \ProcessMaker\BusinessModel\Validator();
|
||||
|
||||
$validator->throwExceptionIfDataIsNotArray($arrayData, "\$arrayData");
|
||||
$validator->throwExceptionIfDataIsEmpty($arrayData, "\$arrayData");
|
||||
|
||||
//Set data
|
||||
$arrayData = array_change_key_case($arrayData, CASE_UPPER);
|
||||
$arrayDataAux = array_change_key_case($arrayData, CASE_UPPER);
|
||||
$arrayData = $arrayDataAux;
|
||||
$arrayDataBackup = $arrayData;
|
||||
|
||||
unset(
|
||||
$arrayData['USR_COST_BY_HOUR'],
|
||||
$arrayData['USR_UNIT_COST']
|
||||
);
|
||||
|
||||
/*----------------------------------********---------------------------------*/
|
||||
if (array_key_exists('USR_COST_BY_HOUR', $arrayDataAux)) {
|
||||
$arrayData['USR_COST_BY_HOUR'] = $arrayDataAux['USR_COST_BY_HOUR'];
|
||||
}
|
||||
|
||||
if (array_key_exists('USR_UNIT_COST', $arrayDataAux)) {
|
||||
$arrayData['USR_UNIT_COST'] = $arrayDataAux['USR_UNIT_COST'];
|
||||
}
|
||||
/*----------------------------------********---------------------------------*/
|
||||
|
||||
//Verify data
|
||||
$this->throwExceptionIfNotExistsUser($userUid, $this->arrayFieldNameForException["usrUid"]);
|
||||
|
||||
@@ -625,12 +654,13 @@ class User
|
||||
$permission = $this->loadUserRolePermission("PROCESSMAKER", $userUidLogged);
|
||||
|
||||
foreach ($permission as $key => $value) {
|
||||
if ($value["PER_CODE"] == "PM_USERS") {
|
||||
if (preg_match('/^(?:PM_USERS|PM_EDITPERSONALINFO)$/', $value['PER_CODE'])) {
|
||||
$countPermission = $countPermission + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($countPermission != 1) {
|
||||
if ($countPermission == 0) {
|
||||
throw new \Exception(\G::LoadTranslation("ID_USER_CAN_NOT_UPDATE", array($userUidLogged)));
|
||||
}
|
||||
|
||||
@@ -1260,9 +1290,7 @@ class User
|
||||
\G::resizeImage(PATH_IMAGES_ENVIRONMENT_USERS . $userUid . '.' . $aAux[1], 96, 96, PATH_IMAGES_ENVIRONMENT_USERS . $userUid . '.gif');
|
||||
}
|
||||
} else {
|
||||
$result->success = false;
|
||||
$result->fileError = true;
|
||||
throw (new \Exception($result));
|
||||
throw new \Exception(\G::LoadTranslation('ID_ERROR') . ' ' . $_FILES['USR_PHOTO']['error']);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
throw $e;
|
||||
@@ -1409,5 +1437,38 @@ class User
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* AuditLog
|
||||
*
|
||||
* @param string $option Option
|
||||
* @param array $arrayData Data
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function auditLog($option, array $arrayData)
|
||||
{
|
||||
try {
|
||||
$firstName = (array_key_exists('USR_FIRSTNAME', $arrayData))? ' - First Name: ' . $arrayData['USR_FIRSTNAME'] : '';
|
||||
$lastName = (array_key_exists('USR_LASTNAME', $arrayData))? ' - Last Name: ' . $arrayData['USR_LASTNAME'] : '';
|
||||
$email = (array_key_exists('USR_EMAIL', $arrayData))? ' - Email: ' . $arrayData['USR_EMAIL'] : '';
|
||||
$dueDate = (array_key_exists('USR_DUE_DATE', $arrayData))? ' - Due Date: ' . $arrayData['USR_DUE_DATE'] : '';
|
||||
$status = (array_key_exists('USR_STATUS', $arrayData))? ' - Status: ' . $arrayData['USR_STATUS'] : '';
|
||||
$address = (array_key_exists('USR_ADDRESS', $arrayData))? ' - Address: ' . $arrayData['USR_ADDRESS'] : '';
|
||||
$phone = (array_key_exists('USR_PHONE', $arrayData))? ' - Phone: ' . $arrayData['USR_PHONE'] : '';
|
||||
$zipCode = (array_key_exists('USR_ZIP_CODE', $arrayData))? ' - Zip Code: ' . $arrayData['USR_ZIP_CODE'] : '';
|
||||
$position = (array_key_exists('USR_POSITION', $arrayData))? ' - Position: ' . $arrayData['USR_POSITION'] : '';
|
||||
$role = (array_key_exists('USR_ROLE', $arrayData))? ' - Role: ' . $arrayData['USR_ROLE'] : '';
|
||||
$languageDef = (array_key_exists('USR_DEFAULT_LANG', $arrayData))? ' - Default Language: ' . $arrayData['USR_DEFAULT_LANG'] : '';
|
||||
$timeZone = (array_key_exists('USR_TIME_ZONE', $arrayData))? ' - Time Zone: ' . $arrayData['USR_TIME_ZONE'] : '';
|
||||
|
||||
$str = 'User Name: ' . $arrayData['USR_USERNAME'] . ' - User ID: (' . $arrayData['USR_UID'] . ')' .
|
||||
$firstName . $lastName . $email . $dueDate . $status . $address . $phone . $zipCode . $position . $role . $timeZone . $languageDef;
|
||||
|
||||
\G::auditLog(($option == 'INS')? 'CreateUser' : 'UpdateUser', $str);
|
||||
} catch (\Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,8 @@ use \G;
|
||||
|
||||
class Variable
|
||||
{
|
||||
public $variableTypes = array('string', 'integer', 'float', 'boolean', 'datetime', 'grid', 'array', 'file');
|
||||
|
||||
/**
|
||||
* Create Variable for a Process
|
||||
*
|
||||
@@ -44,6 +46,7 @@ class Variable
|
||||
throw new \Exception(\G::LoadTranslation("ID_CAN_NOT_BE_NULL", array('$var_name' )));
|
||||
}
|
||||
if (isset($arrayData["VAR_FIELD_TYPE"])) {
|
||||
$arrayData["VAR_FIELD_TYPE"] = $this->validateVarFieldType($arrayData["VAR_FIELD_TYPE"]);
|
||||
$variable->setVarFieldType($arrayData["VAR_FIELD_TYPE"]);
|
||||
} else {
|
||||
throw new \Exception(\G::LoadTranslation("ID_CAN_NOT_BE_NULL", array('$var_field_type' )));
|
||||
@@ -151,6 +154,7 @@ class Variable
|
||||
$variable->setVarName($arrayData["VAR_NAME"]);
|
||||
}
|
||||
if (isset($arrayData["VAR_FIELD_TYPE"])) {
|
||||
$arrayData["VAR_FIELD_TYPE"] = $this->validateVarFieldType($arrayData["VAR_FIELD_TYPE"]);
|
||||
$variable->setVarFieldType($arrayData["VAR_FIELD_TYPE"]);
|
||||
}
|
||||
if (isset($arrayData["VAR_FIELD_SIZE"])) {
|
||||
@@ -1076,4 +1080,13 @@ class Variable
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
public function validateVarFieldType($type)
|
||||
{
|
||||
$vType = strtolower($type);
|
||||
if(!in_array($vType, $this->variableTypes)) {
|
||||
throw new \Exception(\G::LoadTranslation("ID_RECORD_CANNOT_BE_CREATED"));
|
||||
}
|
||||
return $vType;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user