diff --git a/gulliver/js/tinymce/jscripts/tiny_mce/plugins/pmSimpleUploader/uploader.php b/gulliver/js/tinymce/jscripts/tiny_mce/plugins/pmSimpleUploader/uploader.php
index 4ea183dc0..c5673c616 100644
--- a/gulliver/js/tinymce/jscripts/tiny_mce/plugins/pmSimpleUploader/uploader.php
+++ b/gulliver/js/tinymce/jscripts/tiny_mce/plugins/pmSimpleUploader/uploader.php
@@ -70,7 +70,7 @@ function displayUploadForm()
File:
(*.html, *.htm)
-
+
diff --git a/gulliver/js/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js b/gulliver/js/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js
index a811423b5..4bfb8f6b2 100644
--- a/gulliver/js/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js
+++ b/gulliver/js/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js
@@ -73,6 +73,6 @@ function resizeInputs() {
if (el) {
el.style.width = (vp.w - 20) + 'px';
- el.style.height = (vp.h - 122) + 'px';
+ el.style.height = (vp.h - 70) + 'px';
}
}
diff --git a/gulliver/js/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialogTinyBpmn.css b/gulliver/js/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialogTinyBpmn.css
new file mode 100644
index 000000000..d8f579c06
--- /dev/null
+++ b/gulliver/js/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialogTinyBpmn.css
@@ -0,0 +1,175 @@
+/* Generic */
+body {
+font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;
+scrollbar-3dlight-color:#F0F0EE;
+scrollbar-arrow-color:#676662;
+scrollbar-base-color:#F0F0EE;
+scrollbar-darkshadow-color:#DDDDDD;
+scrollbar-face-color:#E0E0DD;
+scrollbar-highlight-color:#F0F0EE;
+scrollbar-shadow-color:#F0F0EE;
+scrollbar-track-color:#F5F5F5;
+background-color: white;
+padding:0;
+margin:8px 8px 0 8px;
+}
+
+html {background:white;}
+td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
+textarea {resize:none;outline:none;}
+a:link, a:visited {color:black;}
+a:hover {color:#2B6FB6;}
+.nowrap {white-space: nowrap}
+
+/* Forms */
+fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;}
+legend {color:#2B6FB6; font-weight:bold;}
+label.msg {display:none;}
+label.invalid {color:#EE0000; display:inline;}
+input.invalid {border:1px solid #EE0000;}
+input {background:#FFF; border:1px solid #CCC;}
+input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
+input, select, textarea {border:1px solid #808080;}
+input.radio {border:1px none #000000; background:transparent; vertical-align:middle;}
+input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;}
+.input_noborder {border:0;}
+
+/* Buttons */
+#insert, #cancel, input.button, .updateButton {
+border:0; margin:0; padding:0;
+font-weight:bold;
+width:94px; height:26px;
+background:url(img/buttons.png) 0 -26px;
+cursor:pointer;
+padding-bottom:2px;
+/*float:left;*/
+}
+
+#cancel {
+ background:none !important;
+ color: #fff !important;
+ background-color: #e4655f !important;
+ border: 1px solid #e14333 !important;
+ font-size: 14px !important;
+ display: inline-block !important;
+ text-decoration: none !important;
+ -webkit-border-radius: 2px !important;
+ -moz-border-radius: 2px !important;
+ -ms-border-radius: 2px !important;
+ -o-border-radius: 2px !important;
+ border-radius: 2px !important;
+ text-align: center !important;
+ height:28px;
+ margin-top: 6px !important;
+ font-weight: normal !important;
+ -webkit-transition: all .5s !important;
+ -moz-transition: all .5s !important;
+ -ms-transition: all .5s !important;
+ -o-transition: all .5s !important;
+ transition: all .5s !important;
+ -webkit-box-sizing: border-box !important;
+ -moz-box-sizing: border-box !important;
+ box-sizing: border-box !important;
+}
+
+#insert {
+ background:none !important;
+ color: #fff !important;
+ background-color: #1fbc99 !important;
+ border: 1px solid #1ba385 !important;
+ font-size: 14px !important;
+ display: inline-block !important;
+ text-decoration: none !important;
+ -webkit-border-radius: 2px !important;
+ -moz-border-radius: 2px !important;
+ -ms-border-radius: 2px !important;
+ -o-border-radius: 2px !important;
+ border-radius: 2px !important;
+ text-align: center !important;
+ height:28px !important;
+ float: right !important;
+ margin-left: 8px !important;
+ margin-top: 6px !important;
+ font-weight: normal !important;
+ -webkit-transition: all .5s !important;
+ -moz-transition: all .5s !important;
+ -ms-transition: all .5s !important;
+ -o-transition: all .5s !important;
+ transition: all .5s !important;
+ -webkit-box-sizing: border-box !important;
+ -moz-box-sizing: border-box !important;
+ box-sizing: border-box !important;
+}
+
+#insert {background:url(img/buttons.png) 0 -52px}
+#cancel {background:url(img/buttons.png) 0 0; float:right}
+
+/* Browse */
+a.pickcolor, a.browse {text-decoration:none}
+a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;}
+.mceOldBoxModel a.browse span {width:22px; height:20px;}
+a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;}
+a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
+a.browse:hover span.disabled {border:1px solid white; background-color:transparent;}
+a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;}
+.mceOldBoxModel a.pickcolor span {width:21px; height:17px;}
+a.pickcolor:hover span {background-color:#B2BBD0;}
+a.pickcolor:hover span.disabled {}
+
+/* Charmap */
+table.charmap {border:1px solid #AAA; text-align:center}
+td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;}
+#charmap a {display:block; color:#000; text-decoration:none; border:0}
+#charmap a:hover {background:#CCC;color:#2B6FB6}
+#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center}
+#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center}
+
+/* Source */
+.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;}
+.mceActionPanel {margin-top:5px;}
+
+/* Tabs classes */
+.tabs {width:100%; height:18px; line-height:normal; background:url(img/tabs.gif) repeat-x 0 -72px;}
+.tabs ul {margin:0; padding:0; list-style:none;}
+.tabs li {float:left; background:url(img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;}
+.tabs li.current {background:url(img/tabs.gif) no-repeat 0 -18px; margin-right:2px;}
+.tabs span {float:left; display:block; background:url(img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;}
+.tabs .current span {background:url(img/tabs.gif) no-repeat right -54px;}
+.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;}
+.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;}
+
+/* Panels */
+.panel_wrapper div.panel {display:none;}
+.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;}
+.panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;}
+
+/* Columns */
+.column {float:left;}
+.properties {width:100%;}
+.properties .column1 {}
+.properties .column2 {text-align:left;}
+
+/* Titles */
+h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;}
+h3 {font-size:14px;}
+.title {font-size:12px; font-weight:bold; color:#2B6FB6;}
+
+/* Dialog specific */
+#link .panel_wrapper, #link div.current {height:125px;}
+#image .panel_wrapper, #image div.current {height:200px;}
+#plugintable thead {font-weight:bold; background:#DDD;}
+#plugintable, #about #plugintable td {border:1px solid #919B9C;}
+#plugintable {width:96%; margin-top:10px;}
+#pluginscontainer {height:290px; overflow:auto;}
+#colorpicker #preview {display:inline-block; padding-left:40px; height:14px; border:1px solid black; margin-left:5px; margin-right: 5px}
+#colorpicker #previewblock {position: relative; top: -3px; padding-left:5px; padding-top: 0px; display:inline}
+#colorpicker #preview_wrapper { text-align:center; padding-top:4px; white-space: nowrap}
+#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
+#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
+#colorpicker #light div {overflow:hidden;}
+#colorpicker .panel_wrapper div.current {height:175px;}
+#colorpicker #namedcolors {width:150px;}
+#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
+#colorpicker #colornamecontainer {margin-top:5px;}
+#colorpicker #picker_panel fieldset {margin:auto;width:325px;}
+#prev {margin:0; border:1px solid #000; width:428px; height:150px; overflow:auto;}
diff --git a/workflow/engine/classes/class.pmDynaform.php b/workflow/engine/classes/class.pmDynaform.php
index a2a446301..d53c5b749 100644
--- a/workflow/engine/classes/class.pmDynaform.php
+++ b/workflow/engine/classes/class.pmDynaform.php
@@ -219,18 +219,12 @@ class pmDynaform
$cells = array();
foreach ($json->columns as $column) {
//data
- if ($column->type === "text" || $column->type === "textarea" || $column->type === "dropdown" || $column->type === "datetime" || $column->type === "checkbox" || $column->type === "file" || $column->type === "link" || $value === "hidden") {
+ if ($column->type === "text" || $column->type === "textarea" || $column->type === "dropdown" || $column->type === "suggest" || $column->type === "datetime" || $column->type === "checkbox" || $column->type === "file" || $column->type === "link" || $value === "hidden") {
array_push($cells, array(
"value" => isset($row[$column->name]) ? $row[$column->name] : "",
"label" => isset($row[$column->name . "_label"]) ? $row[$column->name . "_label"] : (isset($row[$column->name]) ? $row[$column->name] : "")
));
}
- if ($column->type === "suggest") {
- array_push($cells, array(
- "value" => isset($row[$column->name . "_label"]) ? $row[$column->name . "_label"] : "",
- "label" => isset($row[$column->name]) ? $row[$column->name] : ""
- ));
- }
}
$rows[$keyRow] = $cells;
}
diff --git a/workflow/engine/classes/class.processes.php b/workflow/engine/classes/class.processes.php
index c4b753501..792e124e8 100755
--- a/workflow/engine/classes/class.processes.php
+++ b/workflow/engine/classes/class.processes.php
@@ -968,7 +968,7 @@ class Processes
}
}
}
-
+
if (isset($oData->taskExtraProperties)) {
foreach ($oData->taskExtraProperties as $key => $value) {
$record = $value;
@@ -3757,7 +3757,7 @@ class Processes
// for public files
$PUBLIC_ROOT_PATH = PATH_DATA . 'sites' . PATH_SEP . SYS_SYS . PATH_SEP . 'public' . PATH_SEP . $data->process['PRO_UID'];
-
+
//Get WebEntry file names
$arrayWebEntryFile = array();
@@ -4250,7 +4250,7 @@ class Processes
if ($fsContent > 0) {
$fileContent = fread( $fp, $fsContent ); //reading string $XmlContent
$newFileName = $pathPublic . $sFileName;
-
+
if (in_array($sFileName, $arrayWebEntryFile)) {
continue;
}
@@ -4280,8 +4280,9 @@ class Processes
public function createTaskExtraPropertiesRows ($aTaskExtraProperties)
{
if (count($aTaskExtraProperties) > 0) {
- $oConfig = new Configuration();
foreach ($aTaskExtraProperties as $key => $row) {
+ $oConfig = new Configuration();
+
if ($oConfig->exists( $row['CFG_UID'], $row['OBJ_UID'], $row['PRO_UID'], $row['USR_UID'], $row['APP_UID']) ) {
$oConfig->remove( $row['CFG_UID'], $row['OBJ_UID'], $row['PRO_UID'], $row['USR_UID'], $row['APP_UID'] );
$oConfig->setDeleted(false);
@@ -5167,7 +5168,7 @@ class Processes
throw $e;
}
}
-
+
public function truncateName($proTitle)
{
$proTitle = str_replace(".","_",$proTitle);
diff --git a/workflow/engine/classes/class.wsTools.php b/workflow/engine/classes/class.wsTools.php
index 99be0b1dc..098598a99 100755
--- a/workflow/engine/classes/class.wsTools.php
+++ b/workflow/engine/classes/class.wsTools.php
@@ -1357,13 +1357,27 @@ class workspaceTools
}
if ( !$flag && !is_null($flagFunction) ) {
- $command = 'mysql'
- . ' --host=' . $parameters['dbHost']
- . ' --user=' . $parameters['dbUser']
- . ' --password=' . str_replace('"', '\"', str_replace("'", "\'", quotemeta($parameters['dbPass'])))//no change! supports the type passwords: .\+*?[^]($)'"\"'
- . ' --database=' . mysql_real_escape_string($database)
- . ' --default_character_set utf8'
- . ' --execute="SOURCE '.$filename.'"';
+ $aHost = explode(':',$parameters['dbHost']);
+ $dbHost = $aHost[0];
+ if(isset($aHost[1])){
+ $dbPort = $aHost[1];
+ $command = 'mysql'
+ . ' --host=' . $dbHost
+ . ' --port=' . $dbPort
+ . ' --user=' . $parameters['dbUser']
+ . ' --password=' . str_replace('"', '\"', str_replace("'", "\'", quotemeta($parameters['dbPass'])))//no change! supports the type passwords: .\+*?[^]($)'"\"'
+ . ' --database=' . mysql_real_escape_string($database)
+ . ' --default_character_set utf8'
+ . ' --execute="SOURCE '.$filename.'"';
+ }else{
+ $command = 'mysql'
+ . ' --host=' . $dbHost
+ . ' --user=' . $parameters['dbUser']
+ . ' --password=' . str_replace('"', '\"', str_replace("'", "\'", quotemeta($parameters['dbPass'])))//no change! supports the type passwords: .\+*?[^]($)'"\"'
+ . ' --database=' . mysql_real_escape_string($database)
+ . ' --default_character_set utf8'
+ . ' --execute="SOURCE '.$filename.'"';
+ }
shell_exec($command);
} else {
//If the safe mode of the server is actived
@@ -1624,7 +1638,7 @@ class workspaceTools
}
list ($dbHost, $dbUser, $dbPass) = @explode(SYSTEM_HASH, G::decrypt(HASH_INSTALLATION, SYSTEM_HASH));
if($port != ''){
- $dbHost = $dbHost.$port;
+ $dbHost = $dbHost.$port; //127.0.0.1:3306
}
$aParameters = array('dbHost'=>$dbHost,'dbUser'=>$dbUser,'dbPass'=>$dbPass);
CLI::logging("> Connecting to system database in '$dbHost'\n");
diff --git a/workflow/engine/classes/model/CaseScheduler.php b/workflow/engine/classes/model/CaseScheduler.php
index ae28211fb..c4448e3fd 100755
--- a/workflow/engine/classes/model/CaseScheduler.php
+++ b/workflow/engine/classes/model/CaseScheduler.php
@@ -311,248 +311,284 @@ class CaseScheduler extends BaseCaseScheduler
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 );
+ try {
+ require_once("classes" . PATH_SEP . "model" . PATH_SEP . "LogCasesScheduler.php");
- $sValue = '';
- $sActualTime = '';
- $sDaysPerformTask = '';
- $sWeeks = '';
- $sStartDay = '';
- $sMonths = '';
+ //Set variables
+ $port = "";
- while ($oDataset->next()) {
- $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 ) );
+ if (isset($_SERVER["SERVER_PORT"])) {
+ $port = ($_SERVER["SERVER_PORT"] . "" != "80")? ":" . $_SERVER["SERVER_PORT"] : "";
+ } else {
+ if (defined("SERVER_PORT")) {
+ $port = (SERVER_PORT . "" != "80")? ":" . SERVER_PORT : "";
+ }
}
- $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;
- }
+ $wsdl = "http://" . SERVER_NAME . $port . "/sys" . SYS_SYS . "/" . SYS_LANG . "/classic/services/wsdl2";
- $sActualTime = $aRow['SCH_TIME_NEXT_RUN'];
- $sActualDataHour = (int)(date("H", strtotime($aRow["SCH_TIME_NEXT_RUN"])));
- $sActualDataMinutes = (int)(date("i", strtotime($aRow["SCH_TIME_NEXT_RUN"])));
- $dActualSysHour = (int)(date("H", $nTime));
- $dActualSysMinutes = (int)(date("i", $nTime));
- $sActualDataTime = strtotime( $aRow['SCH_TIME_NEXT_RUN'] );
- $sActualSysTime = strtotime( $nTime );
+ $timeDate = strtotime($date);
- if ($sActualDataHour == $dActualSysHour && $sActualDataMinutes <= $dActualSysMinutes) {
- //if ($sActualDataHour == $dActualSysHour && $sActualDataMinutes == $dActualSysMinutes) {
- $port = "";
+ $dateHour = (int)(date("H", $timeDate));
+ $dateMinutes = (int)(date("i", $timeDate));
- if (isset($_SERVER["SERVER_PORT"])) {
- $port = ($_SERVER["SERVER_PORT"] . "" != "80")? ":" . $_SERVER["SERVER_PORT"] : "";
- } else {
- if (defined("SERVER_PORT")) {
- $port = (SERVER_PORT . "" != "80")? ":" . SERVER_PORT : "";
- }
+ $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));
}
- $defaultEndpoint = "http://" . SERVER_NAME . $port . "/sys" . SYS_SYS . "/" . SYS_LANG . "/classic/services/wsdl2";
+ $caseSchedulerUid = $row["SCH_UID"];
+ $caseSchedulerOption = (int)($row["SCH_OPTION"]);
+ $caseSchedulerTimeNextRun = $row["SCH_TIME_NEXT_RUN"];
- 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' => Bootstrap::getPasswordHashType() . ':' . $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
+ //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 = (int)(date("H", strtotime($row["SCH_TIME_NEXT_RUN"])));
+ $caseSchedulerTimeNextRunMinutes = (int)(date("i", strtotime($row["SCH_TIME_NEXT_RUN"])));
+
+ $flagNewCase = ($caseSchedulerTimeNextRunHour == $dateHour && $caseSchedulerTimeNextRunMinutes <= $dateMinutes) || $caseSchedulerTimeNextRunHour < $dateHour;
+ }
+
+ if ($flagNewCase) {
+ 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)
+ )
);
- $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' => ''
+ 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" => ""
);
- //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])) {
- $caseSchedulerSelected = $caseSchedulerPlugin;
+ 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['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'];
+ //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");
- $paramsLogResult = $paramsLogResultFromPlugin['paramsLogResult'];
- $paramsRouteLogResult = $paramsLogResultFromPlugin['paramsRouteLogResult'];
- } else {
- eprint( " - Creating the new case............." );
+ $oData = array();
+ $oData["OBJ_SOAP"] = $client;
+ $oData["SCH_UID"] = $row["SCH_UID"];
+ $oData["params"] = $params;
+ $oData["sessionId"] = $sessionId;
+ $oData["userId"] = $user;
- $paramsAux = $params;
- $paramsAux["executeTriggers"] = 1;
+ $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"];
- $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: ' . $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 {
- $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';
- }
+ $paramsLogResult = $paramsLogResultFromPlugin["paramsLogResult"];
+ $paramsRouteLogResult = $paramsLogResultFromPlugin["paramsRouteLogResult"];
} else {
- $paramsLog['WS_CREATE_CASE_STATUS'] = strip_tags( $result->message );
- eprintln( "FAILED->{$paramsLog ['WS_CREATE_CASE_STATUS']}", 'red' );
- $paramsLogResult = 'FAILED';
+ 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");
}
- } 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 );
- }
+ if ($paramsLogResult == "SUCCESS" && $paramsRouteLogResult == "SUCCESS") {
+ $paramsLog["RESULT"] = "SUCCESS";
+ } else {
+ $paramsLog["RESULT"] = "FAILED";
}
- $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 );
+ $newCaseLog = new LogCasesScheduler();
+ $newCaseLog->saveLogParameters($paramsLog);
+ $newCaseLog->save();
- $this->updateDate( $sSchedulerUid, $nSchTimeNextRun, $nSchLastRunTime );
+ //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 + (((int)($row["SCH_REPEAT_EVERY"])) * 60 * 60));
+ }
+
+ $this->updateDate($caseSchedulerUid, $caseSchedulerTimeNextRunNew, $caseSchedulerTimeNextRun);
+ break;
+ }
}
}
+ } catch (Exception $e) {
+ throw $e;
}
}
@@ -564,7 +600,7 @@ class CaseScheduler extends BaseCaseScheduler
$this->Update( $Fields );
}
- public function updateNextRun($sOption, $sValue = "", $sActualTime = "", $sDaysPerformTask = "", $sWeeks = "", $sStartDay = "", $sMonths = "", $currentDate = "", $flagNextRun = true)
+ public function updateNextRun($sOption, $sValue = "", $sActualTime = "", $sDaysPerformTask = "", $sWeeks = "", $sStartDay = "", $sMonths = "", $currentDate = "", $flagOptionWeeklyNextRun = true)
{
$nActualDate = $currentDate . " " . $sActualTime;
$dEstimatedDate = '';
@@ -600,21 +636,39 @@ class CaseScheduler extends BaseCaseScheduler
$arrayWeekdays = explode("|", $sWeeks);
$firstDay = (int)($arrayWeekdays[0]);
+ $lastDay = (int)($arrayWeekdays[count($arrayWeekdays) - 1]);
- $flagFound = $nDayOfTheWeek < $firstDay || in_array($nDayOfTheWeek, $arrayWeekdays);
+ $flagFound1 = $nDayOfTheWeek < $firstDay || in_array($nDayOfTheWeek, $arrayWeekdays);
+ $flagFound2 = ($flagFound1)? false : ($firstDay <= $nDayOfTheWeek && $nDayOfTheWeek <= $lastDay);
- if ($flagFound) {
+ if ($flagFound1 || $flagFound2) {
$typeStatement = "this";
- $indexDay = (in_array($nDayOfTheWeek, $arrayWeekdays))? $nDayOfTheWeek : $firstDay;
- if ($flagNextRun) {
- $index = array_search($nDayOfTheWeek, $arrayWeekdays);
+ if ($flagFound1) {
+ $indexDay = (in_array($nDayOfTheWeek, $arrayWeekdays))? $nDayOfTheWeek : $firstDay;
- if ($index !== false && isset($arrayWeekdays[$index + 1])) {
- $indexDay = $arrayWeekdays[$index + 1];
- } else {
- $typeStatement = "next";
- $indexDay = $firstDay;
+ if ($flagOptionWeeklyNextRun) {
+ $index = array_search($nDayOfTheWeek, $arrayWeekdays);
+
+ if ($index !== false && isset($arrayWeekdays[$index + 1])) {
+ $indexDay = $arrayWeekdays[$index + 1];
+ } else {
+ $typeStatement = "next";
+ $indexDay = $firstDay;
+ }
+ }
+ }
+
+ if ($flagFound2) {
+ $indexDay = $firstDay;
+
+ foreach ($arrayWeekdays as $value) {
+ $day = (int)($value);
+
+ if ($day > $nDayOfTheWeek) {
+ $indexDay = $day;
+ break;
+ }
}
}
@@ -715,5 +769,162 @@ class CaseScheduler extends BaseCaseScheduler
throw ($oError);
}
}
+
+ /**
+ * Get variables from a CaseScheduler record
+ *
+ * @param array $record Record
+ *
+ * return array Return an array with variables
+ */
+ public function getVariablesFromRecord(array $record)
+ {
+ try {
+ $value = "";
+ $daysPerformTask = "";
+ $weeks = "";
+ $startDay = "";
+ $months = "";
+
+ switch ((int)($record["SCH_OPTION"])) {
+ case 1:
+ //Daily
+ $daysPerformTask = $record["SCH_DAYS_PERFORM_TASK"];
+ $arrayDaysPerformTask = explode("|", $daysPerformTask);
+ $value = $arrayDaysPerformTask[0];
+
+ if ($value != 1) {
+ $daysPerformTask = $arrayDaysPerformTask[1];
+ }
+ break;
+ case 2:
+ //Weekly
+ $daysPerformTask = $record["SCH_EVERY_DAYS"];
+ $weeks = $record["SCH_WEEK_DAYS"];
+ break;
+ case 3:
+ //Monthly
+ $startDay = $record["SCH_START_DAY"];
+ $months = $record["SCH_MONTHS"];
+ $arrayStartDay = explode("|", $startDay);
+ $value = $arrayStartDay[0];
+ break;
+ case 4:
+ //One time only
+ break;
+ case 5:
+ //Every
+ break;
+ }
+
+ //Return
+ return array($value, $daysPerformTask, $weeks, $startDay, $months);
+ } catch (Exception $e) {
+ throw $e;
+ }
+ }
+
+ /**
+ * Get the Time Next Run by Date
+ *
+ * @param array $arrayCaseSchedulerData CaseScheduler Data
+ * @param string $date Date
+ * @param bool $flagUpdateTimeNextRun Flag
+ *
+ * return string Return the Time Next Run
+ */
+ public function getTimeNextRunByDate(array $arrayCaseSchedulerData, $date, $flagUpdateTimeNextRun = true)
+ {
+ try {
+ $arrayNextDate = array();
+
+ //Get date
+ $caseSchedulerOption = (int)($arrayCaseSchedulerData["SCH_OPTION"]);
+ $caseSchedulerTimeNextRun = $arrayCaseSchedulerData["SCH_TIME_NEXT_RUN"];
+
+ list($value, $daysPerformTask, $weeks, $startDay, $months) = $this->getVariablesFromRecord($arrayCaseSchedulerData);
+
+ $timeDate = strtotime($date); //Current time
+ $timeCaseSchedulerTimeNextRun = strtotime($caseSchedulerTimeNextRun);
+
+ $flagTimeNextRun = false;
+ $flagUpdate = false;
+
+ if ($caseSchedulerOption != 1) {
+ //Others
+ $flagTimeNextRun = true;
+ } else {
+ //Daily
+ $arrayDate = array(
+ date("Y-m-d", strtotime($arrayCaseSchedulerData["SCH_START_DATE"])) . " " . date("H:i:s", $timeCaseSchedulerTimeNextRun),
+ date("Y-m-d", $timeDate) . " " . date("H:i:s", $timeCaseSchedulerTimeNextRun)
+ );
+
+ $flagTimeNextRun = true;
+
+ foreach ($arrayDate as $d) {
+ $caseSchedulerTimeNextRun2 = $d;
+ $timeCaseSchedulerTimeNextRun2 = strtotime($caseSchedulerTimeNextRun2);
+
+ if ($timeDate < $timeCaseSchedulerTimeNextRun2) {
+ $caseSchedulerTimeNextRun = $caseSchedulerTimeNextRun2;
+
+ $flagTimeNextRun = false;
+ $flagUpdate = true;
+ break;
+ }
+ }
+ }
+
+ if ($flagTimeNextRun) {
+ switch ($caseSchedulerOption) {
+ case 1:
+ case 2:
+ case 3:
+ //Daily
+ //Weekly
+ //Monthly
+ $caseSchedulerTimeNextRun = date("Y-m-d", $timeDate) . " " . date("H:i:s", $timeCaseSchedulerTimeNextRun);
+ $caseSchedulerTimeNextRun = $this->updateNextRun($caseSchedulerOption, $value, $caseSchedulerTimeNextRun, $daysPerformTask, $weeks, $startDay, $months, "", false);
+
+ $timeCaseSchedulerTimeNextRun = strtotime($caseSchedulerTimeNextRun);
+
+ if ($timeCaseSchedulerTimeNextRun < $timeDate) {
+ $caseSchedulerTimeNextRun = $this->updateNextRun($caseSchedulerOption, $value, $caseSchedulerTimeNextRun, $daysPerformTask, $weeks, $startDay, $months);
+ }
+ break;
+ case 4:
+ //One time only
+ $caseSchedulerTimeNextRun = date("Y-m-d", $timeDate) . " " . date("H:i:s", $timeCaseSchedulerTimeNextRun);
+
+ $timeCaseSchedulerTimeNextRun = strtotime($caseSchedulerTimeNextRun);
+
+ if ($timeCaseSchedulerTimeNextRun < $timeDate) {
+ $caseSchedulerTimeNextRun = $this->updateNextRun("1", "1", $caseSchedulerTimeNextRun, $daysPerformTask, $weeks, $startDay, $months);
+ }
+ break;
+ case 5:
+ //Every
+ $caseSchedulerTimeNextRun = date("Y-m-d H:i:s", $timeDate + (((int)($arrayCaseSchedulerData["SCH_REPEAT_EVERY"])) * 60 * 60));
+ break;
+ }
+
+ $flagUpdate = true;
+ }
+
+ //Update the SCH_TIME_NEXT_RUN field
+ if ($flagUpdateTimeNextRun && $flagUpdate) {
+ $result = $this->update(array(
+ "SCH_UID" => $arrayCaseSchedulerData["SCH_UID"],
+ "SCH_TIME_NEXT_RUN" => strtotime($caseSchedulerTimeNextRun)
+ ));
+ }
+
+ //Return
+ return $caseSchedulerTimeNextRun;
+ } catch (Exception $e) {
+ throw $e;
+ }
+ }
}
diff --git a/workflow/engine/classes/model/Configuration.php b/workflow/engine/classes/model/Configuration.php
index 51c8fb86c..ee81c1dc7 100755
--- a/workflow/engine/classes/model/Configuration.php
+++ b/workflow/engine/classes/model/Configuration.php
@@ -6,19 +6,17 @@ class Configuration extends BaseConfiguration
$cnn = Propel::getConnection(ConfigurationPeer::DATABASE_NAME);
try {
- $configuration = new Configuration();
+ $this->setCfgUid($arrayData["CFG_UID"]);
+ $this->setObjUid($arrayData["OBJ_UID"]);
+ $this->setCfgValue((isset($arrayData["CFG_VALUE"]))? $arrayData["CFG_VALUE"] : "");
+ $this->setProUid($arrayData["PRO_UID"]);
+ $this->setUsrUid($arrayData["USR_UID"]);
+ $this->setAppUid($arrayData["APP_UID"]);
- $configuration->setCfgUid($arrayData["CFG_UID"]);
- $configuration->setObjUid($arrayData["OBJ_UID"]);
- $configuration->setCfgValue((isset($arrayData["CFG_VALUE"]))? $arrayData["CFG_VALUE"] : "");
- $configuration->setProUid($arrayData["PRO_UID"]);
- $configuration->setUsrUid($arrayData["USR_UID"]);
- $configuration->setAppUid($arrayData["APP_UID"]);
-
- if ($configuration->validate()) {
+ if ($this->validate()) {
$cnn->begin();
- $result = $configuration->save();
+ $result = $this->save();
$cnn->commit();
@@ -27,7 +25,7 @@ class Configuration extends BaseConfiguration
} else {
$msg = "";
- foreach ($configuration->getValidationFailures() as $validationFailure) {
+ foreach ($this->getValidationFailures() as $validationFailure) {
$msg = $msg . (($msg != "")? "\n" : "") . $validationFailure->getMessage();
}
diff --git a/workflow/engine/methods/controls/varsAjax.php b/workflow/engine/methods/controls/varsAjax.php
index 8d3acc993..b05999ff0 100755
--- a/workflow/engine/methods/controls/varsAjax.php
+++ b/workflow/engine/methods/controls/varsAjax.php
@@ -35,7 +35,8 @@ $_REQUEST['sSymbol']= isset($_REQUEST["sSymbol"])?$_REQUEST["sSymbol"]:'';
$_SERVER["QUERY_STRING"] = $filter->xssFilterHard($_SERVER["QUERY_STRING"]);
-$html = '