コード例 #1
0
ファイル: cron_single.php プロジェクト: ralpheav/processmaker
function executeCaseSelfService()
{
    try {
        global $sFilter;
        if ($sFilter != "" && strpos($sFilter, "unassigned-case") === false) {
            return false;
        }
        $criteria = new Criteria("workflow");
        //SELECT
        $criteria->addSelectColumn(AppCacheViewPeer::APP_UID);
        $criteria->addSelectColumn(AppCacheViewPeer::DEL_INDEX);
        $criteria->addSelectColumn(AppCacheViewPeer::DEL_DELEGATE_DATE);
        $criteria->addSelectColumn(AppCacheViewPeer::APP_NUMBER);
        $criteria->addSelectColumn(AppCacheViewPeer::PRO_UID);
        $criteria->addSelectColumn(TaskPeer::TAS_UID);
        $criteria->addSelectColumn(TaskPeer::TAS_SELFSERVICE_TIME);
        $criteria->addSelectColumn(TaskPeer::TAS_SELFSERVICE_TIME_UNIT);
        $criteria->addSelectColumn(TaskPeer::TAS_SELFSERVICE_TRIGGER_UID);
        //FROM
        $condition = array();
        $condition[] = array(AppCacheViewPeer::TAS_UID, TaskPeer::TAS_UID);
        $condition[] = array(TaskPeer::TAS_SELFSERVICE_TIMEOUT, 1);
        $criteria->addJoinMC($condition, Criteria::LEFT_JOIN);
        //WHERE
        $criteria->add(AppCacheViewPeer::USR_UID, "");
        $criteria->add(AppCacheViewPeer::DEL_THREAD_STATUS, "OPEN");
        //QUERY
        $rsCriteria = AppCacheViewPeer::doSelectRS($criteria);
        $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
        setExecutionMessage("Unassigned case");
        saveLog("unassignedCase", "action", "Unassigned case", "c");
        $date = new dates();
        while ($rsCriteria->next()) {
            $row = $rsCriteria->getRow();
            $appcacheAppUid = $row["APP_UID"];
            $appcacheDelIndex = $row["DEL_INDEX"];
            $appcacheDelDelegateDate = $row["DEL_DELEGATE_DATE"];
            $appcacheAppNumber = $row["APP_NUMBER"];
            $appcacheProUid = $row["PRO_UID"];
            $taskUid = $row["TAS_UID"];
            $taskSelfServiceTime = intval($row["TAS_SELFSERVICE_TIME"]);
            $taskSelfServiceTimeUnit = $row["TAS_SELFSERVICE_TIME_UNIT"];
            $taskSelfServiceTriggerUid = $row["TAS_SELFSERVICE_TRIGGER_UID"];
            $dueDate = $date->calculateDate($appcacheDelDelegateDate, $taskSelfServiceTime, $taskSelfServiceTimeUnit, 1);
            if (time() > $dueDate["DUE_DATE_SECONDS"]) {
                $sessProcess = null;
                $sessProcessSw = 0;
                //Load data
                $case = new Cases();
                $appFields = $case->loadCase($appcacheAppUid);
                $appFields["APP_DATA"]["APPLICATION"] = $appcacheAppUid;
                if (isset($_SESSION["PROCESS"])) {
                    $sessProcess = $_SESSION["PROCESS"];
                    $sessProcessSw = 1;
                }
                $_SESSION["PROCESS"] = $appFields["PRO_UID"];
                //Execute trigger
                $criteriaTgr = new Criteria();
                $criteriaTgr->add(TriggersPeer::TRI_UID, $taskSelfServiceTriggerUid);
                $rsCriteriaTgr = TriggersPeer::doSelectRS($criteriaTgr);
                $rsCriteriaTgr->setFetchmode(ResultSet::FETCHMODE_ASSOC);
                if ($rsCriteriaTgr->next()) {
                    $row = $rsCriteriaTgr->getRow();
                    if (is_array($row) && $row["TRI_TYPE"] == "SCRIPT") {
                        $arrayCron = unserialize(trim(@file_get_contents(PATH_DATA . "cron")));
                        $arrayCron["processcTimeProcess"] = 60;
                        //Minutes
                        $arrayCron["processcTimeStart"] = time();
                        @file_put_contents(PATH_DATA . "cron", serialize($arrayCron));
                        //Trigger
                        global $oPMScript;
                        $oPMScript = new PMScript();
                        $oPMScript->setFields($appFields["APP_DATA"]);
                        $oPMScript->setScript($row["TRI_WEBBOT"]);
                        $oPMScript->execute();
                        $appFields["APP_DATA"] = array_merge($appFields["APP_DATA"], $oPMScript->aFields);
                        $case->updateCase($appFields["APP_UID"], $appFields);
                        saveLog("unassignedCase", "action", "OK Executed tigger to the case {$appcacheAppNumber}");
                    }
                }
                unset($_SESSION["PROCESS"]);
                if ($sessProcessSw == 1) {
                    $_SESSION["PROCESS"] = $sessProcess;
                }
            }
        }
        setExecutionResultMessage("DONE");
    } catch (Exception $e) {
        setExecutionResultMessage("WITH ERRORS", "error");
        eprintln("  '-" . $e->getMessage(), "red");
        saveLog("unassignedCase", "error", "Error in unassigned case: " . $e->getMessage());
    }
}
コード例 #2
0
ファイル: CaseScheduler.php プロジェクト: bqevin/processmaker
 public function caseSchedulerCron($date, &$log = array(), $cron = 0)
 {
     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($oCriteria->getNewCriterion(CaseSchedulerPeer::SCH_TIME_NEXT_RUN, $dCurrentDate, Criteria::GREATER_EQUAL)->addAnd($oCriteria->getNewCriterion(CaseSchedulerPeer::SCH_TIME_NEXT_RUN, $dNextDay, Criteria::LESS_EQUAL))->addOr($oCriteria->getNewCriterion(CaseSchedulerPeer::SCH_OPTION, '5', Criteria::GREATER_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()) {
         if ($cron == 1) {
             $arrayCron = unserialize(trim(@file_get_contents(PATH_DATA . "cron")));
             $arrayCron["processcTimeStart"] = time();
             @file_put_contents(PATH_DATA . "cron", serialize($arrayCron));
         }
         $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;
             case '5':
                 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);
         $dActualSysHour = $dActualSysHour == '00' ? '24' : $dActualSysHour;
         $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 . '/' . SYS_LANG . '/classic/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.............");
                     $paramsAux = $params;
                     $paramsAux["executeTriggers"] = 1;
                     $result = $client->__SoapCall("NewCase", array($paramsAux));
                     if ($result->status_code == 0) {
                         eprintln("OK+ CASE #{$result->caseNumber} was created!", 'green');
                         $caseId = $result->caseId;
                         $caseNumber = $result->caseNumber;
                         $log[] = $caseNumber . ' was created!, ProcessID: ' . $aRow['PRO_UID'];
                         $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}..............");
                         try {
                             $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';
                             }
                         } catch (Exception $oError) {
                             setExecutionResultMessage('    WITH ERRORS', 'error');
                             $paramsLog['WS_ROUTE_CASE_STATUS'] = strip_tags($oError->getMessage());
                             eprintln("  '-" . strip_tags($oError->getMessage()), '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' && $sOption != '5') {
                 $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);
             } elseif ($sOption != '5') {
                 $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 {
                 $nSchLastRunTime = $sActualTime;
                 $Fields = $this->Load($sSchedulerUid);
                 $Fields['SCH_LAST_RUN_TIME'] = $Fields['SCH_TIME_NEXT_RUN'];
                 //$nSchTimeNextRun = strtotime( $Fields['SCH_TIME_NEXT_RUN'] );
                 $nSchTimeNextRun = $nTime;
                 $nextRun = $Fields['SCH_REPEAT_EVERY'] * 60 * 60;
                 $nSchTimeNextRun += $nextRun;
                 $nSchTimeNextRun = date("Y-m-d H:i", $nSchTimeNextRun);
                 $this->updateDate($sSchedulerUid, $nSchTimeNextRun, $nSchLastRunTime);
             }
         } elseif ($sActualDataHour == $dActualSysHour && $sActualDataMinutes <= $dActualSysMinutes) {
             $_PORT = '';
             if (isset($_SERVER['SERVER_PORT'])) {
                 $_PORT = $_SERVER['SERVER_PORT'] != '80' ? ':' . $_SERVER['SERVER_PORT'] : '';
             } elseif (defined('SERVER_PORT')) {
                 $_PORT = SERVER_PORT != '80' ? ':' . SERVER_PORT : '';
             }
             //$defaultEndpoint = 'http://' . $_SERVER ['SERVER_NAME'] . ':' . $_PORT . '/sys' . SYS_SYS .'/'.SYS_LANG.'/classic/green/services/wsdl2';
             $defaultEndpoint = 'http://' . SERVER_NAME . $_PORT . '/sys' . SYS_SYS . '/' . SYS_LANG . '/classic/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' => '');
                 $paramsAux = $params;
                 $paramsAux["executeTriggers"] = 1;
                 $result = $client->__SoapCall("NewCase", array($paramsAux));
                 eprint(" - Creating the new case.............");
                 if ($result->status_code == 0) {
                     eprintln("OK+ CASE #{$result->caseNumber} was created!", 'green');
                     $caseId = $result->caseId;
                     $caseNumber = $result->caseNumber;
                     $log[] = $caseNumber . ' was created!, ProcessID: ' . $aRow['PRO_UID'];
                     $paramsLog['WS_CREATE_CASE_STATUS'] = "Case " . $caseNumber . " " . strip_tags($result->message);
                     $paramsLogResult = 'SUCCESS';
                     $params = array('sessionId' => $sessionId, 'caseId' => $caseId, 'delIndex' => "1");
                     try {
                         $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';
                         }
                     } catch (Exception $oError) {
                         setExecutionResultMessage('    WITH ERRORS', 'error');
                         $paramsLog['WS_ROUTE_CASE_STATUS'] = strip_tags($oError->getMessage());
                         eprintln("  '-" . strip_tags($oError->getMessage()), 'red');
                         $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' && $sOption != '5') {
                 $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);
             } elseif ($sOption != '5') {
                 $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 {
                 $nSchLastRunTime = $sActualTime;
                 $Fields = $this->Load($sSchedulerUid);
                 $Fields['SCH_LAST_RUN_TIME'] = $Fields['SCH_TIME_NEXT_RUN'];
                 //$nSchTimeNextRun = strtotime( $Fields['SCH_TIME_NEXT_RUN'] );
                 $nSchTimeNextRun = $nTime;
                 $nextRun = $Fields['SCH_REPEAT_EVERY'] * 60 * 60;
                 $nSchTimeNextRun += $nextRun;
                 $nSchTimeNextRun = date("Y-m-d H:i", $nSchTimeNextRun);
                 $this->updateDate($sSchedulerUid, $nSchTimeNextRun, $nSchLastRunTime);
             }
         }
         $oDataset->next();
     }
 }
