Merged in darojas/processmaker (pull request #444)

Se modifica update start event de Case Scheduler y Web Entry. Se incluye validacion para el campo sch_option en Case Scheduler. Se agregan y se modifican validaciones en campos de Output documents
This commit is contained in:
Erik Amaru Ortiz
2014-05-02 09:35:40 -04:00
7 changed files with 326 additions and 308 deletions

View File

@@ -236,163 +236,163 @@ class CaseScheduler
/** /**
* Create a new case scheduler of a project * Create a new case scheduler of a project
* @param string $sProcessUID * @param string $sProcessUID
* @param array $aData * @param array $caseSchedulerData
* @param string $userUID * @param string $userUID
* @return array * @return array
* *
* @access public * @access public
*/ */
public function addCaseScheduler($sProcessUID, $aData, $userUID) public function addCaseScheduler($sProcessUID, $caseSchedulerData, $userUID)
{ {
try { try {
require_once(PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "CaseScheduler.php"); require_once(PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "CaseScheduler.php");
$aData['sch_repeat_stop_if_running'] = '0'; $caseSchedulerData['sch_repeat_stop_if_running'] = '0';
$aData['case_sh_plugin_uid'] = null; $caseSchedulerData['case_sh_plugin_uid'] = null;
$aData = array_change_key_case($aData, CASE_UPPER); $caseSchedulerData = array_change_key_case($caseSchedulerData, CASE_UPPER);
$sOption = $aData['SCH_OPTION']; $sOption = $caseSchedulerData['SCH_OPTION'];
if (empty($aData)) { if (empty($caseSchedulerData)) {
die( 'the information sended is empty!' ); die( 'the information sended is empty!' );
} }
$arrayTaskUid = $this->getTaskUid($aData['TAS_UID']); $arrayTaskUid = $this->getTaskUid($caseSchedulerData['TAS_UID']);
if (empty($arrayTaskUid)) { if (empty($arrayTaskUid)) {
throw (new \Exception( 'Task not found for id: '. $aData['TAS_UID'])); throw (new \Exception( 'Task not found for id: '. $caseSchedulerData['TAS_UID']));
} }
if ($aData['SCH_NAME']=='') { if ($caseSchedulerData['SCH_NAME']=='') {
throw (new \Exception( 'sch_name can not be empty')); throw (new \Exception( 'sch_name can not be empty'));
} }
if ($this->existsName($sProcessUID, $aData['SCH_NAME'])) { if ($this->existsName($sProcessUID, $caseSchedulerData['SCH_NAME'])) {
throw (new \Exception( 'Duplicate Case Scheduler name')); throw (new \Exception( 'Duplicate Case Scheduler name'));
} }
$mUser = $this->getUser($aData['SCH_DEL_USER_NAME'], $aData['TAS_UID']); $mUser = $this->getUser($caseSchedulerData['SCH_DEL_USER_NAME'], $caseSchedulerData['TAS_UID']);
$oUser = \UsersPeer::retrieveByPK( $mUser ); $oUser = \UsersPeer::retrieveByPK( $mUser );
if (is_null($oUser)) { if (is_null($oUser)) {
throw (new \Exception($mUser)); throw (new \Exception($mUser));
} }
$oUserPass = $oUser->getUsrPassword(); $oUserPass = $oUser->getUsrPassword();
$aData['SCH_DEL_USER_PASS'] = $oUserPass; $caseSchedulerData['SCH_DEL_USER_PASS'] = $oUserPass;
if ($sOption != '5') { if ($sOption != '5') {
$pattern="/^([0-1][0-9]|[2][0-3])[\:]([0-5][0-9])$/"; $pattern="/^([0-1][0-9]|[2][0-3])[\:]([0-5][0-9])$/";
if (!preg_match($pattern, $aData['SCH_START_TIME'])) { if (!preg_match($pattern, $caseSchedulerData['SCH_START_TIME'])) {
throw (new \Exception( 'Invalid value specified for sch_start_time. Expecting time in HH:MM format (The time can not be increased to 23:59)')); throw (new \Exception( 'Invalid value specified for sch_start_time. Expecting time in HH:MM format (The time can not be increased to 23:59)'));
} }
} }
$patternDate="/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/"; $patternDate="/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/";
if ($sOption == '1' || $sOption == '2' || $sOption == '3') { if ($sOption == '1' || $sOption == '2' || $sOption == '3') {
if (!preg_match($patternDate, $aData['SCH_START_DATE'])) { if (!preg_match($patternDate, $caseSchedulerData['SCH_START_DATE'])) {
throw (new \Exception( 'Invalid value specified for sch_start_date. Expecting date in YYYY-MM-DD format, such as 2014-01-01')); throw (new \Exception( 'Invalid value specified for sch_start_date. Expecting date in YYYY-MM-DD format, such as 2014-01-01'));
} }
if (!preg_match($patternDate, $aData['SCH_END_DATE'])) { if (!preg_match($patternDate, $caseSchedulerData['SCH_END_DATE'])) {
throw (new \Exception( 'Invalid value specified for sch_end_date. Expecting date in YYYY-MM-DD format, such as 2014-01-01')); throw (new \Exception( 'Invalid value specified for sch_end_date. Expecting date in YYYY-MM-DD format, such as 2014-01-01'));
} }
if ($aData['SCH_START_DATE'] == "") { if ($caseSchedulerData['SCH_START_DATE'] == "") {
throw (new \Exception( 'sch_start_date can not be null')); throw (new \Exception( 'sch_start_date can not be null'));
} }
} }
if ($sOption == '2') { if ($sOption == '2') {
$aData['SCH_EVERY_DAYS'] = 1; $caseSchedulerData['SCH_EVERY_DAYS'] = 1;
} else { } else {
$aData['SCH_EVERY_DAYS'] = 0; $caseSchedulerData['SCH_EVERY_DAYS'] = 0;
} }
$oCaseScheduler = new \CaseScheduler(); $oCaseScheduler = new \CaseScheduler();
$aData['SCH_UID'] = \G::generateUniqueID(); $caseSchedulerData['SCH_UID'] = \G::generateUniqueID();
$aData['PRO_UID'] = $sProcessUID; $caseSchedulerData['PRO_UID'] = $sProcessUID;
$aData['SCH_STATE'] = 'ACTIVE'; $caseSchedulerData['SCH_STATE'] = 'ACTIVE';
$aData['SCH_LAST_STATE'] = 'CREATED'; // 'ACTIVE'; $caseSchedulerData['SCH_LAST_STATE'] = 'CREATED'; // 'ACTIVE';
$aData['USR_UID'] = $userUID; $caseSchedulerData['USR_UID'] = $userUID;
$aData['SCH_DEL_USER_UID'] = $aData['USR_UID']; $caseSchedulerData['SCH_DEL_USER_UID'] = $caseSchedulerData['USR_UID'];
$sTimeTmp = $aData['SCH_START_TIME']; $sTimeTmp = $caseSchedulerData['SCH_START_TIME'];
$nActualTime = $aData['SCH_START_TIME']; // time(); $nActualTime = $caseSchedulerData['SCH_START_TIME']; // time();
$sValue = ''; $sValue = '';
$sDaysPerformTask = ''; $sDaysPerformTask = '';
$sWeeks = ''; $sWeeks = '';
$sMonths = ''; $sMonths = '';
$sStartDay = ''; $sStartDay = '';
$aData['SCH_DAYS_PERFORM_TASK'] = ''; $caseSchedulerData['SCH_DAYS_PERFORM_TASK'] = '';
switch ($sOption) { switch ($sOption) {
case '1': // If the option is zero, set by default 1 case '1': // If the option is zero, set by default 1
$aData['SCH_DAYS_PERFORM_TASK'] = '1'; $caseSchedulerData['SCH_DAYS_PERFORM_TASK'] = '1';
$sValue = $aData['SCH_DAYS_PERFORM_TASK']; $sValue = $caseSchedulerData['SCH_DAYS_PERFORM_TASK'];
switch ($sValue) { switch ($sValue) {
case '1': case '1':
$aData['SCH_DAYS_PERFORM_TASK'] = $aData['SCH_DAYS_PERFORM_TASK'] . '|1'; $caseSchedulerData['SCH_DAYS_PERFORM_TASK'] = $caseSchedulerData['SCH_DAYS_PERFORM_TASK'] . '|1';
$aData['SCH_MONTHS'] ='0|0|0|0|0|0|0|0|0|0|0|0'; $caseSchedulerData['SCH_MONTHS'] ='0|0|0|0|0|0|0|0|0|0|0|0';
$aData['SCH_WEEK_DAYS'] ='0|0|0|0|0|0|0'; $caseSchedulerData['SCH_WEEK_DAYS'] ='0|0|0|0|0|0|0';
break; break;
case '2': case '2':
$aData['SCH_OPTION'] = '2'; $caseSchedulerData['SCH_OPTION'] = '2';
$aData['SCH_EVERY_DAYS'] = '1'; //check $caseSchedulerData['SCH_EVERY_DAYS'] = '1'; //check
$aData['SCH_WEEK_DAYS'] = '1|2|3|4|5|'; //check $caseSchedulerData['SCH_WEEK_DAYS'] = '1|2|3|4|5|'; //check
break; break;
case '3': // Every [n] Days case '3': // Every [n] Days
$sDaysPerformTask = $aData['SCH_DAYS_PERFORM_TASK']; $sDaysPerformTask = $caseSchedulerData['SCH_DAYS_PERFORM_TASK'];
$aData['SCH_DAYS_PERFORM_TASK'] = $aData['SCH_DAYS_PERFORM_TASK']; $caseSchedulerData['SCH_DAYS_PERFORM_TASK'] = $caseSchedulerData['SCH_DAYS_PERFORM_TASK'];
break; break;
} }
break; break;
case '2': // If the option is zero, set by default 1 case '2': // If the option is zero, set by default 1
if ($aData['SCH_WEEK_DAYS'] == "") { if ($caseSchedulerData['SCH_WEEK_DAYS'] == "") {
throw (new \Exception( 'sch_week_days can not be null')); throw (new \Exception( 'sch_week_days can not be null'));
} else { } else {
$weeks = $aData['SCH_WEEK_DAYS']; $weeks = $caseSchedulerData['SCH_WEEK_DAYS'];
$weeks = explode("|", $weeks); $weeks = explode("|", $weeks);
foreach ($weeks as $row) { foreach ($weeks as $row) {
if ($row == "1" || $row == "2" || $row == "3" || $row == "4" || $row == "5"|| $row == "6" || $row == "7") { if ($row == "1" || $row == "2" || $row == "3" || $row == "4" || $row == "5"|| $row == "6" || $row == "7") {
$aData['SCH_WEEK_DAYS'] = $aData['SCH_WEEK_DAYS']; $caseSchedulerData['SCH_WEEK_DAYS'] = $caseSchedulerData['SCH_WEEK_DAYS'];
} else { } else {
throw (new \Exception( 'Invalid value specified for sch_week_days')); throw (new \Exception( 'Invalid value specified for sch_week_days'));
} }
} }
} }
$aData['SCH_MONTHS'] ='0|0|0|0|0|0|0|0|0|0|0|0'; $caseSchedulerData['SCH_MONTHS'] ='0|0|0|0|0|0|0|0|0|0|0|0';
if (empty( $aData['SCH_EVERY_DAYS'] )) { if (empty( $caseSchedulerData['SCH_EVERY_DAYS'] )) {
$nEveryDays = 1; $nEveryDays = 1;
} else { } else {
$nEveryDays = $aData['SCH_EVERY_DAYS']; $nEveryDays = $caseSchedulerData['SCH_EVERY_DAYS'];
} }
$aData['SCH_EVERY_DAYS'] = $nEveryDays; $caseSchedulerData['SCH_EVERY_DAYS'] = $nEveryDays;
if (! empty( $aData['SCH_WEEK_DAYS'] )) { if (! empty( $caseSchedulerData['SCH_WEEK_DAYS'] )) {
$aWeekDays = $aData['SCH_WEEK_DAYS']; $aWeekDays = $caseSchedulerData['SCH_WEEK_DAYS'];
} }
$sStartTime = $aData['SCH_START_TIME']; $sStartTime = $caseSchedulerData['SCH_START_TIME'];
$sWeeks = $aData['SCH_WEEK_DAYS'] . '|'; $sWeeks = $caseSchedulerData['SCH_WEEK_DAYS'] . '|';
break; break;
case '3': case '3':
$nStartDay = $aData['SCH_START_DAY']; $nStartDay = $caseSchedulerData['SCH_START_DAY'];
if ($nStartDay == "") { if ($nStartDay == "") {
throw (new \Exception( 'sch_start_day can not be null')); throw (new \Exception( 'sch_start_day can not be null'));
} }
if ($nStartDay == 1) { if ($nStartDay == 1) {
if ($aData['SCH_START_DAY_OPT_1'] == "") { if ($caseSchedulerData['SCH_START_DAY_OPT_1'] == "") {
throw (new \Exception( 'sch_start_day_opt_1 can not be null')); throw (new \Exception( 'sch_start_day_opt_1 can not be null'));
} }
$temp = $aData['SCH_START_DAY_OPT_1']; $temp = $caseSchedulerData['SCH_START_DAY_OPT_1'];
$temp = (int)$temp; $temp = (int)$temp;
if ($temp >= 1 && $temp <= 31) { if ($temp >= 1 && $temp <= 31) {
$aData['SCH_START_DAY_OPT_1'] = $aData['SCH_START_DAY_OPT_1']; $caseSchedulerData['SCH_START_DAY_OPT_1'] = $caseSchedulerData['SCH_START_DAY_OPT_1'];
} else { } else {
throw (new \Exception( 'Invalid value specified for sch_start_day_opt_1. Must be between 1 and 31')); throw (new \Exception( 'Invalid value specified for sch_start_day_opt_1. Must be between 1 and 31'));
} }
$aData['SCH_START_DAY'] = $nStartDay . '|' . $aData['SCH_START_DAY_OPT_1']; $caseSchedulerData['SCH_START_DAY'] = $nStartDay . '|' . $caseSchedulerData['SCH_START_DAY_OPT_1'];
} else { } else {
if ($aData['SCH_START_DAY_OPT_2'] == "") { if ($caseSchedulerData['SCH_START_DAY_OPT_2'] == "") {
throw (new \Exception( 'sch_start_day_opt_2 can not be null')); throw (new \Exception( 'sch_start_day_opt_2 can not be null'));
} }
$aData['SCH_START_DAY'] = $nStartDay . '|' . $aData['SCH_START_DAY_OPT_2']; $caseSchedulerData['SCH_START_DAY'] = $nStartDay . '|' . $caseSchedulerData['SCH_START_DAY_OPT_2'];
$optionTwo = $aData['SCH_START_DAY_OPT_2']{0}; $optionTwo = $caseSchedulerData['SCH_START_DAY_OPT_2']{0};
if ($optionTwo == "1" || $optionTwo == "2" || $optionTwo == "3" || $optionTwo == "4" || $optionTwo == "5") { if ($optionTwo == "1" || $optionTwo == "2" || $optionTwo == "3" || $optionTwo == "4" || $optionTwo == "5") {
$aData['SCH_START_DAY_OPT_2'] = $aData['SCH_START_DAY_OPT_2']; $caseSchedulerData['SCH_START_DAY_OPT_2'] = $caseSchedulerData['SCH_START_DAY_OPT_2'];
} else { } else {
throw (new \Exception( 'Invalid value specified for sch_start_day_opt_2')); throw (new \Exception( 'Invalid value specified for sch_start_day_opt_2'));
} }
$pipelineTwo = $aData['SCH_START_DAY_OPT_2']{1}; $pipelineTwo = $caseSchedulerData['SCH_START_DAY_OPT_2']{1};
if ($pipelineTwo == "|") { if ($pipelineTwo == "|") {
$aData['SCH_START_DAY_OPT_2'] = $aData['SCH_START_DAY_OPT_2']; $caseSchedulerData['SCH_START_DAY_OPT_2'] = $caseSchedulerData['SCH_START_DAY_OPT_2'];
} else { } else {
throw (new \Exception( 'Invalid value specified for sch_start_day_opt_2')); throw (new \Exception( 'Invalid value specified for sch_start_day_opt_2'));
} }
$dayTwo = $aData['SCH_START_DAY_OPT_2']{2}; $dayTwo = $caseSchedulerData['SCH_START_DAY_OPT_2']{2};
if ($dayTwo == "1" || $dayTwo == "2" || $dayTwo == "3" || $dayTwo == "4" || $dayTwo == "5" || $dayTwo == "6" || $dayTwo == "7") { if ($dayTwo == "1" || $dayTwo == "2" || $dayTwo == "3" || $dayTwo == "4" || $dayTwo == "5" || $dayTwo == "6" || $dayTwo == "7") {
$aData['SCH_START_DAY_OPT_2'] = $aData['SCH_START_DAY_OPT_2']; $caseSchedulerData['SCH_START_DAY_OPT_2'] = $caseSchedulerData['SCH_START_DAY_OPT_2'];
} else { } else {
throw (new \Exception( 'Invalid value specified for sch_start_day_opt_2')); throw (new \Exception( 'Invalid value specified for sch_start_day_opt_2'));
} }
@@ -400,22 +400,22 @@ class CaseScheduler
if ($nStartDay == "") { if ($nStartDay == "") {
throw (new \Exception( 'sch_start_day can not be null')); throw (new \Exception( 'sch_start_day can not be null'));
} }
if ($aData['SCH_MONTHS'] == "") { if ($caseSchedulerData['SCH_MONTHS'] == "") {
throw (new \Exception( 'sch_months can not be null')); throw (new \Exception( 'sch_months can not be null'));
} }
if (! empty( $aData['SCH_MONTHS'] )) { if (! empty( $caseSchedulerData['SCH_MONTHS'] )) {
$aMonths = $aData['SCH_MONTHS']; $aMonths = $caseSchedulerData['SCH_MONTHS'];
$aMonths = explode("|", $aMonths); $aMonths = explode("|", $aMonths);
foreach ($aMonths as $row) { foreach ($aMonths as $row) {
if ($row == "1" || $row == "2" || $row == "3" || $row == "4" || $row == "5"|| $row == "6" || $row == "7"|| $row == "8" || $row == "9" || $row == "10"|| $row == "11" || $row == "12") { if ($row == "1" || $row == "2" || $row == "3" || $row == "4" || $row == "5"|| $row == "6" || $row == "7"|| $row == "8" || $row == "9" || $row == "10"|| $row == "11" || $row == "12") {
$aData['SCH_MONTHS'] = $aData['SCH_MONTHS']; $caseSchedulerData['SCH_MONTHS'] = $caseSchedulerData['SCH_MONTHS'];
} else { } else {
throw (new \Exception( 'Invalid value specified for sch_months')); throw (new \Exception( 'Invalid value specified for sch_months'));
} }
} }
} }
$sMonths = $aData['SCH_MONTHS']; $sMonths = $caseSchedulerData['SCH_MONTHS'];
$sStartDay = $aData['SCH_START_DAY']; $sStartDay = $caseSchedulerData['SCH_START_DAY'];
$sValue = $nStartDay; $sValue = $nStartDay;
break; break;
} }
@@ -424,9 +424,9 @@ class CaseScheduler
if ($sStartDay == '') { if ($sStartDay == '') {
$sStartDay = date('Y-m-d'); $sStartDay = date('Y-m-d');
} else { } else {
$size = strlen($aData['SCH_START_DAY']); $size = strlen($caseSchedulerData['SCH_START_DAY']);
if ($size > 4) { if ($size > 4) {
$aaStartDay = explode( "|", $aData['SCH_START_DAY'] ); $aaStartDay = explode( "|", $caseSchedulerData['SCH_START_DAY'] );
$aaStartDay[0] = $aaStartDay[0]; $aaStartDay[0] = $aaStartDay[0];
$aaStartDay[1] = $aaStartDay[1]; $aaStartDay[1] = $aaStartDay[1];
$aaStartDay[2]= ($aaStartDay[2] == 7 ? 1 : $aaStartDay[2]); $aaStartDay[2]= ($aaStartDay[2] == 7 ? 1 : $aaStartDay[2]);
@@ -435,75 +435,75 @@ class CaseScheduler
} }
$dCurrentDay = date("d"); $dCurrentDay = date("d");
$dCurrentMonth = date("m"); $dCurrentMonth = date("m");
$aStartDay = explode( "|", $aData['SCH_START_DAY'] ); $aStartDay = explode( "|", $caseSchedulerData['SCH_START_DAY'] );
if ($sOption == '3' && $aStartDay[0] == '1') { if ($sOption == '3' && $aStartDay[0] == '1') {
$monthsArray = explode( "|", $sMonths ); $monthsArray = explode( "|", $sMonths );
foreach ($monthsArray as $row) { foreach ($monthsArray as $row) {
if ($dCurrentMonth == $row && $dCurrentDay < $aStartDay[1]) { if ($dCurrentMonth == $row && $dCurrentDay < $aStartDay[1]) {
$startTime = $aData['SCH_START_TIME'] . ":00"; $startTime = $caseSchedulerData['SCH_START_TIME'] . ":00";
$aData['SCH_TIME_NEXT_RUN'] = date('Y') . '-' . $row . '-' . $aStartDay[1] . ' ' . $startTime; $caseSchedulerData['SCH_TIME_NEXT_RUN'] = date('Y') . '-' . $row . '-' . $aStartDay[1] . ' ' . $startTime;
break; break;
} else { } else {
$aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->updateNextRun( $sOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp ); $caseSchedulerData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->updateNextRun( $sOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp );
} }
} }
} else { } else {
$aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->updateNextRun( $sOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp ); $caseSchedulerData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->updateNextRun( $sOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp );
} }
} else { } else {
if ($sOption == '4') { if ($sOption == '4') {
$sDateTmp = date('Y-m-d'); $sDateTmp = date('Y-m-d');
$aData['SCH_START_TIME'] = date('Y-m-d', strtotime( $sDateTmp )) . ' ' . date('H:i:s', strtotime( $sTimeTmp )); $caseSchedulerData['SCH_START_TIME'] = date('Y-m-d', strtotime( $sDateTmp )) . ' ' . date('H:i:s', strtotime( $sTimeTmp ));
$aData['SCH_START_DATE'] = $aData['SCH_START_TIME']; $caseSchedulerData['SCH_START_DATE'] = $caseSchedulerData['SCH_START_TIME'];
$aData['SCH_END_DATE'] = $aData['SCH_START_TIME']; $caseSchedulerData['SCH_END_DATE'] = $caseSchedulerData['SCH_START_TIME'];
} }
$aData['SCH_TIME_NEXT_RUN'] = $aData['SCH_START_TIME']; $caseSchedulerData['SCH_TIME_NEXT_RUN'] = $caseSchedulerData['SCH_START_TIME'];
if ($sOption == '5') { if ($sOption == '5') {
if ($aData['SCH_START_DATE'] != '') { if ($caseSchedulerData['SCH_START_DATE'] != '') {
$sDateTmp = $aData['SCH_START_DATE']; $sDateTmp = $caseSchedulerData['SCH_START_DATE'];
} else { } else {
$sDateTmp = date('Y-m-d'); $sDateTmp = date('Y-m-d');
$aData['SCH_START_DATE'] = $sDateTmp; $caseSchedulerData['SCH_START_DATE'] = $sDateTmp;
} }
$aData['SCH_END_DATE'] = date('Y-m-d', strtotime( $sDateTmp )) . ' ' . date('H:i:s', strtotime( $sTimeTmp )); $caseSchedulerData['SCH_END_DATE'] = date('Y-m-d', strtotime( $sDateTmp )) . ' ' . date('H:i:s', strtotime( $sTimeTmp ));
$aData['SCH_START_TIME'] = time(); $caseSchedulerData['SCH_START_TIME'] = time();
$aData['SCH_START_DATE'] = $aData['SCH_START_TIME']; $caseSchedulerData['SCH_START_DATE'] = $caseSchedulerData['SCH_START_TIME'];
if ($aData['SCH_REPEAT_EVERY'] == "") { if ($caseSchedulerData['SCH_REPEAT_EVERY'] == "") {
throw (new \Exception( 'sch_repeat_every can not be null')); throw (new \Exception( 'sch_repeat_every can not be null'));
} }
$patternHour="/^([0-1][0-9]|[2][0-3])[\.]([0-5][0-9])$/"; $patternHour="/^([0-1][0-9]|[2][0-3])[\.]([0-5][0-9])$/";
if (!preg_match($patternHour, $aData['SCH_REPEAT_EVERY'])) { if (!preg_match($patternHour, $caseSchedulerData['SCH_REPEAT_EVERY'])) {
throw (new \Exception( 'Invalid value specified for sch_repeat_every. Expecting time in HH.MM format')); throw (new \Exception( 'Invalid value specified for sch_repeat_every. Expecting time in HH.MM format'));
} }
$nextRun = $aData['SCH_REPEAT_EVERY'] * 60 * 60; $nextRun = $caseSchedulerData['SCH_REPEAT_EVERY'] * 60 * 60;
$aData['SCH_REPEAT_EVERY'] = $aData['SCH_REPEAT_EVERY']; $caseSchedulerData['SCH_REPEAT_EVERY'] = $caseSchedulerData['SCH_REPEAT_EVERY'];
$date = $aData['SCH_START_TIME']; $date = $caseSchedulerData['SCH_START_TIME'];
$date += $nextRun; $date += $nextRun;
$date = date("Y-m-d H:i", $date); $date = date("Y-m-d H:i", $date);
$aData['SCH_TIME_NEXT_RUN'] = $date; $caseSchedulerData['SCH_TIME_NEXT_RUN'] = $date;
} }
} }
if (trim( $aData['SCH_END_DATE'] ) != '') { if (trim( $caseSchedulerData['SCH_END_DATE'] ) != '') {
$aData['SCH_END_DATE'] = $aData['SCH_END_DATE']; $caseSchedulerData['SCH_END_DATE'] = $caseSchedulerData['SCH_END_DATE'];
} }
if (! empty( $aData['SCH_REPEAT_TASK_CHK'] )) { if (! empty( $caseSchedulerData['SCH_REPEAT_TASK_CHK'] )) {
$nOptEvery = $aData['SCH_REPEAT_EVERY_OPT']; $nOptEvery = $caseSchedulerData['SCH_REPEAT_EVERY_OPT'];
if ($nOptEvery == 2) { if ($nOptEvery == 2) {
$aData['SCH_REPEAT_EVERY'] = $aData['SCH_REPEAT_EVERY'] * 60; $caseSchedulerData['SCH_REPEAT_EVERY'] = $caseSchedulerData['SCH_REPEAT_EVERY'] * 60;
} else { } else {
$aData['SCH_REPEAT_EVERY'] = $aData['SCH_REPEAT_EVERY']; $caseSchedulerData['SCH_REPEAT_EVERY'] = $caseSchedulerData['SCH_REPEAT_EVERY'];
} }
} }
if ((isset( $aData['CASE_SH_PLUGIN_UID'] )) && ($aData['CASE_SH_PLUGIN_UID'] != "")) { if ((isset( $caseSchedulerData['CASE_SH_PLUGIN_UID'] )) && ($caseSchedulerData['CASE_SH_PLUGIN_UID'] != "")) {
$aData['CASE_SH_PLUGIN_UID'] = $aData['CASE_SH_PLUGIN_UID']; $caseSchedulerData['CASE_SH_PLUGIN_UID'] = $caseSchedulerData['CASE_SH_PLUGIN_UID'];
} }
// check this data // check this data
$aData['SCH_REPEAT_UNTIL'] = ''; $caseSchedulerData['SCH_REPEAT_UNTIL'] = '';
$aData['SCH_REPEAT_STOP_IF_RUNNING'] = '0'; $caseSchedulerData['SCH_REPEAT_STOP_IF_RUNNING'] = '0';
$aData['CASE_SH_PLUGIN_UID'] = null; $caseSchedulerData['CASE_SH_PLUGIN_UID'] = null;
// //
$oCaseScheduler->create( $aData ); $oCaseScheduler->create( $caseSchedulerData );
$oCriteria = $this->getCaseScheduler($sProcessUID, $aData['SCH_UID']); $oCriteria = $this->getCaseScheduler($sProcessUID, $caseSchedulerData['SCH_UID']);
return $oCriteria; return $oCriteria;
} catch (Exception $oException) { } catch (Exception $oException) {
die( $oException->getMessage() ); die( $oException->getMessage() );
@@ -513,177 +513,181 @@ class CaseScheduler
/** /**
* Update case scheduler for a project * Update case scheduler for a project
* @param string $sProcessUID * @param string $sProcessUID
* @param array $aData * @param array $caseSchedulerData
* @param string $userUID * @param string $userUID
* @param string $sSchUID * @param string $sSchUID
* *
* @access public * @access public
*/ */
public function updateCaseScheduler($sProcessUID, $aData, $userUID, $sSchUID = '') public function updateCaseScheduler($sProcessUID, $caseSchedulerData, $userUID, $sSchUID = '')
{ {
try { try {
require_once(PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "CaseScheduler.php"); require_once(PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "CaseScheduler.php");
$aData = array_change_key_case($aData, CASE_UPPER); $caseSchedulerData = array_change_key_case($caseSchedulerData, CASE_UPPER);
if (empty( $aData )) { if (empty( $caseSchedulerData )) {
die( 'The information sended is empty!' ); die( 'The information sended is empty!' );
} }
$oCaseScheduler = new \CaseScheduler(); $oCaseScheduler = new \CaseScheduler();
$aFields = $oCaseScheduler->Load($sSchUID); $aFields = $oCaseScheduler->Load($sSchUID);
//$sOption = $aFields['SCH_OPTION']; if ($caseSchedulerData['SCH_OPTION'] == null) {
$sOption = $aData['SCH_OPTION']; $sOption = $aFields['SCH_OPTION'];
$aData['sch_repeat_stop_if_running'] = '0'; $caseSchedulerData['SCH_OPTION'] = $sOption;
$aData['case_sh_plugin_uid'] = null; } else {
$aData = array_change_key_case($aData, CASE_UPPER); $sOption = $caseSchedulerData['SCH_OPTION'];
if (empty($aData)) { }
$caseSchedulerData['sch_repeat_stop_if_running'] = '0';
$caseSchedulerData['case_sh_plugin_uid'] = null;
$caseSchedulerData = array_change_key_case($caseSchedulerData, CASE_UPPER);
if (empty($caseSchedulerData)) {
die( 'the information sended is empty!' ); die( 'the information sended is empty!' );
} }
$arrayTaskUid = $this->getTaskUid($aData['TAS_UID']); $arrayTaskUid = $this->getTaskUid($caseSchedulerData['TAS_UID']);
if (empty($arrayTaskUid)) { if (empty($arrayTaskUid)) {
throw (new \Exception( 'Task not found for id: '. $aData['TAS_UID'])); throw (new \Exception( 'Task not found for id: '. $caseSchedulerData['TAS_UID']));
} }
if ($aData['SCH_NAME']=='') { if ($caseSchedulerData['SCH_NAME']=='') {
throw (new \Exception( 'sch_name can not be empty')); throw (new \Exception( 'sch_name can not be empty'));
} }
if ($this->existsNameUpdate($sSchUID, $aData['SCH_NAME'])) { if ($this->existsNameUpdate($sSchUID, $caseSchedulerData['SCH_NAME'])) {
throw (new \Exception( 'Duplicate Case Scheduler name')); throw (new \Exception( 'Duplicate Case Scheduler name'));
} }
$mUser = $this->getUser($aData['SCH_DEL_USER_NAME'], $aData['TAS_UID']); $mUser = $this->getUser($caseSchedulerData['SCH_DEL_USER_NAME'], $caseSchedulerData['TAS_UID']);
$oUser = \UsersPeer::retrieveByPK( $mUser ); $oUser = \UsersPeer::retrieveByPK( $mUser );
if (is_null($oUser)) { if (is_null($oUser)) {
throw (new \Exception($mUser)); throw (new \Exception($mUser));
} }
$oUserPass = $oUser->getUsrPassword(); $oUserPass = $oUser->getUsrPassword();
$aData['SCH_DEL_USER_PASS'] = $oUserPass; $caseSchedulerData['SCH_DEL_USER_PASS'] = $oUserPass;
if ($sOption != '5') { if ($sOption != '5') {
$pattern="/^([0-1][0-9]|[2][0-3])[\:]([0-5][0-9])$/"; $pattern="/^([0-1][0-9]|[2][0-3])[\:]([0-5][0-9])$/";
if (!preg_match($pattern, $aData['SCH_START_TIME'])) { if (!preg_match($pattern, $caseSchedulerData['SCH_START_TIME'])) {
throw (new \Exception( 'Invalid value specified for sch_start_time. Expecting time in HH:MM format (The time can not be increased to 23:59)')); throw (new \Exception( 'Invalid value specified for sch_start_time. Expecting time in HH:MM format (The time can not be increased to 23:59)'));
} }
} }
$patternDate="/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/"; $patternDate="/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/";
if ($sOption == '1' || $sOption == '2' || $sOption == '3') { if ($sOption == '1' || $sOption == '2' || $sOption == '3') {
if (!preg_match($patternDate, $aData['SCH_START_DATE'])) { if (!preg_match($patternDate, $caseSchedulerData['SCH_START_DATE'])) {
throw (new \Exception( 'Invalid value specified for sch_start_date. Expecting date in YYYY-MM-DD format, such as 2014-01-01')); throw (new \Exception( 'Invalid value specified for sch_start_date. Expecting date in YYYY-MM-DD format, such as 2014-01-01'));
} }
if (!preg_match($patternDate, $aData['SCH_END_DATE'])) { if (!preg_match($patternDate, $caseSchedulerData['SCH_END_DATE'])) {
throw (new \Exception( 'Invalid value specified for sch_end_date. Expecting date in YYYY-MM-DD format, such as 2014-01-01')); throw (new \Exception( 'Invalid value specified for sch_end_date. Expecting date in YYYY-MM-DD format, such as 2014-01-01'));
} }
if ($aData['SCH_START_DATE'] == "") { if ($caseSchedulerData['SCH_START_DATE'] == "") {
throw (new \Exception( 'sch_start_date can not be null')); throw (new \Exception( 'sch_start_date can not be null'));
} }
} }
if ($sOption == '2') { if ($sOption == '2') {
$aData['SCH_EVERY_DAYS'] = 1; $caseSchedulerData['SCH_EVERY_DAYS'] = 1;
} else { } else {
$aData['SCH_EVERY_DAYS'] = 0; $caseSchedulerData['SCH_EVERY_DAYS'] = 0;
} }
$oCaseScheduler = new \CaseScheduler(); $oCaseScheduler = new \CaseScheduler();
$aData['SCH_UID'] = $sSchUID; $caseSchedulerData['SCH_UID'] = $sSchUID;
$aData['PRO_UID'] = $sProcessUID; $caseSchedulerData['PRO_UID'] = $sProcessUID;
if ($aData['SCH_STATE'] == "" || $aData['SCH_STATE'] == null) { if ($caseSchedulerData['SCH_STATE'] == "" || $caseSchedulerData['SCH_STATE'] == null) {
throw (new \Exception( 'sch_state can not be null')); throw (new \Exception( 'sch_state can not be null'));
} else { } else {
if ($aData['SCH_STATE'] == 'ACTIVE') { if ($caseSchedulerData['SCH_STATE'] == 'ACTIVE') {
$aData['SCH_LAST_STATE'] = 'CREATED'; $caseSchedulerData['SCH_LAST_STATE'] = 'CREATED';
} else { } else {
$aData['SCH_LAST_STATE'] = 'ACTIVE'; $caseSchedulerData['SCH_LAST_STATE'] = 'ACTIVE';
} }
} }
$aData['USR_UID'] = $userUID; $caseSchedulerData['USR_UID'] = $userUID;
$aData['SCH_DEL_USER_UID'] = $aData['USR_UID']; $caseSchedulerData['SCH_DEL_USER_UID'] = $caseSchedulerData['USR_UID'];
$sTimeTmp = $aData['SCH_START_TIME']; $sTimeTmp = $caseSchedulerData['SCH_START_TIME'];
$nActualTime = $aData['SCH_START_TIME']; // time(); $nActualTime = $caseSchedulerData['SCH_START_TIME']; // time();
$sValue = ''; $sValue = '';
$sDaysPerformTask = ''; $sDaysPerformTask = '';
$sWeeks = ''; $sWeeks = '';
$sMonths = ''; $sMonths = '';
$sStartDay = ''; $sStartDay = '';
$aData['SCH_DAYS_PERFORM_TASK'] = ''; $caseSchedulerData['SCH_DAYS_PERFORM_TASK'] = '';
switch ($sOption) { switch ($sOption) {
case '1': // If the option is zero, set by default 1 case '1': // If the option is zero, set by default 1
$aData['SCH_DAYS_PERFORM_TASK'] = '1'; $caseSchedulerData['SCH_DAYS_PERFORM_TASK'] = '1';
$sValue = $aData['SCH_DAYS_PERFORM_TASK']; $sValue = $caseSchedulerData['SCH_DAYS_PERFORM_TASK'];
switch ($sValue) { switch ($sValue) {
case '1': case '1':
$aData['SCH_DAYS_PERFORM_TASK'] = $aData['SCH_DAYS_PERFORM_TASK'] . '|1'; $caseSchedulerData['SCH_DAYS_PERFORM_TASK'] = $caseSchedulerData['SCH_DAYS_PERFORM_TASK'] . '|1';
$aData['SCH_MONTHS'] ='0|0|0|0|0|0|0|0|0|0|0|0'; $caseSchedulerData['SCH_MONTHS'] ='0|0|0|0|0|0|0|0|0|0|0|0';
$aData['SCH_WEEK_DAYS'] ='0|0|0|0|0|0|0'; $caseSchedulerData['SCH_WEEK_DAYS'] ='0|0|0|0|0|0|0';
break; break;
case '2': case '2':
$aData['SCH_OPTION'] = '2'; $caseSchedulerData['SCH_OPTION'] = '2';
$aData['SCH_EVERY_DAYS'] = '1'; //check $caseSchedulerData['SCH_EVERY_DAYS'] = '1'; //check
$aData['SCH_WEEK_DAYS'] = '1|2|3|4|5|'; //check $caseSchedulerData['SCH_WEEK_DAYS'] = '1|2|3|4|5|'; //check
break; break;
case '3': // Every [n] Days case '3': // Every [n] Days
$sDaysPerformTask = $aData['SCH_DAYS_PERFORM_TASK']; $sDaysPerformTask = $caseSchedulerData['SCH_DAYS_PERFORM_TASK'];
$aData['SCH_DAYS_PERFORM_TASK'] = $aData['SCH_DAYS_PERFORM_TASK']; $caseSchedulerData['SCH_DAYS_PERFORM_TASK'] = $caseSchedulerData['SCH_DAYS_PERFORM_TASK'];
break; break;
} }
break; break;
case '2': // If the option is zero, set by default 1 case '2': // If the option is zero, set by default 1
if ($aData['SCH_WEEK_DAYS'] == "") { if ($caseSchedulerData['SCH_WEEK_DAYS'] == "") {
throw (new \Exception( 'sch_week_days can not be null')); throw (new \Exception( 'sch_week_days can not be null'));
} else { } else {
$weeks = $aData['SCH_WEEK_DAYS']; $weeks = $caseSchedulerData['SCH_WEEK_DAYS'];
$weeks = explode("|", $weeks); $weeks = explode("|", $weeks);
foreach ($weeks as $row) { foreach ($weeks as $row) {
if ($row == "1" || $row == "2" || $row == "3" || $row == "4" || $row == "5"|| $row == "6" || $row == "7") { if ($row == "1" || $row == "2" || $row == "3" || $row == "4" || $row == "5"|| $row == "6" || $row == "7") {
$aData['SCH_WEEK_DAYS'] = $aData['SCH_WEEK_DAYS']; $caseSchedulerData['SCH_WEEK_DAYS'] = $caseSchedulerData['SCH_WEEK_DAYS'];
} else { } else {
throw (new \Exception( 'Invalid value specified for sch_week_days')); throw (new \Exception( 'Invalid value specified for sch_week_days'));
} }
} }
} }
$aData['SCH_MONTHS'] ='0|0|0|0|0|0|0|0|0|0|0|0'; $caseSchedulerData['SCH_MONTHS'] ='0|0|0|0|0|0|0|0|0|0|0|0';
if (empty( $aData['SCH_EVERY_DAYS'] )) { if (empty( $caseSchedulerData['SCH_EVERY_DAYS'] )) {
$nEveryDays = 1; $nEveryDays = 1;
} else { } else {
$nEveryDays = $aData['SCH_EVERY_DAYS']; $nEveryDays = $caseSchedulerData['SCH_EVERY_DAYS'];
} }
$aData['SCH_EVERY_DAYS'] = $nEveryDays; $caseSchedulerData['SCH_EVERY_DAYS'] = $nEveryDays;
if (! empty( $aData['SCH_WEEK_DAYS'] )) { if (! empty( $caseSchedulerData['SCH_WEEK_DAYS'] )) {
$aWeekDays = $aData['SCH_WEEK_DAYS']; $aWeekDays = $caseSchedulerData['SCH_WEEK_DAYS'];
} }
$sStartTime = $aData['SCH_START_TIME']; $sStartTime = $caseSchedulerData['SCH_START_TIME'];
$sWeeks = $aData['SCH_WEEK_DAYS'] . '|'; $sWeeks = $caseSchedulerData['SCH_WEEK_DAYS'] . '|';
break; break;
case '3': case '3':
$nStartDay = $aData['SCH_START_DAY']; $nStartDay = $caseSchedulerData['SCH_START_DAY'];
if ($nStartDay == "") { if ($nStartDay == "") {
throw (new \Exception( 'sch_start_day can not be null')); throw (new \Exception( 'sch_start_day can not be null'));
} }
if ($nStartDay == 1) { if ($nStartDay == 1) {
if ($aData['SCH_START_DAY_OPT_1'] == "") { if ($caseSchedulerData['SCH_START_DAY_OPT_1'] == "") {
throw (new \Exception( 'sch_start_day_opt_1 can not be null')); throw (new \Exception( 'sch_start_day_opt_1 can not be null'));
} }
$temp = $aData['SCH_START_DAY_OPT_1']; $temp = $caseSchedulerData['SCH_START_DAY_OPT_1'];
$temp = (int)$temp; $temp = (int)$temp;
if ($temp >= 1 && $temp <= 31) { if ($temp >= 1 && $temp <= 31) {
$aData['SCH_START_DAY_OPT_1'] = $aData['SCH_START_DAY_OPT_1']; $caseSchedulerData['SCH_START_DAY_OPT_1'] = $caseSchedulerData['SCH_START_DAY_OPT_1'];
} else { } else {
throw (new \Exception( 'Invalid value specified for sch_start_day_opt_1. Must be between 1 and 31')); throw (new \Exception( 'Invalid value specified for sch_start_day_opt_1. Must be between 1 and 31'));
} }
$aData['SCH_START_DAY'] = $nStartDay . '|' . $aData['SCH_START_DAY_OPT_1']; $caseSchedulerData['SCH_START_DAY'] = $nStartDay . '|' . $caseSchedulerData['SCH_START_DAY_OPT_1'];
} else { } else {
if ($aData['SCH_START_DAY_OPT_2'] == "") { if ($caseSchedulerData['SCH_START_DAY_OPT_2'] == "") {
throw (new \Exception( 'sch_start_day_opt_2 can not be null')); throw (new \Exception( 'sch_start_day_opt_2 can not be null'));
} }
$aData['SCH_START_DAY'] = $nStartDay . '|' . $aData['SCH_START_DAY_OPT_2']; $caseSchedulerData['SCH_START_DAY'] = $nStartDay . '|' . $caseSchedulerData['SCH_START_DAY_OPT_2'];
$optionTwo = $aData['SCH_START_DAY_OPT_2']{0}; $optionTwo = $caseSchedulerData['SCH_START_DAY_OPT_2']{0};
if ($optionTwo == "1" || $optionTwo == "2" || $optionTwo == "3" || $optionTwo == "4" || $optionTwo == "5") { if ($optionTwo == "1" || $optionTwo == "2" || $optionTwo == "3" || $optionTwo == "4" || $optionTwo == "5") {
$aData['SCH_START_DAY_OPT_2'] = $aData['SCH_START_DAY_OPT_2']; $caseSchedulerData['SCH_START_DAY_OPT_2'] = $caseSchedulerData['SCH_START_DAY_OPT_2'];
} else { } else {
throw (new \Exception( 'Invalid value specified for sch_start_day_opt_2')); throw (new \Exception( 'Invalid value specified for sch_start_day_opt_2'));
} }
$pipelineTwo = $aData['SCH_START_DAY_OPT_2']{1}; $pipelineTwo = $caseSchedulerData['SCH_START_DAY_OPT_2']{1};
if ($pipelineTwo == "|") { if ($pipelineTwo == "|") {
$aData['SCH_START_DAY_OPT_2'] = $aData['SCH_START_DAY_OPT_2']; $caseSchedulerData['SCH_START_DAY_OPT_2'] = $caseSchedulerData['SCH_START_DAY_OPT_2'];
} else { } else {
throw (new \Exception( 'Invalid value specified for sch_start_day_opt_2')); throw (new \Exception( 'Invalid value specified for sch_start_day_opt_2'));
} }
$dayTwo = $aData['SCH_START_DAY_OPT_2']{2}; $dayTwo = $caseSchedulerData['SCH_START_DAY_OPT_2']{2};
if ($dayTwo == "1" || $dayTwo == "2" || $dayTwo == "3" || $dayTwo == "4" || $dayTwo == "5" || $dayTwo == "6" || $dayTwo == "7") { if ($dayTwo == "1" || $dayTwo == "2" || $dayTwo == "3" || $dayTwo == "4" || $dayTwo == "5" || $dayTwo == "6" || $dayTwo == "7") {
$aData['SCH_START_DAY_OPT_2'] = $aData['SCH_START_DAY_OPT_2']; $caseSchedulerData['SCH_START_DAY_OPT_2'] = $caseSchedulerData['SCH_START_DAY_OPT_2'];
} else { } else {
throw (new \Exception( 'Invalid value specified for sch_start_day_opt_2')); throw (new \Exception( 'Invalid value specified for sch_start_day_opt_2'));
} }
@@ -691,22 +695,22 @@ class CaseScheduler
if ($nStartDay == "") { if ($nStartDay == "") {
throw (new \Exception( 'sch_start_day can not be null')); throw (new \Exception( 'sch_start_day can not be null'));
} }
if ($aData['SCH_MONTHS'] == "") { if ($caseSchedulerData['SCH_MONTHS'] == "") {
throw (new \Exception( 'sch_months can not be null')); throw (new \Exception( 'sch_months can not be null'));
} }
if (! empty( $aData['SCH_MONTHS'] )) { if (! empty( $caseSchedulerData['SCH_MONTHS'] )) {
$aMonths = $aData['SCH_MONTHS']; $aMonths = $caseSchedulerData['SCH_MONTHS'];
$aMonths = explode("|", $aMonths); $aMonths = explode("|", $aMonths);
foreach ($aMonths as $row) { foreach ($aMonths as $row) {
if ($row == "1" || $row == "2" || $row == "3" || $row == "4" || $row == "5"|| $row == "6" || $row == "7"|| $row == "8" || $row == "9" || $row == "10"|| $row == "11" || $row == "12") { if ($row == "1" || $row == "2" || $row == "3" || $row == "4" || $row == "5"|| $row == "6" || $row == "7"|| $row == "8" || $row == "9" || $row == "10"|| $row == "11" || $row == "12") {
$aData['SCH_MONTHS'] = $aData['SCH_MONTHS']; $caseSchedulerData['SCH_MONTHS'] = $caseSchedulerData['SCH_MONTHS'];
} else { } else {
throw (new \Exception( 'Invalid value specified for sch_months')); throw (new \Exception( 'Invalid value specified for sch_months'));
} }
} }
} }
$sMonths = $aData['SCH_MONTHS']; $sMonths = $caseSchedulerData['SCH_MONTHS'];
$sStartDay = $aData['SCH_START_DAY']; $sStartDay = $caseSchedulerData['SCH_START_DAY'];
$sValue = $nStartDay; $sValue = $nStartDay;
break; break;
} }
@@ -715,9 +719,9 @@ class CaseScheduler
if ($sStartDay == '') { if ($sStartDay == '') {
$sStartDay = date('Y-m-d'); $sStartDay = date('Y-m-d');
} else { } else {
$size = strlen($aData['SCH_START_DAY']); $size = strlen($caseSchedulerData['SCH_START_DAY']);
if ($size > 4) { if ($size > 4) {
$aaStartDay = explode( "|", $aData['SCH_START_DAY'] ); $aaStartDay = explode( "|", $caseSchedulerData['SCH_START_DAY'] );
$aaStartDay[0] = $aaStartDay[0]; $aaStartDay[0] = $aaStartDay[0];
$aaStartDay[1] = $aaStartDay[1]; $aaStartDay[1] = $aaStartDay[1];
$aaStartDay[2]= ($aaStartDay[2] == 7 ? 1 : $aaStartDay[2]); $aaStartDay[2]= ($aaStartDay[2] == 7 ? 1 : $aaStartDay[2]);
@@ -726,75 +730,75 @@ class CaseScheduler
} }
$dCurrentDay = date("d"); $dCurrentDay = date("d");
$dCurrentMonth = date("m"); $dCurrentMonth = date("m");
$aStartDay = explode( "|", $aData['SCH_START_DAY'] ); $aStartDay = explode( "|", $caseSchedulerData['SCH_START_DAY'] );
$sDateTmp = ''; $sDateTmp = '';
if ($sOption == '3' && $aStartDay[0] == '1') { if ($sOption == '3' && $aStartDay[0] == '1') {
$monthsArray = explode( "|", $sMonths ); $monthsArray = explode( "|", $sMonths );
foreach ($monthsArray as $row) { foreach ($monthsArray as $row) {
if ($dCurrentMonth == $row && $dCurrentDay < $aStartDay[1]) { if ($dCurrentMonth == $row && $dCurrentDay < $aStartDay[1]) {
$startTime = $aData['SCH_START_TIME'] . ":00"; $startTime = $caseSchedulerData['SCH_START_TIME'] . ":00";
$aData['SCH_TIME_NEXT_RUN'] = date('Y') . '-' . $row . '-' . $aStartDay[1] . ' ' . $startTime; $caseSchedulerData['SCH_TIME_NEXT_RUN'] = date('Y') . '-' . $row . '-' . $aStartDay[1] . ' ' . $startTime;
break; break;
} else { } else {
$aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->updateNextRun( $sOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp ); $caseSchedulerData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->updateNextRun( $sOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp );
} }
} }
} else { } else {
$aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->updateNextRun( $sOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp ); $caseSchedulerData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->updateNextRun( $sOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp );
} }
} else { } else {
if ($sOption == '4') { if ($sOption == '4') {
$sDateTmp = date('Y-m-d'); $sDateTmp = date('Y-m-d');
$aData['SCH_START_TIME'] = date('Y-m-d', strtotime( $sDateTmp )) . ' ' . date('H:i:s', strtotime( $sTimeTmp )); $caseSchedulerData['SCH_START_TIME'] = date('Y-m-d', strtotime( $sDateTmp )) . ' ' . date('H:i:s', strtotime( $sTimeTmp ));
$aData['SCH_START_DATE'] = $aData['SCH_START_TIME']; $caseSchedulerData['SCH_START_DATE'] = $caseSchedulerData['SCH_START_TIME'];
$aData['SCH_END_DATE'] = $aData['SCH_START_TIME']; $caseSchedulerData['SCH_END_DATE'] = $caseSchedulerData['SCH_START_TIME'];
} }
$aData['SCH_TIME_NEXT_RUN'] = $aData['SCH_START_TIME']; $caseSchedulerData['SCH_TIME_NEXT_RUN'] = $caseSchedulerData['SCH_START_TIME'];
if ($sOption == '5') { if ($sOption == '5') {
if ($aData['SCH_START_DATE'] != '') { if ($caseSchedulerData['SCH_START_DATE'] != '') {
$sDateTmp = $aData['SCH_START_DATE']; $sDateTmp = $caseSchedulerData['SCH_START_DATE'];
} else { } else {
$sDateTmp = date('Y-m-d'); $sDateTmp = date('Y-m-d');
$aData['SCH_START_DATE'] = $sDateTmp; $caseSchedulerData['SCH_START_DATE'] = $sDateTmp;
} }
$aData['SCH_END_DATE'] = date('Y-m-d', strtotime($sDateTmp)) . ' ' . date('H:i:s', strtotime($sTimeTmp)); $caseSchedulerData['SCH_END_DATE'] = date('Y-m-d', strtotime($sDateTmp)) . ' ' . date('H:i:s', strtotime($sTimeTmp));
$aData['SCH_START_TIME'] = time(); $caseSchedulerData['SCH_START_TIME'] = time();
$aData['SCH_START_DATE'] = $aData['SCH_START_TIME']; $caseSchedulerData['SCH_START_DATE'] = $caseSchedulerData['SCH_START_TIME'];
if ($aData['SCH_REPEAT_EVERY'] == "") { if ($caseSchedulerData['SCH_REPEAT_EVERY'] == "") {
throw (new \Exception( 'sch_repeat_every can not be null')); throw (new \Exception( 'sch_repeat_every can not be null'));
} }
$patternHour="/^([0-1][0-9]|[2][0-3])[\.]([0-5][0-9])$/"; $patternHour="/^([0-1][0-9]|[2][0-3])[\.]([0-5][0-9])$/";
if (!preg_match($patternHour, $aData['SCH_REPEAT_EVERY'])) { if (!preg_match($patternHour, $caseSchedulerData['SCH_REPEAT_EVERY'])) {
throw (new \Exception( 'Invalid value specified for sch_repeat_every. Expecting time in HH.MM format')); throw (new \Exception( 'Invalid value specified for sch_repeat_every. Expecting time in HH.MM format'));
} }
$nextRun = $aData['SCH_REPEAT_EVERY'] * 60 * 60; $nextRun = $caseSchedulerData['SCH_REPEAT_EVERY'] * 60 * 60;
$aData['SCH_REPEAT_EVERY'] = $aData['SCH_REPEAT_EVERY']; $caseSchedulerData['SCH_REPEAT_EVERY'] = $caseSchedulerData['SCH_REPEAT_EVERY'];
$date = $aData['SCH_START_TIME']; $date = $caseSchedulerData['SCH_START_TIME'];
$date += $nextRun; $date += $nextRun;
$date = date("Y-m-d H:i", $date); $date = date("Y-m-d H:i", $date);
$aData['SCH_TIME_NEXT_RUN'] = $date; $caseSchedulerData['SCH_TIME_NEXT_RUN'] = $date;
} }
} }
if (trim( $aData['SCH_END_DATE'] ) != '') { if (trim( $caseSchedulerData['SCH_END_DATE'] ) != '') {
$aData['SCH_END_DATE'] = $aData['SCH_END_DATE']; $caseSchedulerData['SCH_END_DATE'] = $caseSchedulerData['SCH_END_DATE'];
} }
if (! empty( $aData['SCH_REPEAT_TASK_CHK'] )) { if (! empty( $caseSchedulerData['SCH_REPEAT_TASK_CHK'] )) {
$nOptEvery = $aData['SCH_REPEAT_EVERY_OPT']; $nOptEvery = $caseSchedulerData['SCH_REPEAT_EVERY_OPT'];
if ($nOptEvery == 2) { if ($nOptEvery == 2) {
$aData['SCH_REPEAT_EVERY'] = $aData['SCH_REPEAT_EVERY'] * 60; $caseSchedulerData['SCH_REPEAT_EVERY'] = $caseSchedulerData['SCH_REPEAT_EVERY'] * 60;
} else { } else {
$aData['SCH_REPEAT_EVERY'] = $aData['SCH_REPEAT_EVERY']; $caseSchedulerData['SCH_REPEAT_EVERY'] = $caseSchedulerData['SCH_REPEAT_EVERY'];
} }
} }
if ((isset( $aData['CASE_SH_PLUGIN_UID'] )) && ($aData['CASE_SH_PLUGIN_UID'] != "")) { if ((isset( $caseSchedulerData['CASE_SH_PLUGIN_UID'] )) && ($caseSchedulerData['CASE_SH_PLUGIN_UID'] != "")) {
$aData['CASE_SH_PLUGIN_UID'] = $aData['CASE_SH_PLUGIN_UID']; $caseSchedulerData['CASE_SH_PLUGIN_UID'] = $caseSchedulerData['CASE_SH_PLUGIN_UID'];
} }
// check this data // check this data
$aData['SCH_REPEAT_UNTIL'] = ''; $caseSchedulerData['SCH_REPEAT_UNTIL'] = '';
$aData['SCH_REPEAT_STOP_IF_RUNNING'] = '0'; $caseSchedulerData['SCH_REPEAT_STOP_IF_RUNNING'] = '0';
$aData['CASE_SH_PLUGIN_UID'] = null; $caseSchedulerData['CASE_SH_PLUGIN_UID'] = null;
// //
$oCaseScheduler->Update($aData); $oCaseScheduler->Update($caseSchedulerData);
$oCriteria = $this->getCaseScheduler($sProcessUID, $sSchUID); $oCriteria = $this->getCaseScheduler($sProcessUID, $sSchUID);
return $oCriteria; return $oCriteria;
} catch (\Exception $e) { } catch (\Exception $e) {

View File

@@ -83,7 +83,6 @@ class OutputDocument
'out_doc_title' => $aRow['OUT_DOC_TITLE'], 'out_doc_title' => $aRow['OUT_DOC_TITLE'],
'out_doc_description' => $aRow['OUT_DOC_DESCRIPTION'], 'out_doc_description' => $aRow['OUT_DOC_DESCRIPTION'],
'out_doc_filename' => $aRow['OUT_DOC_FILENAME'], 'out_doc_filename' => $aRow['OUT_DOC_FILENAME'],
'out_doc_template' => $aRow['OUT_DOC_TEMPLATE'],
'out_doc_report_generator' => $aRow['OUT_DOC_REPORT_GENERATOR'], 'out_doc_report_generator' => $aRow['OUT_DOC_REPORT_GENERATOR'],
'out_doc_landscape' => $aRow['OUT_DOC_LANDSCAPE'], 'out_doc_landscape' => $aRow['OUT_DOC_LANDSCAPE'],
'out_doc_media' => $aRow['OUT_DOC_MEDIA'], 'out_doc_media' => $aRow['OUT_DOC_MEDIA'],
@@ -191,7 +190,6 @@ class OutputDocument
'out_doc_title' => $aRow['OUT_DOC_TITLE'], 'out_doc_title' => $aRow['OUT_DOC_TITLE'],
'out_doc_description' => $aRow['OUT_DOC_DESCRIPTION'], 'out_doc_description' => $aRow['OUT_DOC_DESCRIPTION'],
'out_doc_filename' => $aRow['OUT_DOC_FILENAME'], 'out_doc_filename' => $aRow['OUT_DOC_FILENAME'],
'out_doc_template' => $aRow['OUT_DOC_TEMPLATE'],
'out_doc_report_generator' => $aRow['OUT_DOC_REPORT_GENERATOR'], 'out_doc_report_generator' => $aRow['OUT_DOC_REPORT_GENERATOR'],
'out_doc_landscape' => $aRow['OUT_DOC_LANDSCAPE'], 'out_doc_landscape' => $aRow['OUT_DOC_LANDSCAPE'],
'out_doc_media' => $aRow['OUT_DOC_MEDIA'], 'out_doc_media' => $aRow['OUT_DOC_MEDIA'],
@@ -222,57 +220,67 @@ class OutputDocument
/** /**
* Create a new output document for a project * Create a new output document for a project
* @param string $sProcessUID * @param string $sProcessUID
* @param array $aData * @param array $outputDocumentData
* @return array * @return array
* *
* @access public * @access public
*/ */
public function addOutputDocument($sProcessUID, $aData) public function addOutputDocument($sProcessUID, $outputDocumentData)
{ {
$pemission = $aData['out_doc_pdf_security_permissions']; $pemission = $outputDocumentData['out_doc_pdf_security_permissions'];
$pemission = explode("|", $pemission); $pemission = explode("|", $pemission);
foreach ($pemission as $row) { foreach ($pemission as $row) {
if ($row == "print" || $row == "modify" || $row == "copy" || $row == "forms" || $row == "") { if ($row == "print" || $row == "modify" || $row == "copy" || $row == "forms" || $row == "") {
$aData['out_doc_pdf_security_permissions'] = $aData['out_doc_pdf_security_permissions']; $outputDocumentData['out_doc_pdf_security_permissions'] = $outputDocumentData['out_doc_pdf_security_permissions'];
} else { } else {
throw (new \Exception( 'Invalid value specified for out_doc_pdf_security_permissions')); throw (new \Exception( 'Invalid value specified for out_doc_pdf_security_permissions'));
} }
} }
try { try {
require_once(PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "OutputDocument.php"); require_once(PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "OutputDocument.php");
$aData = array_change_key_case($aData, CASE_UPPER); $outputDocumentData = array_change_key_case($outputDocumentData, CASE_UPPER);
$aData['PRO_UID'] = $sProcessUID; $outputDocumentData['PRO_UID'] = $sProcessUID;
//Verify data //Verify data
$process = new \Process(); $process = new \Process();
if (!$process->exists($sProcessUID)) { if (!$process->exists($sProcessUID)) {
throw (new \Exception(str_replace(array("{0}", "{1}"), array($sProcessUID, "PROCESS"), "The UID \"{0}\" doesn't exist in table {1}"))); throw (new \Exception(str_replace(array("{0}", "{1}"), array($sProcessUID, "PROCESS"), "The UID \"{0}\" doesn't exist in table {1}")));
} }
if ($aData["OUT_DOC_TITLE"]=="") { if ($outputDocumentData["OUT_DOC_TITLE"]=="") {
throw (new \Exception( 'Invalid value specified for out_doc_title, can not be null')); throw (new \Exception( 'Invalid value specified for out_doc_title, can not be null'));
} }
if (isset($aData["OUT_DOC_TITLE"]) && $this->existsTitle($sProcessUID, $aData["OUT_DOC_TITLE"])) { if (isset($outputDocumentData["OUT_DOC_TITLE"]) && $this->existsTitle($sProcessUID, $outputDocumentData["OUT_DOC_TITLE"])) {
throw (new \Exception(\G::LoadTranslation("ID_OUTPUT_NOT_SAVE"))); throw (new \Exception(\G::LoadTranslation("ID_OUTPUT_NOT_SAVE")));
} }
$oOutputDocument = new \OutputDocument(); $oOutputDocument = new \OutputDocument();
if (isset( $aData['OUT_DOC_TITLE'] ) && $aData['OUT_DOC_TITLE'] != '') { if (isset( $outputDocumentData['OUT_DOC_TITLE'] ) && $outputDocumentData['OUT_DOC_TITLE'] != '') {
if (isset( $aData['OUT_DOC_PDF_SECURITY_ENABLED'] ) && $aData['OUT_DOC_PDF_SECURITY_ENABLED'] == "0") { if (isset( $outputDocumentData['OUT_DOC_PDF_SECURITY_ENABLED'] ) && $outputDocumentData['OUT_DOC_PDF_SECURITY_ENABLED'] == "0") {
$aData['OUT_DOC_PDF_SECURITY_OPEN_PASSWORD'] = ""; $outputDocumentData['OUT_DOC_PDF_SECURITY_OPEN_PASSWORD'] = "";
$aData['OUT_DOC_PDF_SECURITY_OWNER_PASSWORD'] = ""; $outputDocumentData['OUT_DOC_PDF_SECURITY_OWNER_PASSWORD'] = "";
$aData['OUT_DOC_PDF_SECURITY_PERMISSIONS'] = ""; $outputDocumentData['OUT_DOC_PDF_SECURITY_PERMISSIONS'] = "";
} }
} }
$outDocUid = $oOutputDocument->create($aData); if (isset($outputDocumentData['OUT_DOC_CURRENT_REVISION'])) {
$aData = array_change_key_case($aData, CASE_LOWER); $oOutputDocument->setOutDocCurrentRevision($outputDocumentData['OUT_DOC_CURRENT_REVISION']);
if (isset( $aData['out_doc_pdf_security_open_password'] ) && $aData['out_doc_pdf_security_open_password'] != "") { } else {
$aData['out_doc_pdf_security_open_password'] = \G::encrypt( $aData['out_doc_pdf_security_open_password'], $outDocUid ); $oOutputDocument->setOutDocCurrentRevision(0);
$aData['out_doc_pdf_security_owner_password'] = \G::encrypt( $aData['out_doc_pdf_security_owner_password'], $outDocUid );
} }
$this->updateOutputDocument($sProcessUID, $aData, 1, $outDocUid); if (isset($outputDocumentData['OUT_DOC_FIELD_MAPPING'])) {
$oOutputDocument->setOutDocFieldMapping($outputDocumentData['OUT_DOC_FIELD_MAPPING']);
} else {
$oOutputDocument->setOutDocFieldMapping(null);
}
$outDocUid = $oOutputDocument->create($outputDocumentData);
$outputDocumentData = array_change_key_case($outputDocumentData, CASE_LOWER);
if (isset( $outputDocumentData['out_doc_pdf_security_open_password'] ) && $outputDocumentData['out_doc_pdf_security_open_password'] != "") {
$outputDocumentData['out_doc_pdf_security_open_password'] = \G::encrypt( $outputDocumentData['out_doc_pdf_security_open_password'], $outDocUid );
$outputDocumentData['out_doc_pdf_security_owner_password'] = \G::encrypt( $outputDocumentData['out_doc_pdf_security_owner_password'], $outDocUid );
}
$this->updateOutputDocument($sProcessUID, $outputDocumentData, 1, $outDocUid);
//Return //Return
unset($aData["PRO_UID"]); unset($outputDocumentData["PRO_UID"]);
$aData = array_change_key_case($aData, CASE_LOWER); $outputDocumentData = array_change_key_case($outputDocumentData, CASE_LOWER);
$aData["out_doc_uid"] = $outDocUid; $outputDocumentData["out_doc_uid"] = $outDocUid;
return $aData; return $outputDocumentData;
} catch (\Exception $e) { } catch (\Exception $e) {
throw $e; throw $e;
} }
@@ -281,50 +289,47 @@ class OutputDocument
/** /**
* Update a output document for a project * Update a output document for a project
* @param string $sProcessUID * @param string $sProcessUID
* @param array $aData * @param array $outputDocumentData
* @param string $sOutputDocumentUID * @param string $sOutputDocumentUID
* @param int $sFlag * @param int $sFlag
* *
* @access public * @access public
*/ */
public function updateOutputDocument($sProcessUID, $aData, $sFlag, $sOutputDocumentUID = '') public function updateOutputDocument($sProcessUID, $outputDocumentData, $sFlag, $sOutputDocumentUID = '')
{ {
$oConnection = \Propel::getConnection(\OutputDocumentPeer::DATABASE_NAME); $oConnection = \Propel::getConnection(\OutputDocumentPeer::DATABASE_NAME);
$pemission = $aData['out_doc_pdf_security_permissions']; $pemission = $outputDocumentData['out_doc_pdf_security_permissions'];
$pemission = explode("|", $pemission); $pemission = explode("|", $pemission);
foreach ($pemission as $row) { foreach ($pemission as $row) {
if ($row == "print" || $row == "modify" || $row == "copy" || $row == "forms" || $row == "") { if ($row == "print" || $row == "modify" || $row == "copy" || $row == "forms" || $row == "") {
$aData['out_doc_pdf_security_permissions'] = $aData['out_doc_pdf_security_permissions']; $outputDocumentData['out_doc_pdf_security_permissions'] = $outputDocumentData['out_doc_pdf_security_permissions'];
} else { } else {
throw (new \Exception( 'Invalid value specified for out_doc_pdf_security_permissions')); throw (new \Exception( 'Invalid value specified for out_doc_pdf_security_permissions'));
} }
} }
try { try {
$aData = array_change_key_case($aData, CASE_UPPER); $outputDocumentData = array_change_key_case($outputDocumentData, CASE_UPPER);
$oOutputDocument = \OutputDocumentPeer::retrieveByPK($sOutputDocumentUID); $oOutputDocument = \OutputDocumentPeer::retrieveByPK($sOutputDocumentUID);
if (!is_null($oOutputDocument)) { if (!is_null($oOutputDocument)) {
$oOutputDocument->fromArray($aData, \BasePeer::TYPE_FIELDNAME); $oOutputDocument->fromArray($outputDocumentData, \BasePeer::TYPE_FIELDNAME);
if ($oOutputDocument->validate()) { if ($oOutputDocument->validate()) {
$oConnection->begin(); $oConnection->begin();
if (isset($aData['OUT_DOC_TITLE'])) { if (isset($outputDocumentData['OUT_DOC_TITLE'])) {
$uid = $this->titleExists($sProcessUID, $aData["OUT_DOC_TITLE"]); $uid = $this->titleExists($sProcessUID, $outputDocumentData["OUT_DOC_TITLE"]);
if ($uid != '') { if ($uid != '') {
if ($uid != $sOutputDocumentUID && $sFlag == 0) { if ($uid != $sOutputDocumentUID && $sFlag == 0) {
throw (new \Exception(\G::LoadTranslation("ID_OUTPUT_NOT_SAVE"))); throw (new \Exception(\G::LoadTranslation("ID_OUTPUT_NOT_SAVE")));
} }
} }
$oOutputDocument->setOutDocTitle($aData['OUT_DOC_TITLE']); $oOutputDocument->setOutDocTitle($outputDocumentData['OUT_DOC_TITLE']);
} }
if (isset($aData['OUT_DOC_DESCRIPTION'])) { if (isset($outputDocumentData['OUT_DOC_DESCRIPTION'])) {
$oOutputDocument->setOutDocDescription($aData['OUT_DOC_DESCRIPTION']); $oOutputDocument->setOutDocDescription($outputDocumentData['OUT_DOC_DESCRIPTION']);
} }
if (isset($aData['OUT_DOC_FILENAME'])) { if (isset($outputDocumentData['OUT_DOC_FILENAME'])) {
$oOutputDocument->setOutDocFilename($aData['OUT_DOC_FILENAME']); $oOutputDocument->setOutDocFilename($outputDocumentData['OUT_DOC_FILENAME']);
} }
if (isset($aData['OUT_DOC_TEMPLATE'])) { $oOutputDocument->save();
$oOutputDocument->setOutDocTemplate($aData['OUT_DOC_TEMPLATE']);
}
$iResult = $oOutputDocument->save();
$oConnection->commit(); $oConnection->commit();
} else { } else {
$sMessage = ''; $sMessage = '';
@@ -338,7 +343,7 @@ class OutputDocument
throw (new \Exception('This row does not exist!')); throw (new \Exception('This row does not exist!'));
} }
} catch (\Exception $e) { } catch (\Exception $e) {
throw $e; throw $e;
} }
} }

View File

@@ -2,6 +2,7 @@
namespace ProcessMaker\BusinessModel; namespace ProcessMaker\BusinessModel;
use \G; use \G;
use Luracast\Restler\User;
class ProcessSupervisor class ProcessSupervisor
{ {
@@ -201,13 +202,21 @@ class ProcessSupervisor
$sDelimiter = \DBAdapter::getStringDelimiter(); $sDelimiter = \DBAdapter::getStringDelimiter();
$oCriteria = new \Criteria('workflow'); $oCriteria = new \Criteria('workflow');
$oCriteria->addSelectColumn(\UsersPeer::USR_UID); $oCriteria->addSelectColumn(\UsersPeer::USR_UID);
$oCriteria->addSelectColumn(\UsersPeer::USR_ROLE);
$oCriteria->add(\UsersPeer::USR_UID, $aUIDS, \Criteria::NOT_IN); $oCriteria->add(\UsersPeer::USR_UID, $aUIDS, \Criteria::NOT_IN);
$oDataset = \UsersPeer::doSelectRS($oCriteria); $oDataset = \UsersPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC); $oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$oDataset->next(); $oDataset->next();
$aUIDS = array(); $aUIDS = array();
while ($aRow = $oDataset->getRow()) { while ($aRow = $oDataset->getRow()) {
$aUIDS [] = $aRow ['USR_UID']; require_once (PATH_RBAC_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "Roles.php");
$userRole = new \ProcessMaker\BusinessModel\User();
$permission = $userRole->loadUserRolePermission('PROCESSMAKER', $aRow['USR_UID']);
foreach ($permission as $key => $value) {
if ($value["PER_CODE"] == 'PM_SUPERVISOR') {
$aUIDS [] = $aRow ['USR_UID'];
}
}
$oDataset->next(); $oDataset->next();
} }
$oCriteria = new \Criteria('workflow'); $oCriteria = new \Criteria('workflow');
@@ -218,7 +227,6 @@ class ProcessSupervisor
$oCriteria->addSelectColumn(\UsersPeer::USR_EMAIL); $oCriteria->addSelectColumn(\UsersPeer::USR_EMAIL);
$oCriteria->add(\UsersPeer::USR_UID, $aUIDS, \Criteria::IN); $oCriteria->add(\UsersPeer::USR_UID, $aUIDS, \Criteria::IN);
$oCriteria->addAscendingOrderByColumn(\UsersPeer::USR_FIRSTNAME); $oCriteria->addAscendingOrderByColumn(\UsersPeer::USR_FIRSTNAME);
$oCriteria->add(\UsersPeer::USR_ROLE, 'PROCESSMAKER_ADMIN', \Criteria::EQUAL);
$oCriteria->add(\UsersPeer::USR_STATUS, 'ACTIVE'); $oCriteria->add(\UsersPeer::USR_STATUS, 'ACTIVE');
$oDataset = \UsersPeer::doSelectRS($oCriteria); $oDataset = \UsersPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC); $oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);

View File

@@ -210,34 +210,36 @@ class User
require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "Users.php"); require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "Users.php");
$arrayData = array_change_key_case($arrayData, CASE_UPPER); $arrayData = array_change_key_case($arrayData, CASE_UPPER);
$form = $arrayData; $form = $arrayData;
if ($form['USR_REPLACED_BY'] != '') { if (array_key_exists('USR_REPLACED_BY', $form)) {
$oReplacedBy = \UsersPeer::retrieveByPK($form['USR_REPLACED_BY']); if ($form['USR_REPLACED_BY'] != '') {
if (is_null($oReplacedBy)) { $oReplacedBy = \UsersPeer::retrieveByPK($form['USR_REPLACED_BY']);
throw new \Exception('usr_replaced_by:'.$form['USR_REPLACED_BY'].' '.\G::LoadTranslation('ID_AUTHENTICATION_SOURCE_INVALID')); if (is_null($oReplacedBy)) {
throw new \Exception('usr_replaced_by:'.$form['USR_REPLACED_BY'].' '.\G::LoadTranslation('ID_AUTHENTICATION_SOURCE_INVALID'));
}
} }
} }
if ($form['USR_COUNTRY'] != '') { if (array_key_exists('USR_COUNTRY', $form)) {
$oCountry = \IsoCountryPeer::retrieveByPK($form['USR_COUNTRY']); if ($form['USR_COUNTRY'] != '') {
if (is_null($oCountry)) { $oCountry = \IsoCountryPeer::retrieveByPK($form['USR_COUNTRY']);
throw new \Exception('Invalid value for usr_country: '.$form['USR_COUNTRY']); if (is_null($oCountry)) {
throw new \Exception('Invalid value for usr_country: '.$form['USR_COUNTRY']);
}
} }
} }
if ($form['USR_CITY'] != '') { if (array_key_exists('USR_CITY', $form)) {
$oCity = \IsoSubdivisionPeer::retrieveByPK($form['USR_COUNTRY'], $form['USR_CITY']); if ($form['USR_CITY'] != '') {
if (is_null($oCity)) { $oCity = \IsoSubdivisionPeer::retrieveByPK($form['USR_COUNTRY'], $form['USR_CITY']);
throw new \Exception('Invalid value for usr_city: '.$form['USR_CITY']); if (is_null($oCity)) {
throw new \Exception('Invalid value for usr_city: '.$form['USR_CITY']);
}
} }
} }
if ($form['USR_LOCATION'] != '') { if (array_key_exists('USR_LOCATION', $form)) {
$oLocation = \IsoLocationPeer::retrieveByPK($form['USR_COUNTRY'], $form['USR_LOCATION']); if ($form['USR_LOCATION'] != '') {
if (is_null($oLocation)) { $oLocation = \IsoLocationPeer::retrieveByPK($form['USR_COUNTRY'], $form['USR_LOCATION']);
throw new \Exception('Invalid value for usr_location: '.$form['USR_LOCATION']); if (is_null($oLocation)) {
} throw new \Exception('Invalid value for usr_location: '.$form['USR_LOCATION']);
} }
if ($form['USR_COUNTRY'] != '') {
$oReplacedBy = \IsoCountryPeer::retrieveByPK($form['USR_COUNTRY']);
if (is_null($oReplacedBy)) {
throw new \Exception('Invalid value for usr_country: '.$form['USR_COUNTRY']);
} }
} }
if (isset($arrayData['USR_UID'])) { if (isset($arrayData['USR_UID'])) {
@@ -245,14 +247,20 @@ class User
} else { } else {
$form['USR_UID'] = ''; $form['USR_UID'] = '';
} }
$sConfirm = $this->testPassword($form['USR_NEW_PASS']); if (array_key_exists('USR_NEW_PASS', $form)) {
if ($sConfirm['STATUS'] != 1) { $sConfirm = $this->testPassword($form['USR_NEW_PASS']);
throw new \Exception('usr_new_pass. '.$sConfirm['DESCRIPTION']); if ($sConfirm['STATUS'] != 1) {
throw new \Exception('usr_new_pass. '.$sConfirm['DESCRIPTION']);
}
} }
if ($form['USR_NEW_PASS'] != $form['USR_CNF_PASS']) { if (array_key_exists('USR_NEW_PASS', $form)) {
throw new \Exception('usr_new_pass or usr_cnf_pass. '.\G::LoadTranslation('ID_NEW_PASS_SAME_OLD_PASS')); if ($form['USR_NEW_PASS'] != $form['USR_CNF_PASS']) {
throw new \Exception('usr_new_pass or usr_cnf_pass. '.\G::LoadTranslation('ID_NEW_PASS_SAME_OLD_PASS'));
}
}
if (array_key_exists('USR_NEW_PASS', $form)) {
$form['USR_PASSWORD'] = md5($form['USR_NEW_PASS']);
} }
$form['USR_PASSWORD'] = md5($form['USR_NEW_PASS']);
if (!isset($form['USR_CITY'])) { if (!isset($form['USR_CITY'])) {
$form['USR_CITY'] = ''; $form['USR_CITY'] = '';
} }
@@ -264,7 +272,11 @@ class User
} }
$criteria = new \Criteria(); $criteria = new \Criteria();
$criteria->addSelectColumn(\UsersPeer::USR_USERNAME); $criteria->addSelectColumn(\UsersPeer::USR_USERNAME);
$criteria->add(\UsersPeer::USR_USERNAME, utf8_encode($arrayData['USR_USERNAME'])); if (array_key_exists('USR_USERNAME', $form)) {
$criteria->add(\UsersPeer::USR_USERNAME, utf8_encode($arrayData['USR_USERNAME']));
} else {
throw new \Exception('usr_name. '.\G::LoadTranslation('ID_MSG_ERROR_USR_USERNAME'));
}
if (\UsersPeer::doCount($criteria) > 0) { if (\UsersPeer::doCount($criteria) > 0) {
throw new \Exception('usr_username. '.\G::LoadTranslation('ID_USERNAME_ALREADY_EXISTS', array('USER_ID' => $arrayData['USR_USERNAME']))); throw new \Exception('usr_username. '.\G::LoadTranslation('ID_USERNAME_ALREADY_EXISTS', array('USER_ID' => $arrayData['USR_USERNAME'])));
} }

View File

@@ -229,14 +229,14 @@ class BpmnWorkflow extends Project\Bpmn
// update case scheduler // update case scheduler
if ($event && $event->getEvnType() == "START" && $event->getEvnMarker() == "TIMER") { if ($event && $event->getEvnType() == "START" && $event->getEvnMarker() == "TIMER") {
$aData = array('TAS_UID'=>$data["FLO_ELEMENT_DEST"], 'SCH_UID'=>$data["FLO_ELEMENT_ORIGIN"]); $caseSchedulerData = array('TAS_UID'=>$data["FLO_ELEMENT_DEST"]);
$this->wp->updateCaseScheduler($aData); $this->wp->updateCaseScheduler($data["FLO_ELEMENT_ORIGIN"], $caseSchedulerData);
} }
// update web entry // update web entry
if ($event && $event->getEvnType() == "START" && $event->getEvnMarker() == "MESSAGE") { if ($event && $event->getEvnType() == "START" && $event->getEvnMarker() == "MESSAGE") {
$aData = array('TAS_UID'=>$data["FLO_ELEMENT_DEST"], 'WE_UID'=>$data["FLO_ELEMENT_ORIGIN"]); $webEntryData = array('TAS_UID'=>$data["FLO_ELEMENT_DEST"]);
$this->wp->updateWebEntry($aData); $this->wp->updateWebEntry($data["FLO_ELEMENT_ORIGIN"], $webEntryData);
} }
break; break;
} }
@@ -286,20 +286,14 @@ class BpmnWorkflow extends Project\Bpmn
// update case scheduler // update case scheduler
if (! is_null($event) && $event->getEvnType() == "START" && $event->getEvnMarker() == "TIMER") { if (! is_null($event) && $event->getEvnType() == "START" && $event->getEvnMarker() == "TIMER") {
$aData = array( $caseSchedulerData = array( 'TAS_UID'=>'' );
'TAS_UID'=>'', $this->wp->updateCaseScheduler($flow->getFloElementOrigin(), $caseSchedulerData);
'SCH_UID'=>$flow->getFloElementOrigin()
);
$this->wp->updateCaseScheduler($aData);
} }
// update web entry // update web entry
if (! is_null($event) && $event->getEvnType() == "START" && $event->getEvnMarker() == "MESSAGE") { if (! is_null($event) && $event->getEvnType() == "START" && $event->getEvnMarker() == "MESSAGE") {
$aData = array( $webEntryData = array( 'TAS_UID'=>'' );
'TAS_UID'=>'', $this->wp->updateWebEntry($flow->getFloElementOrigin(), $webEntryData);
'WE_UID'=>$flow->getFloElementOrigin()
);
$this->wp->updateWebEntry($aData);
} }
} elseif ($flow->getFloElementOriginType() == "bpmnActivity" && } elseif ($flow->getFloElementOriginType() == "bpmnActivity" &&

View File

@@ -829,9 +829,10 @@ class Workflow extends Handler
} }
} }
public function updateCaseScheduler($data) public function updateCaseScheduler($schUid, $data)
{ {
try { try {
$data = array_merge(array("SCH_UID" => $schUid), $data);
$caseScheduler = new \CaseScheduler(); $caseScheduler = new \CaseScheduler();
$caseScheduler->update($data); $caseScheduler->update($data);
self::log("Update Case Scheduler Success!"); self::log("Update Case Scheduler Success!");
@@ -873,10 +874,9 @@ class Workflow extends Handler
} }
} }
public function updateWebEntry($data) public function updateWebEntry($webEntryUid, $data)
{ {
try { try {
$webEntryUid = $data['WE_UID'];
$webEntry = \WebEntryPeer::retrieveByPK($webEntryUid); $webEntry = \WebEntryPeer::retrieveByPK($webEntryUid);
$webEntry->fromArray($data, \BasePeer::TYPE_FIELDNAME); $webEntry->fromArray($data, \BasePeer::TYPE_FIELDNAME);
$webEntry->save(); $webEntry->save();

View File

@@ -128,11 +128,6 @@ class OutputDocumentStructure
*/ */
public $out_doc_filename; public $out_doc_filename;
/**
* @var string {@from body}
*/
public $out_doc_template;
/** /**
* @var string {@from body} {@choice TCPDF,HTML2PDF} * @var string {@from body} {@choice TCPDF,HTML2PDF}
*/ */