public function caseSchedulerCron ($date, &$log = array(), $cron = 0) { try { require_once("classes" . PATH_SEP . "model" . PATH_SEP . "LogCasesScheduler.php"); //Set variables $port = ""; if (isset($_SERVER["SERVER_PORT"])) { $port = ($_SERVER["SERVER_PORT"] . "" != "80")? ":" . $_SERVER["SERVER_PORT"] : ""; } else { if (defined("SERVER_PORT")) { $port = (SERVER_PORT . "" != "80")? ":" . SERVER_PORT : ""; } } $wsdl = "http://" . SERVER_NAME . $port . "/sys" . SYS_SYS . "/" . SYS_LANG . "/classic/services/wsdl2"; $timeDate = strtotime($date); $dateHour = date("H", $timeDate); $dateMinutes = date("i", $timeDate); $dateCurrentIni = date("Y-m-d", $timeDate) . " 00:00:00"; $dateCurrentEnd = date("Y-m-d", $timeDate) . " 23:59:59"; //Query $criteria = $this->getAllCriteria(); $criteria->add( $criteria->getNewCriterion(CaseSchedulerPeer::SCH_STATE, "INACTIVE", Criteria::NOT_EQUAL)->addAnd( $criteria->getNewCriterion(CaseSchedulerPeer::SCH_STATE, "PROCESSED", Criteria::NOT_EQUAL)) ); $criteria->add( $criteria->getNewCriterion(CaseSchedulerPeer::SCH_TIME_NEXT_RUN, $dateCurrentIni, Criteria::GREATER_EQUAL)->addAnd( $criteria->getNewCriterion(CaseSchedulerPeer::SCH_TIME_NEXT_RUN, $dateCurrentEnd, Criteria::LESS_EQUAL))->addOr( //$criteria->getNewCriterion(CaseSchedulerPeer::SCH_OPTION, 5, Criteria::GREATER_EQUAL))->addOr( $criteria->getNewCriterion(CaseSchedulerPeer::SCH_TIME_NEXT_RUN, $dateCurrentIni, Criteria::LESS_THAN)) ); $criteria->add( $criteria->getNewCriterion(CaseSchedulerPeer::SCH_END_DATE, null, Criteria::EQUAL)->addOr( $criteria->getNewCriterion(CaseSchedulerPeer::SCH_END_DATE, $dateCurrentIni, Criteria::GREATER_EQUAL)) ); $rsCriteria = CaseSchedulerPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); while ($rsCriteria->next()) { $row = $rsCriteria->getRow(); if ($cron == 1) { $arrayCron = unserialize(trim(@file_get_contents(PATH_DATA . "cron"))); $arrayCron["processcTimeStart"] = time(); @file_put_contents(PATH_DATA . "cron", serialize($arrayCron)); } $caseSchedulerUid = $row["SCH_UID"]; $caseSchedulerOption = (int)($row["SCH_OPTION"]); $caseSchedulerTimeNextRun = $row["SCH_TIME_NEXT_RUN"]; //Create the new case $flagNewCase = false; $caseSchedulerTimeNextRunNew = ""; if (strtotime($caseSchedulerTimeNextRun) < strtotime($dateCurrentIni)) { //Generate new date for old SCH_TIME_NEXT_RUN $flagNewCase = true; //Create the old case $caseSchedulerTimeNextRunNew = $this->getTimeNextRunByDate($row, $date, false); } else { $caseSchedulerTimeNextRunHour = date("H", strtotime($row["SCH_TIME_NEXT_RUN"])); $caseSchedulerTimeNextRunMinutes = date("i", strtotime($row["SCH_TIME_NEXT_RUN"])); if ((int)($dateHour . $dateMinutes) <= (int)($caseSchedulerTimeNextRunHour . $caseSchedulerTimeNextRunMinutes)) { $flagNewCase = $caseSchedulerTimeNextRunHour == $dateHour && $caseSchedulerTimeNextRunMinutes == $dateMinutes; } else { $flagNewCase = true; //Create the old case } } if ($flagNewCase) { println(" CASE SCHEDULER: " . $row["SCH_NAME"]); println(" - Connecting webservice: $wsdl"); $user = $row["SCH_DEL_USER_NAME"]; $pass = $row["SCH_DEL_USER_PASS"]; $processId = $row["PRO_UID"]; $taskId = $row["TAS_UID"]; $client = new SoapClient($wsdl); $result = $client->__SoapCall("login", array( array("userid" => $user, "password" => Bootstrap::getPasswordHashType() . ":" . $pass) ) ); eprintln(" - Logging as user \"$user\"..."); $paramsLog = array( "PRO_UID" => $processId, "TAS_UID" => $taskId, "SCH_UID" => $caseSchedulerUid, "USR_NAME" => $user, "RESULT" => "", "EXEC_DATE" => date("Y-m-d"), "EXEC_HOUR" => date("H:i:s"), "WS_CREATE_CASE_STATUS" => "", "WS_ROUTE_CASE_STATUS" => "" ); $paramsLogResult = "FAILED"; $paramsRouteLogResult = "FAILED"; if ($result->status_code == 0) { eprintln(" OK", "green"); $sessionId = $result->message; $params = array("sessionId" => $sessionId, "processId" => $processId, "taskId" => $taskId, "variables" => array()); //If this Job was was registered to be performed by a plugin if (isset($row["CASE_SH_PLUGIN_UID"]) && $row["CASE_SH_PLUGIN_UID"] != "") { //Check if the plugin is active $pluginParts = explode("--", $row["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]) { $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 = array(); $oData["OBJ_SOAP"] = $client; $oData["SCH_UID"] = $row["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 { eprintln(" - Creating the new case..."); $paramsAux = $params; $paramsAux["executeTriggers"] = 1; $oPluginRegistry = &PMPluginRegistry::getSingleton(); if ($oPluginRegistry->existsTrigger(PM_SCHEDULER_CREATE_CASE_BEFORE)) { $oPluginRegistry->executeTriggers(PM_SCHEDULER_CREATE_CASE_BEFORE, $paramsAux); } $result = $client->__SoapCall("NewCase", array($paramsAux)); if ($oPluginRegistry->existsTrigger (PM_SCHEDULER_CREATE_CASE_AFTER)) { $oPluginRegistry->executeTriggers(PM_SCHEDULER_CREATE_CASE_AFTER, $result); } if ($result->status_code == 0) { eprintln(" OK case #" . $result->caseNumber . " was created!", "green"); $caseId = $result->caseId; $caseNumber = $result->caseNumber; $log[] = $caseNumber . " was created!, ProcessID: " . $row["PRO_UID"]; $paramsLog["WS_CREATE_CASE_STATUS"] = "Case " . $caseNumber . " " . strip_tags($result->message); $paramsLogResult = "SUCCESS"; $params = array("sessionId" => $sessionId, "caseId" => $caseId, "delIndex" => "1"); try { eprintln(" - 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]; $paramsRouteLogResult = "SUCCESS"; eprintln(" OK $retMsg", "green"); } else { $paramsLog["WS_ROUTE_CASE_STATUS"] = strip_tags($result->message); $paramsRouteLogResult = "FAILED"; eprintln(" Failed: " . $paramsLog["WS_ROUTE_CASE_STATUS"], "red"); } } catch (Exception $e) { //setExecutionResultMessage("WITH ERRORS", "error"); $paramsLog["WS_ROUTE_CASE_STATUS"] = strip_tags($e->getMessage()); $paramsRouteLogResult = "FAILED"; eprintln(" Failed: " . strip_tags($e->getMessage()), "red"); } } else { $paramsLog["WS_CREATE_CASE_STATUS"] = strip_tags($result->message); $paramsLogResult = "FAILED"; eprintln(" Failed: " . $paramsLog["WS_CREATE_CASE_STATUS"], "red"); } } } else { //Invalid user or bad password eprintln(" " . $result->message, "red"); } if ($paramsLogResult == "SUCCESS" && $paramsRouteLogResult == "SUCCESS") { $paramsLog["RESULT"] = "SUCCESS"; } else { $paramsLog["RESULT"] = "FAILED"; } $newCaseLog = new LogCasesScheduler(); $newCaseLog->saveLogParameters($paramsLog); $newCaseLog->save(); //Update the SCH_TIME_NEXT_RUN field switch ($caseSchedulerOption) { case 1: case 2: case 3: //Daily //Weekly //Monthly if ($caseSchedulerTimeNextRunNew == "") { list($value, $daysPerformTask, $weeks, $startDay, $months) = $this->getVariablesFromRecord($row); $caseSchedulerTimeNextRunNew = $this->updateNextRun($caseSchedulerOption, $value, $caseSchedulerTimeNextRun, $daysPerformTask, $weeks, $startDay, $months); } if ($row["SCH_END_DATE"] . "" != "" && strtotime($row["SCH_END_DATE"]) < strtotime($caseSchedulerTimeNextRunNew)) { $result = $this->update(array( "SCH_UID" => $caseSchedulerUid, "SCH_LAST_STATE" => $row["SCH_STATE"], "SCH_LAST_RUN_TIME" => $caseSchedulerTimeNextRun, "SCH_STATE" => "PROCESSED" )); } else { $this->updateDate($caseSchedulerUid, $caseSchedulerTimeNextRunNew, $caseSchedulerTimeNextRun); } break; case 4: //One time only $result = $this->update(array( "SCH_UID" => $caseSchedulerUid, "SCH_LAST_STATE" => $row["SCH_STATE"], "SCH_LAST_RUN_TIME" => $caseSchedulerTimeNextRun, "SCH_STATE" => "PROCESSED" )); break; case 5: //Every if ($caseSchedulerTimeNextRunNew == "") { $caseSchedulerTimeNextRunNew = date("Y-m-d H:i:s", $timeDate + round(floatval($row["SCH_REPEAT_EVERY"]) * 60 * 60)); } $this->updateDate($caseSchedulerUid, $caseSchedulerTimeNextRunNew, $caseSchedulerTimeNextRun); break; } } } } catch (Exception $e) { throw $e; } }
/** * println * * @param string $s * * @return eprintln($s) */ function println($s) { return eprintln($s); }
public function checkMafeRequirements ($workspace,$lang) { $this->initPropel(true); $pmRestClient = OauthClientsPeer::retrieveByPK('x-pm-local-client'); if (empty($pmRestClient)) { if (!is_file(PATH_DATA . 'sites/' . $workspace . '/' . '.server_info')) { $_CSERVER = $_SERVER; unset($_CSERVER['REQUEST_TIME']); unset($_CSERVER['REMOTE_PORT']); $cput = serialize($_CSERVER); file_put_contents(PATH_DATA . 'sites/' . $workspace . '/' . '.server_info', $cput); } if (is_file(PATH_DATA . 'sites/' . $workspace . '/' . '.server_info')) { $SERVER_INFO = file_get_contents(PATH_DATA . 'sites/' . $workspace . '/'.'.server_info'); $SERVER_INFO = unserialize($SERVER_INFO); $envFile = PATH_CONFIG . 'env.ini'; $skin ='neoclassic'; if (file_exists($envFile) ) { $sysConf = System::getSystemConfiguration($envFile); $lang = $sysConf['default_lang']; $skin = $sysConf['default_skin']; } $endpoint = sprintf( '%s/sys%s/%s/%s/oauth2/grant', isset($SERVER_INFO['HTTP_ORIGIN']) ? $SERVER_INFO['HTTP_ORIGIN'] : '', $workspace, $lang, $skin ); $oauthClients = new OauthClients(); $oauthClients->setClientId('x-pm-local-client'); $oauthClients->setClientSecret('179ad45c6ce2cb97cf1029e212046e81'); $oauthClients->setClientName('PM Web Designer'); $oauthClients->setClientDescription('ProcessMaker Web Designer App'); $oauthClients->setClientWebsite('www.processmaker.com'); $oauthClients->setRedirectUri($endpoint); $oauthClients->save(); } else { eprintln("WARNING! No server info found!", 'red'); } } }
function setExecutionResultMessage($m, $t = '') { $c = 'green'; if ($t == 'error') { $c = 'red'; } if ($t == 'info') { $c = 'yellow'; } eprintln("[{$m}]", $c); }
} } } else { if (!is_dir(PATH_DB . $workspace) || !file_exists(PATH_DB . $workspace . PATH_SEP . "db.php")) { throw new Exception("Error: The workspace \"$workspace\" does not exist"); } $countw++; passthru("php -f \"$messageEventCronSinglePath\" $workspace \"" . base64_encode(PATH_HOME) . "\" \"" . base64_encode(PATH_TRUNK) . "\" \"" . base64_encode(PATH_OUTTRUNK) . "\""); } eprintln("Finished $countw workspaces processed"); } catch (Exception $e) { throw $e; } //End CRON $arrayCron = array("flagIsRunning" => "0", "lastExecution" => date("Y-m-d H:i:s")); file_put_contents(PATH_DATA . "timereventcron", serialize($arrayCron)); } else { eprintln("The Timer-Event CRON is running, please wait for it to finish\nStarted in $lastExecution"); eprintln("If do you want force the execution use the option \"" . $arrayCommandOption["force"] . "\", example: php -f timereventcron.php +wworkflow " . $arrayCommandOption["force"] ,"green"); } echo "Done!\n"; } catch (Exception $e) { echo $e->getMessage() . "\n"; }
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(); } }
system("php -f \"" . dirname(__FILE__) . PATH_SEP . "cron_single.php\" $sObject \"$sDate\" \"$dateSystem\" $argsx", $retval); } } } } } else { if (!is_dir(PATH_DB . $ws) || !file_exists(PATH_DB . $ws . PATH_SEP . "db.php")) { throw new Exception("Error: The workspace \"$ws\" does not exist"); } $cws = 1; system("php -f \"" . dirname(__FILE__) . PATH_SEP . "cron_single.php\" $ws \"$sDate\" \"$dateSystem\" $argsx", $retval); } eprintln("Finished $cws workspaces processed."); } catch (Exception $e) { eprintln("Has produced the following error:", "red"); eprintln("* " . $e->getMessage()); eprintln("[DONE]", "green"); } //End cron $arrayCron = array("bCronIsRunning" => "0", "sLastExecution" => date("Y-m-d H:i:s")); @file_put_contents(PATH_DATA . "cron", serialize($arrayCron)); } else { eprintln("The cron is running, please wait for it to finish.\nStarted in $sLastExecution"); eprintln("If do you want force the execution use the option '+force', example: php -f +wworkflow +force" ,"green"); }
if ($entry != '' && $entry != '.' && $entry != '..') { if (is_dir(PATH_DB . $entry)) { if (file_exists(PATH_DB . $entry . PATH_SEP . 'db.php')) { $counterw++; passthru('php -f "' . $cronSinglePath . '" "' . base64_encode(PATH_HOME) . '" "' . base64_encode(PATH_TRUNK) . '" "' . base64_encode(PATH_OUTTRUNK) . '" ' . $cronName . ' ' . $entry . ' "' . $dateSystem . '" "' . $date . '" ' . $argvx); } } } } } else { if (!is_dir(PATH_DB . $workspace) || !file_exists(PATH_DB . $workspace . PATH_SEP . 'db.php')) { throw new Exception('Error: The workspace "' . $workspace . '" does not exist'); } $counterw++; passthru('php -f "' . $cronSinglePath . '" "' . base64_encode(PATH_HOME) . '" "' . base64_encode(PATH_TRUNK) . '" "' . base64_encode(PATH_OUTTRUNK) . '" ' . $cronName . ' ' . $workspace . ' "' . $dateSystem . '" "' . $date . '" ' . $argvx); } eprintln('Finished ' . $counterw . ' workspaces processed'); } catch (Exception $e) { throw $e; } //End CRON $arrayCron = ['flagIsRunning' => '0', 'lastExecution' => date('Y-m-d H:i:s')]; file_put_contents(PATH_DATA . $cronName, serialize($arrayCron)); } else { eprintln('The ' . $arrayCronConfig[$cronName]['title'] . ' is running, please wait for it to finish' . "\n" . 'Started in ' . $lastExecution); eprintln('If do you want force the execution use the option "' . $arrayCommandOption['force'] . '", example: php -f ' . $cronName . '.php +wworkflow ' . $arrayCommandOption['force'], 'green'); } echo 'Done!' . "\n"; } catch (Exception $e) { echo $e->getMessage() . "\n"; }
} //If $sDate is not set, so take the system time if ($sDate != null) { eprintln("[Applying date filter: {$sDate}]"); } else { $sDate = $dateSystem; } if ($ws == null) { $oDirectory = dir(PATH_DB); $cws = 0; while ($sObject = $oDirectory->read()) { if ($sObject != "." && $sObject != "..") { if (is_dir(PATH_DB . $sObject)) { if (file_exists(PATH_DB . $sObject . PATH_SEP . "db.php")) { $cws = $cws + 1; system("php -f \"" . dirname(__FILE__) . PATH_SEP . "cron_single.php\" {$sObject} \"{$sDate}\" \"{$dateSystem}\" {$argsx}", $retval); } } } } } else { $cws = 1; system("php -f \"" . dirname(__FILE__) . PATH_SEP . "cron_single.php\" {$ws} \"{$sDate}\" \"{$dateSystem}\" {$argsx}", $retval); } //End cron $arrayCron = array("bCronIsRunning" => "0", "sLastExecution" => date("Y-m-d H:i:s")); @file_put_contents(PATH_DATA . "cron", serialize($arrayCron)); eprintln("Finished {$cws} workspaces processed."); } else { eprintln("The cron is running, please wait for it to finish.\nStarted in {$sLastExecution}"); }
$pro["datasources"]["rp"]["adapter"] = $DB_ADAPTER; //$pro["datasources"]["dbarray"]["connection"] = "dbarray://*****:*****@localhost/pm_os"; //$pro["datasources"]["dbarray"]["adapter"] = "dbarray"; $oFile = fopen(PATH_CORE . "config" . PATH_SEP . "_databases_.php", "w"); fwrite($oFile, "<?php global \$pro; return \$pro; ?>"); fclose($oFile); Propel::init(PATH_CORE . "config" . PATH_SEP . "_databases_.php"); //Creole::registerDriver("dbarray", "creole.contrib.DBArrayConnection"); //Enable RBAC Bootstrap::LoadSystem("rbac"); $rbac =& RBAC::getSingleton(PATH_DATA, session_id()); $rbac->sSystem = "PROCESSMAKER"; if (!defined("DB_ADAPTER")) { define("DB_ADAPTER", $DB_ADAPTER); } eprintln("Processing workspace: " . $workflow, "green"); try { $timerEvent = new \ProcessMaker\BusinessModel\TimerEvent(); $timerEvent->startContinueCaseByTimerEvent(date("Y-m-d H:i:s"), true); } catch (Exception $e) { echo $e->getMessage() . "\n"; eprintln("Problem in workspace: " . $workflow . " it was omitted.", "red"); } eprintln(); } if (file_exists(PATH_CORE . "config" . PATH_SEP . "_databases_.php")) { unlink(PATH_CORE . "config" . PATH_SEP . "_databases_.php"); } } catch (Exception $e) { echo $e->getMessage() . "\n"; }
$WS = substr($argv[$i], 2); } else { $argsx .= ' ' . $argv[$i]; } } } //if $sDate is not set, so take the system time if ($sDate != '') { eprintln("[Applying date filter: {$sDate}]"); } else { $sDate = date('Y-m-d H:i:s'); } if ($WS == '') { $oDirectory = dir(PATH_DB); $cws = 0; while ($sObject = $oDirectory->read()) { if ($sObject != '.' && $sObject != '..') { if (is_dir(PATH_DB . $sObject)) { if (file_exists(PATH_DB . $sObject . PATH_SEP . 'db.php')) { $cws++; system("php -f \"" . dirname(__FILE__) . PATH_SEP . "cron_single.php\" {$sObject} \"{$sDate}\" {$argsx}", $retval); } } } } } else { $cws = 1; system("php -f \"" . dirname(__FILE__) . PATH_SEP . "cron_single.php\" {$WS} \"{$sDate}\" {$argsx}", $retval); } eprintln("Finished {$cws} workspaces processed.");