コード例 #3
0
ファイル: cron_single.php プロジェクト: nshong/processmaker
function executeUpdateAppTitle()
{
    try {
        $criteriaConf = new Criteria("workflow");
        $criteriaConf->addSelectColumn(ConfigurationPeer::OBJ_UID);
        $criteriaConf->addSelectColumn(ConfigurationPeer::CFG_VALUE);
        $criteriaConf->add(ConfigurationPeer::CFG_UID, "TAS_APP_TITLE_UPDATE");
        $rsCriteriaConf = ConfigurationPeer::doSelectRS($criteriaConf);
        $rsCriteriaConf->setFetchmode(ResultSet::FETCHMODE_ASSOC);
        setExecutionMessage("Update case labels");
        saveLog("updateCaseLabels", "action", "Update case labels", "c");
        while ($rsCriteriaConf->next()) {
            $row = $rsCriteriaConf->getRow();
            $taskUid = $row["OBJ_UID"];
            $lang = $row["CFG_VALUE"];
            //Update case labels
            $appcv = new AppCacheView();
            $appcv->appTitleByTaskCaseLabelUpdate($taskUid, $lang);
            //Delete record
            $criteria = new Criteria("workflow");
            $criteria->add(ConfigurationPeer::CFG_UID, "TAS_APP_TITLE_UPDATE");
            $criteria->add(ConfigurationPeer::OBJ_UID, $taskUid);
            $criteria->add(ConfigurationPeer::CFG_VALUE, $lang);
            $numRowDeleted = ConfigurationPeer::doDelete($criteria);
            saveLog("updateCaseLabels", "action", "OK Task {$taskUid}");
        }
        setExecutionResultMessage("DONE");
    } catch (Exception $e) {
        setExecutionResultMessage("WITH ERRORS", "error");
        eprintln("  '-" . $e->getMessage(), "red");
        saveLog("updateCaseLabels", "error", "Error updating case labels: " . $e->getMessage());
    }
}