2014-01-14 16:30:34 -04:00
|
|
|
<?php
|
|
|
|
|
namespace BusinessModel;
|
|
|
|
|
|
|
|
|
|
use \G;
|
|
|
|
|
|
|
|
|
|
class CaseScheduler
|
|
|
|
|
{
|
|
|
|
|
/**
|
|
|
|
|
* Return case scheduler of a project
|
|
|
|
|
* @param string $sProcessUID
|
|
|
|
|
* @return array
|
|
|
|
|
*
|
|
|
|
|
* @access public
|
|
|
|
|
*/
|
|
|
|
|
public function getCaseSchedulers($sProcessUID = '')
|
|
|
|
|
{
|
|
|
|
|
try {
|
|
|
|
|
$oCriteria = new \Criteria( 'workflow' );
|
|
|
|
|
$oCriteria->clearSelectColumns();
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_UID );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_NAME );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_DEL_USER_NAME );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_DEL_USER_PASS );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_DEL_USER_UID );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::PRO_UID );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::TAS_UID );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_TIME_NEXT_RUN );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_LAST_RUN_TIME );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_STATE );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_LAST_STATE );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::USR_UID );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_OPTION );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_START_TIME );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_START_DATE );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_DAYS_PERFORM_TASK );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_EVERY_DAYS );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_WEEK_DAYS );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_START_DAY );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_MONTHS );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_END_DATE );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_REPEAT_EVERY );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_REPEAT_UNTIL );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_REPEAT_STOP_IF_RUNNING );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::CASE_SH_PLUGIN_UID );
|
|
|
|
|
$oCriteria->add( \CaseSchedulerPeer::PRO_UID, $sProcessUID );
|
|
|
|
|
$oDataset = \CaseSchedulerPeer::doSelectRS( $oCriteria );
|
|
|
|
|
$oDataset->setFetchmode( \ResultSet::FETCHMODE_ASSOC );
|
|
|
|
|
$oDataset->next();
|
|
|
|
|
$aRows = array();
|
|
|
|
|
while ($aRow = $oDataset->getRow()) {
|
|
|
|
|
$aRow = array_change_key_case($aRow, CASE_LOWER);
|
|
|
|
|
$aRows[] = $aRow;
|
|
|
|
|
$oDataset->next();
|
|
|
|
|
}
|
|
|
|
|
return $aRows;
|
|
|
|
|
} catch (Exception $e) {
|
|
|
|
|
throw $e;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Return case scheduler of a project
|
|
|
|
|
* @param string $sProcessUID
|
|
|
|
|
* @param string $sCaseSchedulerUID
|
|
|
|
|
* @return array
|
|
|
|
|
*
|
|
|
|
|
* @access public
|
|
|
|
|
*/
|
|
|
|
|
public function getCaseScheduler($sProcessUID = '', $sCaseSchedulerUID = '')
|
|
|
|
|
{
|
|
|
|
|
try {
|
|
|
|
|
$oCriteria = new \Criteria( 'workflow' );
|
|
|
|
|
$oCriteria->clearSelectColumns();
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_UID );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_NAME );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_DEL_USER_NAME );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_DEL_USER_PASS );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_DEL_USER_UID );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::PRO_UID );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::TAS_UID );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_TIME_NEXT_RUN );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_LAST_RUN_TIME );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_STATE );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_LAST_STATE );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::USR_UID );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_OPTION );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_START_TIME );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_START_DATE );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_DAYS_PERFORM_TASK );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_EVERY_DAYS );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_WEEK_DAYS );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_START_DAY );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_MONTHS );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_END_DATE );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_REPEAT_EVERY );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_REPEAT_UNTIL );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::SCH_REPEAT_STOP_IF_RUNNING );
|
|
|
|
|
$oCriteria->addSelectColumn( \CaseSchedulerPeer::CASE_SH_PLUGIN_UID );
|
|
|
|
|
$oCriteria->add( \CaseSchedulerPeer::PRO_UID, $sProcessUID );
|
|
|
|
|
$oCriteria->add( \CaseSchedulerPeer::SCH_UID, $sCaseSchedulerUID );
|
|
|
|
|
$oDataset = \CaseSchedulerPeer::doSelectRS( $oCriteria );
|
|
|
|
|
$oDataset->setFetchmode( \ResultSet::FETCHMODE_ASSOC );
|
|
|
|
|
$oDataset->next();
|
|
|
|
|
$aRows = array();
|
|
|
|
|
while ($aRow = $oDataset->getRow()) {
|
|
|
|
|
$aRow = array_change_key_case($aRow, CASE_LOWER);
|
|
|
|
|
$aRows = $aRow;
|
|
|
|
|
$oDataset->next();
|
|
|
|
|
}
|
|
|
|
|
return $aRows;
|
|
|
|
|
} catch (Exception $e) {
|
|
|
|
|
throw $e;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Create a new case scheduler of a project
|
|
|
|
|
* @param string $sProcessUID
|
|
|
|
|
* @param array $aData
|
|
|
|
|
* @param string $userUID
|
|
|
|
|
* @return array
|
|
|
|
|
*
|
|
|
|
|
* @access public
|
|
|
|
|
*/
|
|
|
|
|
public function addCaseScheduler($sProcessUID, $aData, $userUID)
|
|
|
|
|
{
|
|
|
|
|
try {
|
|
|
|
|
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);
|
|
|
|
|
$oCaseScheduler = new \CaseScheduler();
|
|
|
|
|
if (empty($aData)) {
|
|
|
|
|
die( 'The information sended is empty!' );
|
|
|
|
|
}
|
|
|
|
|
$aData['SCH_UID'] = \G::generateUniqueID();
|
|
|
|
|
$aData['SCH_DEL_USER_PASS'] = md5( $aData['SCH_DEL_USER_PASS']);
|
|
|
|
|
$aData['SCH_STATE'] = 'ACTIVE';
|
|
|
|
|
$aData['SCH_LAST_STATE'] = 'CREATED'; // 'ACTIVE';
|
|
|
|
|
$aData['USR_UID'] = $userUID;
|
|
|
|
|
$sOption = $aData['SCH_OPTION'];
|
|
|
|
|
if ($aData['SCH_START_DATE'] != '') {
|
|
|
|
|
$sDateTmp = $aData['SCH_START_DATE'];
|
|
|
|
|
} else {
|
|
|
|
|
$sDateTmp = date( 'Y-m-d' );
|
|
|
|
|
}
|
|
|
|
|
$sTimeTmp = $aData['SCH_START_TIME'];
|
2014-01-16 09:35:11 -04:00
|
|
|
//echo $sDateTmp ." ------- " .$sTimeTmp; die();
|
|
|
|
|
// $aData['SCH_START_TIME'] = date( 'Y-m-d', strtotime( $sDateTmp ) ) . ' ' . date( 'H:i:s', strtotime( $sTimeTmp ) );
|
|
|
|
|
// $aData['SCH_START_DATE'] = date( 'Y-m-d', strtotime( $sDateTmp ) ) . ' ' . date( 'H:i:s', strtotime( $sTimeTmp ) );
|
2014-01-14 16:30:34 -04:00
|
|
|
$nActualTime = $aData['SCH_START_TIME']; // time();
|
|
|
|
|
$sValue = '';
|
|
|
|
|
$sDaysPerformTask = '';
|
|
|
|
|
$sWeeks = '';
|
|
|
|
|
$sMonths = '';
|
|
|
|
|
$sMonths = '';
|
|
|
|
|
$sStartDay = '';
|
|
|
|
|
$nSW = 0;
|
|
|
|
|
switch ($sOption) {
|
|
|
|
|
case '1': // Option 1
|
|
|
|
|
$sValue = $aData['SCH_DAYS_PERFORM_TASK'];
|
|
|
|
|
switch ($sValue) {
|
|
|
|
|
case '1':
|
|
|
|
|
$aData['SCH_DAYS_PERFORM_TASK'] = $aData['SCH_DAYS_PERFORM_TASK'] . '|1';
|
|
|
|
|
break;
|
|
|
|
|
case '2':
|
|
|
|
|
$aData['SCH_OPTION'] = '2';
|
|
|
|
|
$aData['SCH_EVERY_DAYS'] = '1'; //check
|
|
|
|
|
$aData['SCH_WEEK_DAYS'] = '1|2|3|4|5|'; //check
|
|
|
|
|
break;
|
|
|
|
|
case '3': // Every [n] Days
|
2014-01-16 09:35:11 -04:00
|
|
|
$sDaysPerformTask = $aData['SCH_DAYS_PERFORM_TASK'];
|
|
|
|
|
$aData['SCH_DAYS_PERFORM_TASK'] = $aData['SCH_DAYS_PERFORM_TASK'];
|
2014-01-14 16:30:34 -04:00
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case '2': // If the option is zero, set by default 1
|
|
|
|
|
if (empty( $aData['SCH_EVERY_DAYS'] )) {
|
|
|
|
|
$nEveryDays = 1;
|
|
|
|
|
} else {
|
|
|
|
|
$nEveryDays = $aData['SCH_EVERY_DAYS'];
|
|
|
|
|
}
|
|
|
|
|
$aData['SCH_EVERY_DAYS'] = $nEveryDays;
|
|
|
|
|
$sWeeks = '';
|
|
|
|
|
if (! empty( $aData['SCH_WEEK_DAYS'] )) {
|
|
|
|
|
$aWeekDays = $aData['SCH_WEEK_DAYS'];
|
2014-01-16 09:35:11 -04:00
|
|
|
}
|
2014-01-14 16:30:34 -04:00
|
|
|
$sStartTime = $aData['SCH_START_TIME'];
|
2014-01-16 09:35:11 -04:00
|
|
|
$sWeeks = $aData['SCH_WEEK_DAYS'];
|
2014-01-14 16:30:34 -04:00
|
|
|
break;
|
|
|
|
|
case '3':
|
|
|
|
|
$nStartDay = $aData['SCH_START_DAY'];
|
|
|
|
|
if ($nStartDay == 1) {
|
|
|
|
|
$aData['SCH_START_DAY'] = $nStartDay . '|' . $aData['SCH_START_DAY_OPT_1'];
|
|
|
|
|
} else {
|
2014-01-16 09:35:11 -04:00
|
|
|
$aData['SCH_START_DAY'] = $nStartDay . '|' . $aData['SCH_START_DAY_OPT_2'];
|
2014-01-14 16:30:34 -04:00
|
|
|
}
|
|
|
|
|
$sMonths = '';
|
|
|
|
|
if (! empty( $aData['SCH_MONTHS'] )) {
|
|
|
|
|
$aMonths = $aData['SCH_MONTHS'];
|
|
|
|
|
}
|
2014-01-16 09:35:11 -04:00
|
|
|
$sMonths = $aData['SCH_MONTHS'];
|
2014-01-14 16:30:34 -04:00
|
|
|
$sStartDay = $aData['SCH_START_DAY'];
|
|
|
|
|
$sValue = $nStartDay;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
if (($sOption != '1') && ($sOption != '4') && ($sOption != '5')) {
|
|
|
|
|
if ($sStartDay == '') {
|
|
|
|
|
$sStartDay = date( 'Y-m-d' );
|
|
|
|
|
}
|
|
|
|
|
$dCurrentDay = date( "d" );
|
|
|
|
|
$dCurrentMonth = date( "m" );
|
|
|
|
|
$aStartDay = explode( "|", $aData['SCH_START_DAY'] );
|
|
|
|
|
if ($sOption == '3' && $aStartDay[0] == '1') {
|
|
|
|
|
$monthsArray = explode( "|", $sMonths );
|
|
|
|
|
foreach ($monthsArray as $row) {
|
|
|
|
|
if ($dCurrentMonth == $row && $dCurrentDay < $aStartDay[1]) {
|
|
|
|
|
$startTime = $aData['SCH_START_TIME'] . ":00";
|
|
|
|
|
$aData['SCH_TIME_NEXT_RUN'] = date( 'Y' ) . '-' . $row . '-' . $aStartDay[1] . ' ' . $startTime;
|
|
|
|
|
break;
|
|
|
|
|
} else {
|
|
|
|
|
$aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->updateNextRun( $sOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
2014-01-16 09:35:11 -04:00
|
|
|
|
|
|
|
|
echo "1*".$sOption." 2*". $sValue." 3*". $nActualTime." 4*". $sDaysPerformTask." 5*". $sWeeks." 6*". $sStartDay ." 7*". $sMonths."<br>";
|
2014-01-14 16:30:34 -04:00
|
|
|
$aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->updateNextRun( $sOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp );
|
2014-01-16 09:35:11 -04:00
|
|
|
echo "<br> SCH_TIME_NEXT_RUN ".$aData['SCH_TIME_NEXT_RUN'];
|
|
|
|
|
}
|
2014-01-14 16:30:34 -04:00
|
|
|
} else {
|
|
|
|
|
if ($sOption == '4') {
|
|
|
|
|
$aData['SCH_END_DATE'] = $aData['SCH_START_TIME'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$aData['SCH_TIME_NEXT_RUN'] = $aData['SCH_START_TIME'];
|
|
|
|
|
|
|
|
|
|
if ($sOption == 5) {
|
|
|
|
|
$aData['SCH_START_TIME'] = time();
|
|
|
|
|
$aData['SCH_START_DATE'] = $aData['SCH_START_TIME'];
|
|
|
|
|
$nextRun = $aData['SCH_REPEAT_EVERY'] * 60 * 60;
|
|
|
|
|
$aData['SCH_REPEAT_EVERY'] = $aData['SCH_REPEAT_EVERY'];
|
|
|
|
|
$date = $aData['SCH_START_TIME'];
|
|
|
|
|
$date += $nextRun;
|
|
|
|
|
$date = date( "Y-m-d H:i", $date );
|
|
|
|
|
$aData['SCH_TIME_NEXT_RUN'] = $date;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (trim( $aData['SCH_END_DATE'] ) != '') {
|
|
|
|
|
$aData['SCH_END_DATE'] = $aData['SCH_END_DATE'];
|
|
|
|
|
}
|
|
|
|
|
if (! empty( $aData['SCH_REPEAT_TASK_CHK'] )) {
|
|
|
|
|
$nOptEvery = $aData['SCH_REPEAT_EVERY_OPT'];
|
|
|
|
|
if ($nOptEvery == 2) {
|
|
|
|
|
$aData['SCH_REPEAT_EVERY'] = $aData['SCH_REPEAT_EVERY'] * 60;
|
|
|
|
|
} else {
|
|
|
|
|
$aData['SCH_REPEAT_EVERY'] = $aData['SCH_REPEAT_EVERY'];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ((isset( $aData['CASE_SH_PLUGIN_UID'] )) && ($aData['CASE_SH_PLUGIN_UID'] != "")) {
|
|
|
|
|
$aData['CASE_SH_PLUGIN_UID'] = $aData['CASE_SH_PLUGIN_UID'];
|
|
|
|
|
}
|
|
|
|
|
$oCaseScheduler->create( $aData );
|
|
|
|
|
$oCriteria = $this->getCaseScheduler($sProcessUID, $aData['SCH_UID']);
|
|
|
|
|
return $oCriteria;
|
|
|
|
|
} catch (Exception $oException) {
|
|
|
|
|
die( $oException->getMessage() );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Update case scheduler for a project
|
|
|
|
|
* @param string $sProcessUID
|
|
|
|
|
* @param string $sSchUID
|
|
|
|
|
* @param array $aData
|
|
|
|
|
* @param string $userUID
|
|
|
|
|
*
|
|
|
|
|
* @access public
|
|
|
|
|
*/
|
|
|
|
|
public function updateCaseScheduler($sProcessUID, $sSchUID = '', $aData, $userUID)
|
|
|
|
|
{
|
|
|
|
|
try {
|
|
|
|
|
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);
|
|
|
|
|
if (empty( $aData )) {
|
|
|
|
|
die( 'The information sended is empty!' );
|
|
|
|
|
}
|
|
|
|
|
$oCaseScheduler = new \CaseScheduler();
|
|
|
|
|
|
|
|
|
|
$oCaseScheduler->Load($sSchUID);
|
|
|
|
|
$aData['SCH_DEL_USER_NAME'] = $aData['SCH_USER_NAME'];
|
|
|
|
|
if ($aData['SCH_USER_PASSWORD'] != 'DefaultPM') {
|
|
|
|
|
$aData['SCH_DEL_USER_PASS'] = md5( $aData['SCH_USER_PASSWORD'] );
|
|
|
|
|
}
|
|
|
|
|
$aData['SCH_DEL_USER_UID'] = $aData['SCH_USER_UID'];
|
|
|
|
|
$aData['USR_UID'] = $userUID;
|
|
|
|
|
$sOption = $aData['SCH_OPTION'];
|
|
|
|
|
$sDateTmp = $aData['SCH_START_DATE'];
|
|
|
|
|
$sTimeTmp = $aData['SCH_START_TIME'];
|
|
|
|
|
// $aData['SCH_START_TIME'] = date( 'Y-m-d', strtotime( $sDateTmp ) ) . ' ' . date( 'H:i:s', strtotime( $sTimeTmp ) );
|
|
|
|
|
// $aData['SCH_START_DATE'] = date( 'Y-m-d', strtotime( $sDateTmp ) ) . ' ' . date( 'H:i:s', strtotime( $sTimeTmp ) );
|
2014-01-15 14:51:32 -04:00
|
|
|
$previousStartTime = date( 'Y-m-d', strtotime( $aData['PREV_SCH_START_DATE'] ) ) . ' ' . date( 'H:i:s', strtotime( $aData['PREV_SCH_START_TIME'] ) );
|
|
|
|
|
$previousStartDate = date( 'Y-m-d', strtotime( $aData['PREV_SCH_START_DATE'] ) ) . ' ' . date( 'H:i:s', strtotime( $aData['PREV_SCH_START_TIME'] ) );
|
2014-01-14 16:30:34 -04:00
|
|
|
$sValue = '';
|
|
|
|
|
$sDaysPerformTask = '';
|
|
|
|
|
$sWeeks = '';
|
|
|
|
|
$sMonths = '';
|
|
|
|
|
$sMonths = '';
|
|
|
|
|
$sStartDay = '';
|
|
|
|
|
$nSW = 0;
|
|
|
|
|
switch ($sOption) {
|
|
|
|
|
case '1':
|
|
|
|
|
// Option 1
|
|
|
|
|
$sValue = $aData['SCH_DAYS_PERFORM_TASK'];
|
|
|
|
|
switch ($sValue) {
|
|
|
|
|
case '1':
|
|
|
|
|
$aData['SCH_DAYS_PERFORM_TASK'] = $aData['SCH_DAYS_PERFORM_TASK'] . '|1';
|
|
|
|
|
break;
|
|
|
|
|
case '2':
|
|
|
|
|
$aData['SCH_OPTION'] = '2';
|
|
|
|
|
$aData['SCH_EVERY_DAYS'] = '1';
|
|
|
|
|
$aData['SCH_WEEK_DAYS'] = '1|2|3|4|5|';
|
|
|
|
|
break;
|
|
|
|
|
case '3': // Every [n] Days
|
2014-01-16 09:35:11 -04:00
|
|
|
$sDaysPerformTask = $aData['SCH_DAYS_PERFORM_TASK'];
|
|
|
|
|
$aData['SCH_DAYS_PERFORM_TASK'] = $aData['SCH_DAYS_PERFORM_TASK'];
|
2014-01-14 16:30:34 -04:00
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case '2':
|
|
|
|
|
// If the option is zero, set by default 1
|
|
|
|
|
if (empty( $aData['SCH_EVERY_DAYS'] )) {
|
|
|
|
|
$nEveryDays = 1;
|
|
|
|
|
} else {
|
|
|
|
|
$nEveryDays = $aData['SCH_EVERY_DAYS'];
|
|
|
|
|
}
|
|
|
|
|
$aData['SCH_EVERY_DAYS'] = $nEveryDays;
|
|
|
|
|
$sWeeks = '';
|
|
|
|
|
if (! empty( $aData['SCH_WEEK_DAYS'] )) {
|
|
|
|
|
$aWeekDays = $aData['SCH_WEEK_DAYS'];
|
2014-01-16 09:35:11 -04:00
|
|
|
}
|
2014-01-14 16:30:34 -04:00
|
|
|
$sStartTime = $aData['SCH_START_TIME'];
|
2014-01-16 09:35:11 -04:00
|
|
|
$sWeeks = $aData['SCH_WEEK_DAYS'];
|
2014-01-14 16:30:34 -04:00
|
|
|
break;
|
|
|
|
|
case '3':
|
|
|
|
|
$nStartDay = $aData['SCH_START_DAY'];
|
2014-01-16 09:35:11 -04:00
|
|
|
/* if ($nStartDay == 1) {
|
|
|
|
|
$aData['SCH_START_DAY'] = $nStartDay;
|
2014-01-14 16:30:34 -04:00
|
|
|
} else {
|
|
|
|
|
$aData['SCH_START_DAY'] = $nStartDay . '|' . $aData['SCH_START_DAY_OPT_2_WEEKS'] . '|' . $aData['SCH_START_DAY_OPT_2_DAYS_WEEK'];
|
2014-01-16 09:35:11 -04:00
|
|
|
}*/
|
2014-01-14 16:30:34 -04:00
|
|
|
$sMonths = '';
|
|
|
|
|
if (! empty( $aData['SCH_MONTHS'] )) {
|
|
|
|
|
$aMonths = $aData['SCH_MONTHS'];
|
|
|
|
|
}
|
|
|
|
|
$aData['SCH_MONTHS'] = $sMonths;
|
|
|
|
|
$sStartDay = $aData['SCH_START_DAY'];
|
|
|
|
|
$sValue = $nStartDay;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
if (trim( $aData['SCH_END_DATE'] ) != '') {
|
|
|
|
|
$aData['SCH_END_DATE'] = $aData['SCH_END_DATE'];
|
|
|
|
|
}
|
|
|
|
|
// if the start date has changed then recalculate the next run time
|
|
|
|
|
if ($aData['SCH_START_DATE'] == $aData['PREV_SCH_START_DATE']) {
|
|
|
|
|
$recalculateDate = false;
|
|
|
|
|
} else {
|
|
|
|
|
$recalculateDate = true;
|
|
|
|
|
}
|
|
|
|
|
if (date( 'H:i:s', strtotime( $aData['SCH_START_TIME'] ) ) == date( 'H:i:s', strtotime( $aData['PREV_SCH_START_TIME'] ) )) {
|
|
|
|
|
$recalculateTime = false;
|
|
|
|
|
} else {
|
|
|
|
|
$recalculateTime = true;
|
|
|
|
|
}
|
|
|
|
|
// if the start date has changed then recalculate the next run time
|
|
|
|
|
$nActualTime = $aData['SCH_START_TIME'];
|
|
|
|
|
if (($sOption != '1') && ($sOption != '4') && ($sOption != '5')) {
|
|
|
|
|
if ($sStartDay == '') {
|
|
|
|
|
$sStartDay = date( 'Y-m-d' );
|
|
|
|
|
}
|
|
|
|
|
$dCurrentDay = date( "d" );
|
|
|
|
|
$dCurrentMonth = date( "m" );
|
|
|
|
|
$aStartDay = explode( "|", $aData['SCH_START_DAY'] );
|
|
|
|
|
if ($sOption == '3' && $aStartDay[0] == '1') {
|
|
|
|
|
$monthsArray = explode( "|", $sMonths );
|
|
|
|
|
foreach ($monthsArray as $row) {
|
|
|
|
|
if ($dCurrentMonth == $row && $dCurrentDay < $aStartDay[1]) {
|
|
|
|
|
$startTime = $_POST['form']['SCH_START_TIME'] . ":00";
|
|
|
|
|
if ($recalculateDate) {
|
|
|
|
|
$aData['SCH_TIME_NEXT_RUN'] = date( 'Y' ) . '-' . $row . '-' . $aStartDay[1] . ' ' . $startTime;
|
|
|
|
|
} elseif ($recalculateTime) {
|
|
|
|
|
$aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->getSchTimeNextRun( "Y-m-d" ) . " " . $_POST['form']['SCH_START_TIME'] . ":00";
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
} else {
|
|
|
|
|
if ($recalculateDate) {
|
|
|
|
|
$aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->updateNextRun( $sOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp );
|
|
|
|
|
} elseif ($recalculateTime) {
|
|
|
|
|
$aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->getSchTimeNextRun( "Y-m-d" ) . " " . $_POST['form']['SCH_START_TIME'] . ":00";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if ($recalculateDate) {
|
|
|
|
|
$aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->updateNextRun( $sOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp );
|
|
|
|
|
} elseif ($recalculateTime) {
|
|
|
|
|
$aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->getSchTimeNextRun( "Y-m-d" ) . " " . $_POST['form']['SCH_START_TIME'] . ":00";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if ($sOption == '4') {
|
|
|
|
|
$aData['SCH_END_DATE'] = $aData['SCH_START_TIME'];
|
|
|
|
|
}
|
|
|
|
|
if ($recalculateDate) {
|
|
|
|
|
$aData['SCH_TIME_NEXT_RUN'] = $aData['SCH_START_TIME'];
|
|
|
|
|
} elseif ($recalculateTime) {
|
|
|
|
|
$aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->getSchTimeNextRun( "Y-m-d" ) . " " . $aData['SCH_START_TIME'] . ":00";
|
|
|
|
|
}
|
|
|
|
|
if ($sOption == '5') {
|
|
|
|
|
$date = $oCaseScheduler->getSchLastRunTime();
|
|
|
|
|
if ($date == null) {
|
|
|
|
|
$date = $oCaseScheduler->getSchStartTime();
|
|
|
|
|
}
|
|
|
|
|
$date = strtotime( $date );
|
|
|
|
|
$nextRun = $aData['SCH_REPEAT_EVERY'] * 60 * 60;
|
|
|
|
|
$aData['SCH_REPEAT_EVERY'] = $aData['SCH_REPEAT_EVERY'];
|
|
|
|
|
$date += $nextRun;
|
|
|
|
|
$date = date( "Y-m-d H:i", $date );
|
|
|
|
|
$aData['SCH_TIME_NEXT_RUN'] = $date;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (! empty( $aData['SCH_REPEAT_TASK_CHK'] )) {
|
|
|
|
|
$nOptEvery = $aData['SCH_REPEAT_EVERY_OPT'];
|
|
|
|
|
if ($nOptEvery == 2) {
|
|
|
|
|
$aData['SCH_REPEAT_EVERY'] = $aData['SCH_REPEAT_EVERY'] * 60;
|
|
|
|
|
} else {
|
|
|
|
|
$aData['SCH_REPEAT_EVERY'] = $aData['SCH_REPEAT_EVERY'];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$aData["SCH_UID"] = $sSchUID;
|
|
|
|
|
$oCaseScheduler->Update($aData);
|
|
|
|
|
$oCriteria = $this->getCaseScheduler($sProcessUID, $sSchUID);
|
|
|
|
|
return $oCriteria;
|
|
|
|
|
} catch (\Exception $e) {
|
|
|
|
|
throw $e;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Delete a case scheduler of a project
|
|
|
|
|
*
|
|
|
|
|
* @param string $sProcessUID
|
|
|
|
|
* @param string $sSchUID
|
|
|
|
|
*
|
|
|
|
|
* @access public
|
|
|
|
|
*/
|
|
|
|
|
public function deleteCaseScheduler($sProcessUID, $sSchUID)
|
|
|
|
|
{
|
|
|
|
|
try {
|
|
|
|
|
require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes". PATH_SEP . "model" . PATH_SEP . "CaseScheduler.php");
|
|
|
|
|
$oCaseScheduler = new \CaseScheduler();
|
|
|
|
|
if ( !isset($sSchUID ) ) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
$oCaseScheduler->remove($sSchUID);
|
|
|
|
|
} catch (\Exception $e) {
|
|
|
|
|
throw $e;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|