2010-12-02 23:34:41 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
require_once 'classes/model/om/BaseCaseScheduler.php';
|
|
|
|
|
|
|
|
|
|
require_once 'classes/model/Process.php';
|
|
|
|
|
require_once 'classes/model/Task.php';
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Skeleton subclass for representing a row from the 'CASE_SCHEDULER' table.
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
* You should add additional methods to this class to meet the
|
|
|
|
|
* application requirements. This class will only be generated as
|
|
|
|
|
* long as it does not already exist in the output directory.
|
|
|
|
|
*
|
|
|
|
|
* @package classes.model
|
|
|
|
|
*/
|
|
|
|
|
class CaseScheduler extends BaseCaseScheduler {
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
private $SchTimeNextRun = null;
|
|
|
|
|
private $SchLastRunTime = null;
|
|
|
|
|
|
|
|
|
|
public function getSchTimeNextRun() {
|
|
|
|
|
if($this->SchTimeNextRun === null)
|
|
|
|
|
$this->SchTimeNextRun = time();
|
|
|
|
|
return $this->SchTimeNextRun;
|
|
|
|
|
}
|
|
|
|
|
public function setSchTimeNextRun($value) {
|
|
|
|
|
$this->SchTimeNextRun = $value;
|
|
|
|
|
}
|
|
|
|
|
public function getSchLastRunTime(){
|
|
|
|
|
if($this->SchTimeNextRun === null)
|
|
|
|
|
$this->SchTimeNextRun = time();
|
|
|
|
|
return $this->SchLastRunTime;
|
|
|
|
|
}
|
|
|
|
|
public function setSchLastRunTime($value){
|
|
|
|
|
$this->SchLastRunTime = $value;
|
|
|
|
|
}
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
public function load($SchUid) {
|
|
|
|
|
try {
|
|
|
|
|
$oRow = CaseSchedulerPeer::retrieveByPK ( $SchUid );
|
|
|
|
|
if (! is_null ( $oRow )) {
|
|
|
|
|
$aFields = $oRow->toArray ( BasePeer::TYPE_FIELDNAME );
|
|
|
|
|
$this->fromArray ( $aFields, BasePeer::TYPE_FIELDNAME );
|
|
|
|
|
$this->setNew ( false );
|
|
|
|
|
return $aFields;
|
|
|
|
|
} else {
|
|
|
|
|
throw (new Exception ( "The row '" . $SchUid . "' in table CASE_SCHEDULER doesn't exist!" ));
|
|
|
|
|
}
|
|
|
|
|
} catch ( Exception $oError ) {
|
|
|
|
|
throw ($oError);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function create($aData) {
|
|
|
|
|
$con = Propel::getConnection ( CaseSchedulerPeer::DATABASE_NAME );
|
|
|
|
|
try {
|
|
|
|
|
$this->fromArray ( $aData, BasePeer::TYPE_FIELDNAME );
|
|
|
|
|
if ($this->validate ()) {
|
|
|
|
|
$result = $this->save ();
|
|
|
|
|
} else {
|
|
|
|
|
$e = new Exception ( "Failed Validation in class " . get_class ( $this ) . "." );
|
|
|
|
|
$e->aValidationFailures = $this->getValidationFailures ();
|
|
|
|
|
throw ($e);
|
|
|
|
|
}
|
|
|
|
|
$con->commit ();
|
|
|
|
|
return $result;
|
|
|
|
|
} catch ( Exception $e ) {
|
|
|
|
|
$con->rollback ();
|
|
|
|
|
throw ($e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function update($fields) {
|
|
|
|
|
$con = Propel::getConnection ( CaseSchedulerPeer::DATABASE_NAME );
|
|
|
|
|
try {
|
|
|
|
|
$con->begin ();
|
|
|
|
|
$this->load ( $fields ['SCH_UID'] );
|
|
|
|
|
$this->fromArray ( $fields, BasePeer::TYPE_FIELDNAME );
|
|
|
|
|
if ($this->validate ()) {
|
|
|
|
|
$result = $this->save ();
|
|
|
|
|
$con->commit ();
|
|
|
|
|
return $result;
|
|
|
|
|
} else {
|
|
|
|
|
$con->rollback ();
|
|
|
|
|
throw (new Exception ( "Failed Validation in class " . get_class ( $this ) . "." ));
|
|
|
|
|
}
|
|
|
|
|
} catch ( Exception $e ) {
|
|
|
|
|
$con->rollback ();
|
|
|
|
|
throw ($e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function remove($SchUid) {
|
|
|
|
|
$con = Propel::getConnection ( CaseSchedulerPeer::DATABASE_NAME );
|
|
|
|
|
try {
|
|
|
|
|
$oCaseScheduler = CaseSchedulerPeer::retrieveByPK($SchUid);
|
|
|
|
|
if(!is_null($oCaseScheduler)) {
|
|
|
|
|
$iResult = $oCaseScheduler->delete();
|
|
|
|
|
$con->commit();
|
|
|
|
|
return $iResult;
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
throw(new Exception('This row doesn\'t exist!'));
|
|
|
|
|
}
|
|
|
|
|
/*
|
|
|
|
|
$con->begin();
|
|
|
|
|
$this->setSchUid ( $SchUid );
|
|
|
|
|
$result = $this->delete();
|
|
|
|
|
$con->commit();
|
|
|
|
|
return $result;
|
|
|
|
|
*/
|
|
|
|
|
} catch ( Exception $e ) {
|
|
|
|
|
$con->rollback();
|
|
|
|
|
throw($e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* change Status of any Process
|
|
|
|
|
* @param string $sSchedulerUid
|
|
|
|
|
* @return boolean
|
|
|
|
|
*/
|
|
|
|
|
function changeStatus($sSchedulerUid = '') {
|
|
|
|
|
$Fields = $this->Load ( $sSchedulerUid );
|
|
|
|
|
$Fields ['SCH_LAST_STATE'] = $Fields ['SCH_STATE'];
|
|
|
|
|
if ($Fields ['SCH_STATE'] == 'ACTIVE') {
|
|
|
|
|
$Fields ['SCH_STATE'] = 'INACTIVE';
|
|
|
|
|
} else {
|
|
|
|
|
$Fields ['SCH_STATE'] = 'ACTIVE';
|
|
|
|
|
}
|
|
|
|
|
$this->Update ( $Fields );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// SELECT A.SCH_UID, A.SCH_NAME, A.PRO_UID, B.CON_VALUE AS PROCESS,
|
|
|
|
|
// A.TAS_UID, B.CON_VALUE AS TASK, A.SCH_TIME_NEXT_RUN, A.SCH_LAST_RUN_TIME, A.SCH_STATE, A.SCH_LAST_STATE,
|
|
|
|
|
// A.USR_UID, A.SCH_OPTION
|
|
|
|
|
// SCH_START_TIME, SCH_START_DATE, SCH_DAYS_PERFORM_TASK, SCH_EVERY_DAYS, SCH_WEEK_DAYS
|
|
|
|
|
// SCH_START_DAY, SCH_MONTHS, SCH_END_DATE, SCH_REPEAT_EVERY, SCH_REPEAT_UNTIL, SCH_REPEAT_STOP_IF_RUNNING
|
|
|
|
|
// FROM CASE_SCHEDULER A LEFT JOIN CONTENT B ON A.PRO_UID= B.CON_ID AND B.CON_CATEGORY='PRO_TITLE' AND B.CON_LANG='en'
|
|
|
|
|
// LEFT JOIN CONTENT C ON A.TAS_UID= C.CON_ID AND C.CON_CATEGORY='TAS_TITLE' AND C.CON_LANG='en'
|
|
|
|
|
//
|
|
|
|
|
function getAllCriteria() {
|
|
|
|
|
$c = new Criteria ( 'workflow' );
|
|
|
|
|
$c->clearSelectColumns ();
|
|
|
|
|
|
|
|
|
|
$c->addSelectColumn ( CaseSchedulerPeer::SCH_UID );
|
|
|
|
|
$c->addSelectColumn ( CaseSchedulerPeer::SCH_NAME );
|
|
|
|
|
$c->addSelectColumn ( CaseSchedulerPeer::SCH_DEL_USER_NAME );
|
|
|
|
|
$c->addSelectColumn ( CaseSchedulerPeer::SCH_DEL_USER_PASS );
|
|
|
|
|
$c->addSelectColumn ( CaseSchedulerPeer::SCH_DEL_USER_UID );
|
|
|
|
|
$c->addSelectColumn ( CaseSchedulerPeer::PRO_UID );
|
|
|
|
|
$c->addSelectColumn ( CaseSchedulerPeer::TAS_UID );
|
|
|
|
|
$c->addSelectColumn ( CaseSchedulerPeer::SCH_TIME_NEXT_RUN );
|
|
|
|
|
$c->addSelectColumn ( CaseSchedulerPeer::SCH_LAST_RUN_TIME );
|
|
|
|
|
$c->addSelectColumn ( CaseSchedulerPeer::SCH_STATE );
|
|
|
|
|
$c->addSelectColumn ( CaseSchedulerPeer::SCH_LAST_STATE );
|
|
|
|
|
$c->addSelectColumn ( CaseSchedulerPeer::USR_UID );
|
|
|
|
|
$c->addSelectColumn ( CaseSchedulerPeer::SCH_OPTION );
|
|
|
|
|
$c->addSelectColumn ( CaseSchedulerPeer::SCH_START_TIME );
|
|
|
|
|
$c->addSelectColumn ( CaseSchedulerPeer::SCH_START_DATE );
|
|
|
|
|
$c->addSelectColumn ( CaseSchedulerPeer::SCH_DAYS_PERFORM_TASK );
|
|
|
|
|
$c->addSelectColumn ( CaseSchedulerPeer::SCH_EVERY_DAYS );
|
|
|
|
|
$c->addSelectColumn ( CaseSchedulerPeer::SCH_WEEK_DAYS );
|
|
|
|
|
$c->addSelectColumn ( CaseSchedulerPeer::SCH_START_DAY );
|
|
|
|
|
$c->addSelectColumn ( CaseSchedulerPeer::SCH_MONTHS );
|
|
|
|
|
$c->addSelectColumn ( CaseSchedulerPeer::SCH_END_DATE );
|
|
|
|
|
$c->addSelectColumn ( CaseSchedulerPeer::SCH_REPEAT_EVERY );
|
|
|
|
|
$c->addSelectColumn ( CaseSchedulerPeer::SCH_REPEAT_UNTIL );
|
|
|
|
|
$c->addSelectColumn ( CaseSchedulerPeer::SCH_REPEAT_STOP_IF_RUNNING );
|
|
|
|
|
$c->addSelectColumn ( CaseSchedulerPeer::CASE_SH_PLUGIN_UID );
|
|
|
|
|
|
|
|
|
|
return $c;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getAll() {
|
|
|
|
|
$oCriteria = $this->getAllCriteria ();
|
|
|
|
|
$oDataset = CaseSchedulerPeer::doSelectRS ( $oCriteria );
|
|
|
|
|
|
|
|
|
|
$oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
|
|
|
|
|
$oDataset->next ();
|
|
|
|
|
$aRows = Array ();
|
|
|
|
|
while ( $aRow = $oDataset->getRow () ) {
|
|
|
|
|
$aRows [] = $aRow;
|
|
|
|
|
$oDataset->next ();
|
|
|
|
|
}
|
|
|
|
|
foreach ( $aRows as $k => $aRow ) {
|
|
|
|
|
$oProcess = new Process ();
|
|
|
|
|
$aProcessRow = $oProcess->load ( $aRow ['PRO_UID'] );
|
|
|
|
|
|
|
|
|
|
$oTask = new Task ();
|
|
|
|
|
$aTaskRow = $oTask->load ( $aRow ['TAS_UID'] );
|
|
|
|
|
|
|
|
|
|
$aRows [$k] = array_merge ( $aRow, $aProcessRow, $aTaskRow );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $aRows;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* function getAllByProcess
|
|
|
|
|
* @author gustavo cruz
|
|
|
|
|
* @desc Get All Scheduled Tasks for some process.
|
|
|
|
|
* @param $pro_uid process uid
|
|
|
|
|
* @return $aRows a result set array
|
|
|
|
|
*/
|
|
|
|
|
function getAllByProcess($pro_uid) {
|
|
|
|
|
|
|
|
|
|
$oCriteria = $this->getAllCriteria ();
|
|
|
|
|
$oCriteria->add ( CaseSchedulerPeer::PRO_UID, $pro_uid );
|
|
|
|
|
$oDataset = CaseSchedulerPeer::doSelectRS ( $oCriteria );
|
|
|
|
|
|
|
|
|
|
$oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
|
|
|
|
|
$oDataset->next ();
|
|
|
|
|
$aRows = Array ();
|
|
|
|
|
while ( $aRow = $oDataset->getRow () ) {
|
|
|
|
|
$aRows [] = $aRow;
|
|
|
|
|
$oDataset->next ();
|
|
|
|
|
}
|
|
|
|
|
foreach ( $aRows as $k => $aRow ) {
|
|
|
|
|
$oProcess = new Process ();
|
|
|
|
|
$aProcessRow = $oProcess->load ( $aRow ['PRO_UID'] );
|
|
|
|
|
$oTask = new Task ();
|
|
|
|
|
$aTaskRow = $oTask->load ( $aRow ['TAS_UID'] );
|
|
|
|
|
$aRows [$k] = array_merge ( $aRow, $aProcessRow, $aTaskRow );
|
|
|
|
|
}
|
|
|
|
|
return $aRows;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getProcessDescription() {
|
|
|
|
|
$c = new Criteria ( 'workflow' );
|
|
|
|
|
$c->clearSelectColumns ();
|
|
|
|
|
$c->addSelectColumn ( ProcessPeer::PRO_UID );
|
|
|
|
|
|
|
|
|
|
$oDataset = ProcessPeer::doSelectRS ( $c );
|
|
|
|
|
$oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
|
|
|
|
|
$oDataset->next ();
|
|
|
|
|
$aRows = Array ();
|
|
|
|
|
while ( $aRow = $oDataset->getRow () ) {
|
|
|
|
|
$aRows [] = $aRow;
|
|
|
|
|
$oDataset->next ();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
foreach ( $aRows as $k => $aRow ) {
|
|
|
|
|
$oProcess = new Process ();
|
|
|
|
|
$aProcessRow = $oProcess->load ( $aRow ['PRO_UID'] );
|
|
|
|
|
|
|
|
|
|
$aRows [$k] = array_merge ( $aRow, array (
|
|
|
|
|
'PRO_TITLE' => $aProcessRow ['PRO_TITLE']
|
|
|
|
|
) );
|
|
|
|
|
}
|
|
|
|
|
return $aRows;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getTaskDescription() {
|
|
|
|
|
$c = new Criteria ( 'workflow' );
|
|
|
|
|
$c->clearSelectColumns ();
|
|
|
|
|
$c->addSelectColumn ( TaskPeer::TAS_UID );
|
|
|
|
|
|
|
|
|
|
$oDataset = TaskPeer::doSelectRS ( $c );
|
|
|
|
|
$oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
|
|
|
|
|
$oDataset->next ();
|
|
|
|
|
$aRows = Array ();
|
|
|
|
|
while ( $aRow = $oDataset->getRow () ) {
|
|
|
|
|
$aRows [] = $aRow;
|
|
|
|
|
$oDataset->next ();
|
|
|
|
|
}
|
|
|
|
|
foreach ( $aRows as $k => $aRow ) {
|
|
|
|
|
|
|
|
|
|
$oTask = new Task ();
|
|
|
|
|
$aTaskRow = $oTask->load ( $aRow ['TAS_UID'] );
|
|
|
|
|
|
|
|
|
|
$aRows [$k] = array_merge ( $aRow, array (
|
|
|
|
|
'TAS_TITLE' => $aTaskRow ['TAS_TITLE']
|
|
|
|
|
), array (
|
|
|
|
|
'PRO_UID' => $aTaskRow ['PRO_UID']
|
|
|
|
|
) );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// g::pr($aRows); die;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return $aRows;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function caseSchedulerCron($date) {
|
|
|
|
|
|
|
|
|
|
G::LoadClass ( 'dates' );
|
|
|
|
|
require_once ('classes/model/LogCasesScheduler.php');
|
|
|
|
|
|
|
|
|
|
$oDates = new dates ();
|
|
|
|
|
|
|
|
|
|
$nTime = strtotime ( $date );
|
|
|
|
|
|
|
|
|
|
$dCurrentDate = date ( 'Y-m-d', $nTime ) . ' 00:00:00';
|
|
|
|
|
$dNextDay = date ( 'Y-m-d', strtotime ( "$dCurrentDate" ) ) . ' 23:59:59';
|
|
|
|
|
|
|
|
|
|
$oCriteria = $this->getAllCriteria ();
|
|
|
|
|
$oCriteria->addAnd ( CaseSchedulerPeer::SCH_STATE, 'INACTIVE', Criteria::NOT_EQUAL );
|
|
|
|
|
$oCriteria->addAnd ( CaseSchedulerPeer::SCH_STATE, 'PROCESSED', Criteria::NOT_EQUAL );
|
|
|
|
|
$oCriteria->add ( CaseSchedulerPeer::SCH_TIME_NEXT_RUN, $dCurrentDate, Criteria::GREATER_EQUAL );
|
|
|
|
|
$oCriteria->addAnd ( CaseSchedulerPeer::SCH_TIME_NEXT_RUN, $dNextDay, Criteria::LESS_EQUAL );
|
|
|
|
|
$oCriteria->add ( CaseSchedulerPeer::SCH_END_DATE, null, Criteria::EQUAL );
|
|
|
|
|
$oCriteria->addOr ( CaseSchedulerPeer::SCH_END_DATE, $dCurrentDate, Criteria::GREATER_EQUAL );
|
|
|
|
|
$oDataset = CaseSchedulerPeer::doSelectRS ( $oCriteria );
|
|
|
|
|
$oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
|
|
|
|
|
$oDataset->next ();
|
|
|
|
|
|
|
|
|
|
$sValue = '';
|
|
|
|
|
$sActualTime = '';
|
|
|
|
|
$sDaysPerformTask = '';
|
|
|
|
|
$sWeeks = '';
|
|
|
|
|
$sStartDay = '';
|
|
|
|
|
$sMonths = '';
|
|
|
|
|
while ( $aRow = $oDataset->getRow () ) {
|
|
|
|
|
$sSchedulerUid = $aRow ['SCH_UID'];
|
|
|
|
|
$sOption = $aRow ['SCH_OPTION'];
|
|
|
|
|
switch ($sOption) {
|
|
|
|
|
case '1' :
|
|
|
|
|
$sDaysPerformTask = $aRow ['SCH_DAYS_PERFORM_TASK'];
|
|
|
|
|
$aDaysPerformTask = explode ( '|', $sDaysPerformTask );
|
|
|
|
|
$sValue = $aDaysPerformTask [0];
|
|
|
|
|
if ($sValue != 1)
|
|
|
|
|
$sDaysPerformTask = $aDaysPerformTask [1];
|
|
|
|
|
break;
|
|
|
|
|
case '2' :
|
|
|
|
|
$sDaysPerformTask = $aRow ['SCH_EVERY_DAYS'];
|
|
|
|
|
$sWeeks = $aRow ['SCH_WEEK_DAYS'];
|
|
|
|
|
break;
|
|
|
|
|
case '3' :
|
|
|
|
|
$sStartDay = $aRow ['SCH_START_DAY'];
|
|
|
|
|
$sMonths = $aRow ['SCH_MONTHS'];
|
|
|
|
|
$aStartDay = explode ( '|', $sStartDay );
|
|
|
|
|
$sValue = $aStartDay [0];
|
|
|
|
|
break;
|
|
|
|
|
case '4' :
|
|
|
|
|
$aRow ['SCH_STATE'] = 'PROCESSED';
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$sActualTime = $aRow ['SCH_TIME_NEXT_RUN'];
|
|
|
|
|
|
|
|
|
|
$sActualDataHour = date ( 'H', strtotime ( $aRow ['SCH_TIME_NEXT_RUN'] ) );
|
|
|
|
|
$sActualDataMinutes = date ( 'i', strtotime ( $aRow ['SCH_TIME_NEXT_RUN'] ) );
|
|
|
|
|
$dActualSysHour = date ( 'H', $nTime );
|
|
|
|
|
$dActualSysMinutes = date ( 'i', $nTime );
|
|
|
|
|
|
|
|
|
|
$sActualDataTime = strtotime ( $aRow ['SCH_TIME_NEXT_RUN'] );
|
|
|
|
|
$sActualSysTime = strtotime ( $nTime );
|
|
|
|
|
|
|
|
|
|
// note added consider the posibility to encapsulate some in functionality in a class method or some funtions
|
|
|
|
|
if ($sActualDataHour < $dActualSysHour) {
|
|
|
|
|
$_PORT = (SERVER_PORT != '80') ? ':' . SERVER_PORT : '';
|
|
|
|
|
|
|
|
|
|
$defaultEndpoint = 'http://' . SERVER_NAME . $_PORT . '/sys' . SYS_SYS . '/en/green/services/wsdl2';
|
|
|
|
|
println(" - Connecting webservice: $defaultEndpoint");
|
|
|
|
|
|
|
|
|
|
$user = $aRow ["SCH_DEL_USER_NAME"];
|
|
|
|
|
$pass = $aRow ["SCH_DEL_USER_PASS"];
|
|
|
|
|
$processId = $aRow ["PRO_UID"];
|
|
|
|
|
$taskId = $aRow ["TAS_UID"];
|
|
|
|
|
|
|
|
|
|
$client = new SoapClient ( $defaultEndpoint );
|
|
|
|
|
$params = array (
|
|
|
|
|
'userid' => $user,
|
|
|
|
|
'password' => 'md5:' . $pass
|
|
|
|
|
);
|
|
|
|
|
$result = $client->__SoapCall ( 'login', array (
|
|
|
|
|
$params
|
|
|
|
|
) );
|
|
|
|
|
|
|
|
|
|
eprint(" - Logging as user $user.............");
|
|
|
|
|
if ($result->status_code == 0) {
|
|
|
|
|
eprintln("OK+", 'green');
|
|
|
|
|
$sessionId = $result->message;
|
|
|
|
|
$newCaseLog = new LogCasesScheduler ();
|
|
|
|
|
$newRouteLog = new LogCasesScheduler ();
|
|
|
|
|
$variables = Array ();
|
|
|
|
|
$params = array (
|
|
|
|
|
'sessionId' => $sessionId,
|
|
|
|
|
'processId' => $processId,
|
|
|
|
|
'taskId' => $taskId,
|
|
|
|
|
'variables' => $variables
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$paramsLog = array (
|
|
|
|
|
'PRO_UID' => $processId,
|
|
|
|
|
'TAS_UID' => $taskId,
|
|
|
|
|
'SCH_UID' => $sSchedulerUid,
|
|
|
|
|
'USR_NAME' => $user,
|
|
|
|
|
'RESULT' => '',
|
|
|
|
|
'EXEC_DATE' => date ( 'Y-m-d' ),
|
|
|
|
|
'EXEC_HOUR' => date ( 'H:i:s' ),
|
|
|
|
|
'WS_CREATE_CASE_STATUS' => '',
|
|
|
|
|
'WS_ROUTE_CASE_STATUS' => ''
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$sw_transfer_control_plugin=false;//This SW will be true only if a plugin is allowed to continue the action
|
|
|
|
|
//If this Job was was registered to be performed by a plugin
|
|
|
|
|
if((isset($aRow['CASE_SH_PLUGIN_UID']))&&($aRow['CASE_SH_PLUGIN_UID']!="")){
|
|
|
|
|
//Check if the plugin is active
|
|
|
|
|
$pluginParts=explode("--",$aRow['CASE_SH_PLUGIN_UID']);
|
|
|
|
|
if(count($pluginParts)==2){
|
|
|
|
|
//***************** Plugins **************************
|
|
|
|
|
G::LoadClass('plugin');
|
|
|
|
|
//here we are loading all plugins registered
|
|
|
|
|
//the singleton has a list of enabled plugins
|
|
|
|
|
|
|
|
|
|
$sSerializedFile = PATH_DATA_SITE . 'plugin.singleton';
|
|
|
|
|
$oPluginRegistry =& PMPluginRegistry::getSingleton();
|
|
|
|
|
if ( file_exists ($sSerializedFile) )
|
|
|
|
|
$oPluginRegistry->unSerializeInstance( file_get_contents ( $sSerializedFile ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$oPluginRegistry =& PMPluginRegistry::getSingleton();
|
|
|
|
|
$activePluginsForCaseScheduler=$oPluginRegistry->getCaseSchedulerPlugins();
|
|
|
|
|
foreach($activePluginsForCaseScheduler as $key => $caseSchedulerPlugin){
|
|
|
|
|
if((isset($caseSchedulerPlugin->sNamespace))&&($caseSchedulerPlugin->sNamespace==$pluginParts[0])&&(isset($caseSchedulerPlugin->sActionId))&&($caseSchedulerPlugin->sActionId==$pluginParts[1])){
|
|
|
|
|
$sw_transfer_control_plugin=true;
|
|
|
|
|
$caseSchedulerSelected=$caseSchedulerPlugin;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//If there is a trigger that is registered to do this then transfer control
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if((isset($caseSchedulerSelected))&&(is_object($caseSchedulerSelected))){
|
|
|
|
|
eprintln(" - Transfering control to a Plugin: ".$caseSchedulerSelected->sNamespace."/".$caseSchedulerSelected->sActionId,'green');
|
|
|
|
|
|
|
|
|
|
$oData['OBJ_SOAP'] = $client;
|
|
|
|
|
$oData['SCH_UID'] = $aRow['SCH_UID'];
|
|
|
|
|
$oData['params'] = $params;
|
|
|
|
|
$oData['sessionId'] = $sessionId;
|
|
|
|
|
$oData['userId'] = $user;
|
|
|
|
|
$paramsLogResultFromPlugin=$oPluginRegistry->executeMethod( $caseSchedulerSelected->sNamespace, $caseSchedulerSelected->sActionExecute, $oData );
|
|
|
|
|
$paramsLog['WS_CREATE_CASE_STATUS']=$paramsLogResultFromPlugin['WS_CREATE_CASE_STATUS'];
|
|
|
|
|
$paramsLog['WS_ROUTE_CASE_STATUS']=$paramsLogResultFromPlugin['WS_ROUTE_CASE_STATUS'];
|
|
|
|
|
|
|
|
|
|
$paramsLogResult=$paramsLogResultFromPlugin['paramsLogResult'];
|
|
|
|
|
$paramsRouteLogResult=$paramsLogResultFromPlugin['paramsRouteLogResult'];
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
|
|
eprint(" - Creating the new case.............");
|
|
|
|
|
$result = $client->__SoapCall ( 'NewCase', array (
|
|
|
|
|
$params
|
|
|
|
|
) );
|
|
|
|
|
if ($result->status_code == 0) {
|
|
|
|
|
eprintln("OK+ CASE #{$result->caseNumber} was created!", 'green');
|
|
|
|
|
|
|
|
|
|
$caseId = $result->caseId;
|
|
|
|
|
$caseNumber = $result->caseNumber;
|
|
|
|
|
$paramsLog ['WS_CREATE_CASE_STATUS'] = "Case " . $caseNumber . " " . strip_tags ( $result->message );
|
|
|
|
|
$paramsLogResult = 'SUCCESS';
|
|
|
|
|
|
|
|
|
|
$params = array (
|
|
|
|
|
'sessionId' => $sessionId,
|
|
|
|
|
'caseId' => $caseId,
|
|
|
|
|
'delIndex' => "1"
|
|
|
|
|
);
|
|
|
|
|
eprint(" - Routing the case #$caseNumber..............");
|
|
|
|
|
$result = $client->__SoapCall ( 'RouteCase', array (
|
|
|
|
|
$params
|
|
|
|
|
) );
|
|
|
|
|
if ($result->status_code == 0) {
|
|
|
|
|
$paramsLog ['WS_ROUTE_CASE_STATUS'] = strip_tags ( $result->message );
|
|
|
|
|
$retMsg = explode("Debug", $paramsLog ['WS_ROUTE_CASE_STATUS']);
|
|
|
|
|
$retMsg = $retMsg[0];
|
|
|
|
|
eprintln("OK+ $retMsg", 'green');
|
|
|
|
|
$paramsRouteLogResult = 'SUCCESS';
|
|
|
|
|
} else {
|
|
|
|
|
$paramsLog ['WS_ROUTE_CASE_STATUS'] = strip_tags ( $result->message );
|
|
|
|
|
eprintln("FAILED-> {$paramsLog ['WS_ROUTE_CASE_STATUS']}", 'red');
|
|
|
|
|
$paramsRouteLogResult = 'FAILED';
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$paramsLog ['WS_CREATE_CASE_STATUS'] = strip_tags ( $result->message );
|
|
|
|
|
$paramsLogResult = 'FAILED';
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
eprintln($result->message, 'red');
|
|
|
|
|
// invalid user or bad password
|
|
|
|
|
}
|
|
|
|
|
if ($paramsLogResult == 'SUCCESS' && $paramsRouteLogResult == 'SUCCESS') {
|
|
|
|
|
$paramsLog ['RESULT'] = 'SUCCESS';
|
|
|
|
|
} else {
|
|
|
|
|
$paramsLog ['RESULT'] = 'FAILED';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$newCaseLog->saveLogParameters ( $paramsLog );
|
|
|
|
|
$newCaseLog->save ();
|
|
|
|
|
|
|
|
|
|
if ($sOption != '4') {
|
|
|
|
|
$nSchLastRunTime = $sActualTime;
|
|
|
|
|
|
|
|
|
|
$dEstimatedDate = $this->updateNextRun ( $sOption, $sValue, $sActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths );
|
|
|
|
|
|
|
|
|
|
if ($aRow ['SCH_END_DATE'] != '') {
|
|
|
|
|
if (date ( "Y-m-d", strtotime ( $dEstimatedDate ) ) > date ( "Y-m-d", strtotime ( $aRow ['SCH_END_DATE'] ) )) {
|
|
|
|
|
$Fields = $this->Load ( $sSchedulerUid );
|
|
|
|
|
$Fields ['SCH_LAST_STATE'] = $aRow ['SCH_STATE'];
|
|
|
|
|
$Fields ['SCH_STATE'] = 'PROCESSED';
|
|
|
|
|
$this->Update ( $Fields );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$nSchTimeNextRun = $dEstimatedDate;
|
|
|
|
|
$this->updateDate ( $sSchedulerUid, $nSchTimeNextRun, $nSchLastRunTime );
|
|
|
|
|
} else {
|
|
|
|
|
$Fields = $this->Load ( $sSchedulerUid );
|
|
|
|
|
$Fields ['SCH_LAST_STATE'] = $aRow ['SCH_STATE'];
|
|
|
|
|
$Fields ['SCH_LAST_RUN_TIME'] = $Fields ['SCH_TIME_NEXT_RUN'];
|
|
|
|
|
$Fields ['SCH_STATE'] = 'PROCESSED';
|
|
|
|
|
$this->Update ( $Fields );
|
|
|
|
|
}
|
|
|
|
|
} else if ($sActualDataHour == $dActualSysHour && $sActualDataMinutes <= $dActualSysMinutes) {
|
|
|
|
|
|
|
|
|
|
$_PORT = ($_SERVER ['SERVER_PORT'] != '80') ? ':' . $_SERVER ['SERVER_PORT'] : '';
|
|
|
|
|
|
|
|
|
|
//$defaultEndpoint = 'http://' . $_SERVER ['SERVER_NAME'] . ':' . $_PORT . '/sys' . SYS_SYS . '/en/green/services/wsdl2';
|
|
|
|
|
$defaultEndpoint = 'http://' . SERVER_NAME . $_PORT . '/sys' . SYS_SYS . '/en/green/services/wsdl2';
|
|
|
|
|
println(" - Connecting webservice: $defaultEndpoint");
|
|
|
|
|
$user = $aRow ["SCH_DEL_USER_NAME"];
|
|
|
|
|
$pass = $aRow ["SCH_DEL_USER_PASS"];
|
|
|
|
|
$processId = $aRow ["PRO_UID"];
|
|
|
|
|
$taskId = $aRow ["TAS_UID"];
|
|
|
|
|
|
|
|
|
|
$client = new SoapClient ( $defaultEndpoint );
|
|
|
|
|
$params = array (
|
|
|
|
|
'userid' => $user,
|
|
|
|
|
'password' => 'md5:' . $pass
|
|
|
|
|
);
|
|
|
|
|
$result = $client->__SoapCall ( 'login', array (
|
|
|
|
|
$params
|
|
|
|
|
) );
|
|
|
|
|
|
|
|
|
|
eprint(" - Logging as user $user.............");
|
|
|
|
|
if ($result->status_code == 0) {
|
|
|
|
|
eprintln("OK+", 'green');
|
|
|
|
|
|
|
|
|
|
$sessionId = $result->message;
|
|
|
|
|
$newCaseLog = new LogCasesScheduler ();
|
|
|
|
|
$newRouteLog = new LogCasesScheduler ();
|
|
|
|
|
$variables = Array ();
|
|
|
|
|
$params = array (
|
|
|
|
|
'sessionId' => $sessionId,
|
|
|
|
|
'processId' => $processId,
|
|
|
|
|
'taskId' => $taskId,
|
|
|
|
|
'variables' => $variables
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$paramsLog = array (
|
|
|
|
|
'PRO_UID' => $processId,
|
|
|
|
|
'TAS_UID' => $taskId,
|
|
|
|
|
'SCH_UID' => $sSchedulerUid,
|
|
|
|
|
'USR_NAME' => $user,
|
|
|
|
|
'RESULT' => '',
|
|
|
|
|
'EXEC_DATE' => date ( 'Y-m-d' ),
|
|
|
|
|
'EXEC_HOUR' => date ( 'H:i:s' ),
|
|
|
|
|
'WS_CREATE_CASE_STATUS' => '',
|
|
|
|
|
'WS_ROUTE_CASE_STATUS' => ''
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$result = $client->__SoapCall ( 'NewCase', array (
|
|
|
|
|
$params
|
|
|
|
|
) );
|
|
|
|
|
|
|
|
|
|
eprint(" - Creating the new case.............");
|
|
|
|
|
if ($result->status_code == 0) {
|
|
|
|
|
eprintln("OK+ CASE #{$result->caseNumber} was created!", 'green');
|
|
|
|
|
$caseId = $result->caseId;
|
|
|
|
|
$caseNumber = $result->caseNumber;
|
|
|
|
|
$paramsLog ['WS_CREATE_CASE_STATUS'] = "Case " . $caseNumber . " " . strip_tags ( $result->message );
|
|
|
|
|
$paramsLogResult = 'SUCCESS';
|
|
|
|
|
|
|
|
|
|
$params = array (
|
|
|
|
|
'sessionId' => $sessionId,
|
|
|
|
|
'caseId' => $caseId,
|
|
|
|
|
'delIndex' => "1"
|
|
|
|
|
);
|
|
|
|
|
$result = $client->__SoapCall ( 'RouteCase', array (
|
|
|
|
|
$params
|
|
|
|
|
) );
|
|
|
|
|
eprint(" - Routing the case #$caseNumber..............");
|
|
|
|
|
if ($result->status_code == 0) {
|
|
|
|
|
$paramsLog ['WS_ROUTE_CASE_STATUS'] = strip_tags ( $result->message );
|
|
|
|
|
$retMsg = explode("Debug", $paramsLog ['WS_ROUTE_CASE_STATUS']);
|
|
|
|
|
$retMsg = $retMsg[0];
|
|
|
|
|
eprintln("OK+ $retMsg", 'green');
|
|
|
|
|
$paramsRouteLogResult = 'SUCCESS';
|
|
|
|
|
} else {
|
|
|
|
|
eprintln("FAILED-> {$paramsLog ['WS_ROUTE_CASE_STATUS']}", 'red');
|
|
|
|
|
$paramsLog ['WS_ROUTE_CASE_STATUS'] = strip_tags ( $result->message );
|
|
|
|
|
$paramsRouteLogResult = 'FAILED';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
$paramsLog ['WS_CREATE_CASE_STATUS'] = strip_tags ( $result->message );
|
|
|
|
|
eprintln("FAILED->{$paramsLog ['WS_CREATE_CASE_STATUS']}", 'red');
|
|
|
|
|
$paramsLogResult = 'FAILED';
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// invalid user or bad password
|
|
|
|
|
eprintln($result->message, 'red');
|
|
|
|
|
}
|
|
|
|
|
if ($paramsLogResult == 'SUCCESS' && $paramsRouteLogResult == 'SUCCESS') {
|
|
|
|
|
$paramsLog ['RESULT'] = 'SUCCESS';
|
|
|
|
|
} else {
|
|
|
|
|
$paramsLog ['RESULT'] = 'FAILED';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$newCaseLog->saveLogParameters ( $paramsLog );
|
|
|
|
|
$newCaseLog->save ();
|
|
|
|
|
|
|
|
|
|
if ($sOption != '4') {
|
|
|
|
|
$nSchLastRunTime = $sActualTime;
|
|
|
|
|
|
|
|
|
|
$dEstimatedDate = $this->updateNextRun ( $sOption, $sValue, $sActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths );
|
|
|
|
|
|
|
|
|
|
if ($aRow ['SCH_END_DATE'] != '') {
|
|
|
|
|
if (date ( "Y-m-d", strtotime ( $dEstimatedDate ) ) > date ( "Y-m-d", strtotime ( $aRow ['SCH_END_DATE'] ) )) {
|
|
|
|
|
$Fields = $this->Load ( $sSchedulerUid );
|
|
|
|
|
$Fields ['SCH_LAST_STATE'] = $aRow ['SCH_STATE'];
|
|
|
|
|
$Fields ['SCH_STATE'] = 'PROCESSED';
|
|
|
|
|
$this->Update ( $Fields );
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$nSchTimeNextRun = $dEstimatedDate;
|
|
|
|
|
|
|
|
|
|
$this->updateDate ( $sSchedulerUid, $nSchTimeNextRun, $nSchLastRunTime );
|
|
|
|
|
} else {
|
|
|
|
|
$Fields = $this->Load ( $sSchedulerUid );
|
|
|
|
|
$Fields ['SCH_LAST_STATE'] = $aRow ['SCH_STATE'];
|
|
|
|
|
$Fields ['SCH_LAST_RUN_TIME'] = $Fields ['SCH_TIME_NEXT_RUN'];
|
|
|
|
|
$Fields ['SCH_STATE'] = 'PROCESSED';
|
|
|
|
|
$this->Update ( $Fields );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$oDataset->next ();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function updateDate($sSchedulerUid = '', $sSchTimeNextRun = '', $sSchLastRunTime = '') {
|
|
|
|
|
$Fields = $this->Load ( $sSchedulerUid );
|
|
|
|
|
$Fields ['SCH_TIME_NEXT_RUN'] = strtotime ( $sSchTimeNextRun );
|
|
|
|
|
$Fields ['SCH_LAST_RUN_TIME'] = strtotime ( $sSchLastRunTime );
|
|
|
|
|
$this->Update ( $Fields );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function updateNextRun($sOption, $sValue = '', $sActualTime = '', $sDaysPerformTask = '', $sWeeks = '', $sStartDay = '', $sMonths = '', $currentDate = '') {
|
|
|
|
|
$nActualDate = $currentDate . " " . $sActualTime; // date("Y-m-d H:i:s", $sActualTime);
|
|
|
|
|
// date("Y-m-d H:i:s", $sActualTime);
|
|
|
|
|
$dEstimatedDate = '';
|
|
|
|
|
switch ($sOption) {
|
|
|
|
|
case '1' :
|
|
|
|
|
switch ($sValue) {
|
|
|
|
|
case '1' :
|
|
|
|
|
$dEstimatedDate = date ( 'Y-m-d H:i:s', strtotime ( "$nActualDate +1 day" ) );
|
|
|
|
|
break;
|
|
|
|
|
case '2' :
|
|
|
|
|
$nDayOfTheWeek = date ( 'w', strtotime ( $sActualTime ) );
|
|
|
|
|
$nDayOfTheWeek = ($nDayOfTheWeek == 0) ? 7 : $nDayOfTheWeek;
|
|
|
|
|
if ($nDayOfTheWeek >= 5)
|
|
|
|
|
$dEstimatedDate = date ( 'Y-m-d H:i:s', strtotime ( "$nActualDate +3 day" ) );
|
|
|
|
|
else
|
|
|
|
|
$dEstimatedDate = date ( 'Y-m-d H:i:s', strtotime ( "$nActualDate +1 day" ) );
|
|
|
|
|
break;
|
|
|
|
|
case '3' :
|
|
|
|
|
$dEstimatedDate = date ( 'Y-m-d H:i:s', strtotime ( "$nActualDate + " . $sDaysPerformTask . " day" ) );
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case '2' :
|
|
|
|
|
if (strlen ( $sWeeks ) > 0) {
|
|
|
|
|
|
|
|
|
|
//die($sActualTime);
|
|
|
|
|
$nDayOfTheWeek = date ( 'w', strtotime ( $sActualTime ) );
|
|
|
|
|
// $nDayOfTheWeek = 1;
|
|
|
|
|
// echo "*".$nDayOfTheWeek."*";
|
|
|
|
|
$aWeeks = explode ( '|', $sWeeks );
|
|
|
|
|
$nFirstDay = $aWeeks [0];
|
|
|
|
|
|
|
|
|
|
$aDaysWeek = array (
|
|
|
|
|
'Monday',
|
|
|
|
|
'Tuesday',
|
|
|
|
|
'Wednesday',
|
|
|
|
|
'Thursday',
|
|
|
|
|
'Friday',
|
|
|
|
|
'Saturday',
|
|
|
|
|
'Sunday'
|
|
|
|
|
);
|
|
|
|
|
$nFirstDay = $nFirstDay - 1;
|
|
|
|
|
// echo "¨¨".$nFirstDay."¨¨";
|
|
|
|
|
$nDayOfTheWeek = ($nDayOfTheWeek == 0) ? 7 : $nDayOfTheWeek;
|
|
|
|
|
// echo $nDayOfTheWeek;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$nSW = 0;
|
|
|
|
|
$nNextDay = 0;
|
|
|
|
|
foreach ( $aWeeks as $value ) {
|
|
|
|
|
if ($value > $nDayOfTheWeek) {
|
|
|
|
|
$nNextDay = $value - 1;
|
|
|
|
|
$nSW = 1;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//die;
|
|
|
|
|
if ($nSW == 1) {
|
|
|
|
|
$dEstimatedDate = date ( 'Y-m-d', strtotime ( "$nActualDate next " . $aDaysWeek [$nNextDay] ) ) . ' ' . date ( 'H:i:s', strtotime ( $sActualTime ) );
|
|
|
|
|
//print_r($dEstimatedDate);
|
|
|
|
|
// die("03");
|
|
|
|
|
} else {
|
|
|
|
|
$nEveryDays = $sDaysPerformTask;
|
|
|
|
|
// $nEveryDays = '1';
|
|
|
|
|
if ($nFirstDay >= $nDayOfTheWeek || $nEveryDays == 1)
|
|
|
|
|
$sTypeOperation = "next";
|
|
|
|
|
else
|
|
|
|
|
$sTypeOperation = "last";
|
|
|
|
|
if ($nEveryDays == 1) {
|
|
|
|
|
// echo "**** $nActualDate *" . $sTypeOperation . "* *" . $aDaysWeek[$nFirstDay] . '*****' . date('H:i:s', strtotime($sActualTime)). "**";
|
|
|
|
|
$dEstimatedDate = date ( 'Y-m-d', strtotime ( "$nActualDate " . $sTypeOperation . " " . $aDaysWeek [$nFirstDay] ) ) . ' ' . date ( 'H:i:s', strtotime ( $sActualTime ) );
|
|
|
|
|
// echo "(date)*".$dEstimatedDate."*";
|
|
|
|
|
// die("01");
|
|
|
|
|
} else {
|
|
|
|
|
$nEveryDays = 1;
|
|
|
|
|
// $nActualDate = date('Y-m-d').' '.$sActualTime;
|
|
|
|
|
$nDataTmp = date ( 'Y-m-d', strtotime ( "$nActualDate + " . $nEveryDays . " Week" ) );
|
|
|
|
|
// echo "$nActualDate + " . $nEveryDays . " Week ";
|
|
|
|
|
// echo "++";
|
|
|
|
|
// echo strtotime( "+".$nEveryDays . " week"), "\n";
|
|
|
|
|
// echo strtotime("$nActualDate +" . $nEveryDays . " Week ");
|
|
|
|
|
// echo "++";
|
|
|
|
|
// echo $nDataTmp;
|
|
|
|
|
// echo "--";
|
|
|
|
|
// echo $sTypeOperation;
|
|
|
|
|
// echo $nFirstDay;
|
|
|
|
|
// print_r ($aDaysWeek);
|
|
|
|
|
// $sTypeOperation = "next";
|
|
|
|
|
$dEstimatedDate = date ( 'Y-m-d', strtotime ( "$nDataTmp " . $sTypeOperation . " " . $aDaysWeek [$nFirstDay] ) ) . ' ' . date ( 'H:i:s', strtotime ( $sActualTime ) );
|
|
|
|
|
|
|
|
|
|
// echo (strtotime ("$nDataTmp " . $sTypeOperation . " " . $aDaysWeek[$nFirstDay]));
|
|
|
|
|
// echo "$nDataTmp " . $sTypeOperation . " " . $aDaysWeek[$nFirstDay];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// echo $dEstimatedDate;
|
|
|
|
|
// echo "--";
|
|
|
|
|
// echo date('Y-m-d', strtotime ("$nDataTmp " . $sTypeOperation . " " . $aDaysWeek[$nFirstDay])) . ' ' . date('H:i:s', strtotime($sActualTime));
|
|
|
|
|
// die("02");
|
|
|
|
|
}
|
|
|
|
|
// die("03");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case '3' :
|
|
|
|
|
if (strlen ( $sMonths ) > 0) { // Must have at least one selected month
|
|
|
|
|
// Calculamos para la siguiente ejecucion, acorde a lo seleccionado
|
|
|
|
|
$aStartDay = explode ( '|', $sStartDay );
|
|
|
|
|
$nYear = date ( "Y", strtotime ( $sActualTime ) );
|
|
|
|
|
$nCurrentMonth = date ( "m", strtotime ( $sActualTime ) );
|
|
|
|
|
$nCurrentDay = date ( "d", strtotime ( $sActualTime ) );
|
|
|
|
|
$aMonths = explode ( '|', $sMonths );
|
|
|
|
|
|
|
|
|
|
$nSW = 0;
|
|
|
|
|
$nNextMonth = 0;
|
|
|
|
|
foreach ( $aMonths as $value ) {
|
|
|
|
|
if ($value > $nCurrentMonth) {
|
|
|
|
|
$nNextMonth = $value - 1;
|
|
|
|
|
$nSW = 1;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ($nSW == 1) { // Mes encontrado
|
|
|
|
|
$nExecNextMonth = $nNextMonth;
|
|
|
|
|
} else {
|
|
|
|
|
$nExecNextMonth = $aMonths [0] - 1;
|
|
|
|
|
$nYear ++;
|
|
|
|
|
}
|
|
|
|
|
switch ($sValue) {
|
|
|
|
|
case '1' :
|
|
|
|
|
$nExecNextMonth ++;
|
|
|
|
|
$nCurrentDay = $aStartDay [1];
|
|
|
|
|
$dEstimatedDate = date ( 'Y-m-d', strtotime ( "$nYear-$nExecNextMonth-$nCurrentDay" ) ) . ' ' . date ( 'H:i:s', strtotime ( $sActualTime ) );
|
|
|
|
|
break;
|
|
|
|
|
case '2' :
|
|
|
|
|
$aMontsShort = array (
|
|
|
|
|
'Jan',
|
|
|
|
|
'Feb',
|
|
|
|
|
'Mar',
|
|
|
|
|
'Apr',
|
|
|
|
|
'May',
|
|
|
|
|
'Jun',
|
|
|
|
|
'Jul',
|
|
|
|
|
'Aug',
|
|
|
|
|
'Sep',
|
|
|
|
|
'Oct',
|
|
|
|
|
'Nov',
|
|
|
|
|
'Dec'
|
|
|
|
|
);
|
|
|
|
|
$aWeeksShort = array (
|
|
|
|
|
'Monday',
|
|
|
|
|
'Tuesday',
|
|
|
|
|
'Wednesday',
|
|
|
|
|
'Thursday',
|
|
|
|
|
'Friday',
|
|
|
|
|
'Saturday',
|
|
|
|
|
'Sunday'
|
|
|
|
|
);
|
|
|
|
|
$sNumDayWeek = $aStartDay [1];
|
|
|
|
|
$sDayWeek = ($aStartDay [2] == 7 ? 0 : $aStartDay [2]);
|
|
|
|
|
switch ($sNumDayWeek) {
|
|
|
|
|
case '1' :
|
|
|
|
|
$sDaysWeekOpt = "+0";
|
|
|
|
|
break;
|
|
|
|
|
case '2' :
|
|
|
|
|
$sDaysWeekOpt = "+1";
|
|
|
|
|
break;
|
|
|
|
|
case '3' :
|
|
|
|
|
$sDaysWeekOpt = "+2";
|
|
|
|
|
break;
|
|
|
|
|
case '4' :
|
|
|
|
|
$sDaysWeekOpt = "+3";
|
|
|
|
|
break;
|
|
|
|
|
case '5' :
|
|
|
|
|
$sDaysWeekOpt = "-1";
|
|
|
|
|
$nExecNextMonth ++;
|
|
|
|
|
if ($nExecNextMonth >= 12) {
|
|
|
|
|
$nExecNextMonth = 0;
|
|
|
|
|
$nYear ++;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$dEstimatedDate = date ( 'Y-m-d', strtotime ( $sDaysWeekOpt . ' week ' . $aWeeksShort [$sDayWeek - 1] . ' ' . $aMontsShort [$nExecNextMonth] . ' ' . $nYear ) ) . ' ' . date ( 'H:i:s', strtotime ( $sActualTime ) );
|
|
|
|
|
// krumo($nExecNextMonth, $sDayWeek);
|
|
|
|
|
// krumo($sDaysWeekOpt . ' week ' . $aWeeksShort[$sDayWeek-1] . ' ' . $aMontsShort[$nExecNextMonth] . ' ' . $nYear);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $dEstimatedDate;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function Exists( $sUid ) {
|
|
|
|
|
try {
|
|
|
|
|
$oObj = CaseSchedulerPeer::retrieveByPk( $sUid );
|
2010-12-06 15:13:43 +00:00
|
|
|
return (is_object($oObj) && get_class($oObj) == 'CaseScheduler');
|
2010-12-02 23:34:41 +00:00
|
|
|
}
|
|
|
|
|
catch (Exception $oError) {
|
|
|
|
|
throw($oError);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} // CaseScheduler
|