diff --git a/gulliver/bin/tasks/pakeGulliver.php b/gulliver/bin/tasks/pakeGulliver.php
index 747897e4b..a26524f29 100755
--- a/gulliver/bin/tasks/pakeGulliver.php
+++ b/gulliver/bin/tasks/pakeGulliver.php
@@ -2736,7 +2736,7 @@ function run_check_plugin_disabled_code($task, $args)
$arrayFoundDisabledCode = array_merge($cs->checkDisabledCode("FILE", PATH_PLUGINS . $pluginName . ".php"), $cs->checkDisabledCode("PATH", PATH_PLUGINS . $pluginName));
- if (count($arrayFoundDisabledCode) > 0) {
+ if (!empty($arrayFoundDisabledCode)) {
$strFoundDisabledCode .= (($strFoundDisabledCode != "")? "\n\n" : "") . "> " . $pluginName;
foreach ($arrayFoundDisabledCode as $key2 => $value2) {
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 c5673c616..b71a3b12a 100644
--- a/gulliver/js/tinymce/jscripts/tiny_mce/plugins/pmSimpleUploader/uploader.php
+++ b/gulliver/js/tinymce/jscripts/tiny_mce/plugins/pmSimpleUploader/uploader.php
@@ -67,10 +67,12 @@ function displayUploadForm()
$html = "
diff --git a/gulliver/system/class.codeScanner.php b/gulliver/system/class.codeScanner.php
index b02c7dd01..cb12e9a37 100644
--- a/gulliver/system/class.codeScanner.php
+++ b/gulliver/system/class.codeScanner.php
@@ -80,7 +80,7 @@ class CodeScanner
public function existsDisabledCode()
{
try {
- return count($this->arrayDisabledCode) > 0;
+ return !empty($this->arrayDisabledCode);
} catch (Exception $e) {
throw $e;
}
@@ -174,7 +174,7 @@ class CodeScanner
$arrayAux = $this->checkDisabledCodeInSource($source);
- if (count($arrayAux) > 0) {
+ if (!empty($arrayAux)) {
$arrayFoundCode["source"] = $arrayAux;
}
break;
@@ -202,7 +202,7 @@ class CodeScanner
$arrayAux = $this->checkDisabledCodeInSource($source);
- if (count($arrayAux) > 0) {
+ if (!empty($arrayAux)) {
$arrayFoundCode[$path] = $arrayAux;
}
}
diff --git a/workflow/engine/bin/cron_single.php b/workflow/engine/bin/cron_single.php
index 205e981b3..ed7aa5b8d 100755
--- a/workflow/engine/bin/cron_single.php
+++ b/workflow/engine/bin/cron_single.php
@@ -967,7 +967,7 @@ function executeCaseSelfService()
$dueDate = $calendar->calculateDate(
$appcacheDelDelegateDate,
$taskSelfServiceTime,
- $taskSelfServiceTimeUnit //HOURS|DAYS
+ $taskSelfServiceTimeUnit //HOURS|DAYS|MINUTES
//1
);
diff --git a/workflow/engine/bin/tasks/cliUpgrade.php b/workflow/engine/bin/tasks/cliUpgrade.php
index 958413427..c5fbc71da 100755
--- a/workflow/engine/bin/tasks/cliUpgrade.php
+++ b/workflow/engine/bin/tasks/cliUpgrade.php
@@ -124,6 +124,14 @@ function run_upgrade($command, $args)
$countWorkspace = 0;
$buildCacheView = array_key_exists("buildACV", $args);
foreach ($workspaces as $index => $workspace) {
+ if (!defined("SYS_SYS")) {
+ define("SYS_SYS", $workspace->name);
+ }
+
+ if (!defined("PATH_DATA_SITE")) {
+ define("PATH_DATA_SITE", PATH_DATA . "sites" . PATH_SEP . SYS_SYS . PATH_SEP);
+ }
+
try {
$countWorkspace++;
CLI::logging("Upgrading workspaces ($countWorkspace/$count): " . CLI::info($workspace->name) . "\n");
diff --git a/workflow/engine/bin/tasks/cliWorkspaces.php b/workflow/engine/bin/tasks/cliWorkspaces.php
index d019270ef..689392806 100755
--- a/workflow/engine/bin/tasks/cliWorkspaces.php
+++ b/workflow/engine/bin/tasks/cliWorkspaces.php
@@ -324,6 +324,14 @@ function database_upgrade($command, $args) {
$workspaces = get_workspaces_from_args($args);
$checkOnly = (strcmp($command, "check") == 0);
foreach ($workspaces as $workspace) {
+ if (!defined("SYS_SYS")) {
+ define("SYS_SYS", $workspace->name);
+ }
+
+ if (!defined("PATH_DATA_SITE")) {
+ define("PATH_DATA_SITE", PATH_DATA . "sites" . PATH_SEP . SYS_SYS . PATH_SEP);
+ }
+
if ($checkOnly)
print_r("Checking database in ".pakeColor::colorize($workspace->name, "INFO")."\n");
else
@@ -595,12 +603,24 @@ function run_check_workspace_disabled_code($args, $opts)
foreach ($arrayWorkspace as $value) {
$workspace = $value;
+ if (!defined("SYS_SYS")) {
+ define("SYS_SYS", $workspace->name);
+ }
+
+ if (!defined("PATH_DATA_SITE")) {
+ define("PATH_DATA_SITE", PATH_DATA . "sites" . PATH_SEP . SYS_SYS . PATH_SEP);
+ }
+
+ if (!$workspace->pmLicensedFeaturesVerifyFeature("B0oWlBLY3hHdWY0YUNpZEtFQm5CeTJhQlIwN3IxMEkwaG4=")) {
+ throw new Exception("Error: This command cannot be used because your license does not include it.");
+ }
+
echo "> Workspace: " . $workspace->name . "\n";
try {
$arrayFoundDisabledCode = $workspace->getDisabledCode();
- if (count($arrayFoundDisabledCode) > 0) {
+ if (!empty($arrayFoundDisabledCode)) {
$strFoundDisabledCode = "";
foreach ($arrayFoundDisabledCode as $value2) {
@@ -630,6 +650,8 @@ function run_check_workspace_disabled_code($args, $opts)
} catch (Exception $e) {
echo "Errors to check disabled code: " . CLI::error($e->getMessage()) . "\n\n";
}
+
+ $workspace->close();
}
echo "Done!\n";
@@ -672,4 +694,4 @@ function migrate_new_cases_lists($command, $args) {
}
}
}
-/*----------------------------------********---------------------------------*/
\ No newline at end of file
+/*----------------------------------********---------------------------------*/
diff --git a/workflow/engine/classes/class.calendar.php b/workflow/engine/classes/class.calendar.php
index 48f50b77f..24c968d2b 100755
--- a/workflow/engine/classes/class.calendar.php
+++ b/workflow/engine/classes/class.calendar.php
@@ -806,7 +806,9 @@ class calendar extends CalendarDefinition
if ( G::toUpper($formatDuration) == 'DAYS' ) {
$duration = $duration*$calendarData['HOURS_FOR_DAY'];
}
-
+ if ( G::toUpper($formatDuration) == 'MINUTES' ) {
+ $duration = $duration/60;
+ }
$hoursDuration = (float)$duration;
$newDate = $iniDate;
diff --git a/workflow/engine/classes/class.case.php b/workflow/engine/classes/class.case.php
index 1e3a1dcf9..942ccefe9 100755
--- a/workflow/engine/classes/class.case.php
+++ b/workflow/engine/classes/class.case.php
@@ -3373,25 +3373,29 @@ class Cases
/*----------------------------------********---------------------------------*/
$cs = new CodeScanner((isset($arraySystemConfiguration["enable_blacklist"]) && (int)($arraySystemConfiguration["enable_blacklist"]) == 1)? "DISABLED_CODE" : "");
+
$strFoundDisabledCode = "";
/*----------------------------------********---------------------------------*/
foreach ($aTriggers as $aTrigger) {
- //Check disabled code
/*----------------------------------********---------------------------------*/
- $arrayFoundDisabledCode = $cs->checkDisabledCode("SOURCE", $aTrigger["TRI_WEBBOT"]);
+ if (PMLicensedFeatures::getSingleton()->verifyfeature("B0oWlBLY3hHdWY0YUNpZEtFQm5CeTJhQlIwN3IxMEkwaG4=")) {
+ //Check disabled code
+ $arrayFoundDisabledCode = $cs->checkDisabledCode("SOURCE", $aTrigger["TRI_WEBBOT"]);
- if (count($arrayFoundDisabledCode) > 0) {
- $strCodeAndLine = "";
+ if (!empty($arrayFoundDisabledCode)) {
+ $strCodeAndLine = "";
- foreach ($arrayFoundDisabledCode["source"] as $key => $value) {
- $strCodeAndLine .= (($strCodeAndLine != "")? ", " : "") . G::LoadTranslation("ID_DISABLED_CODE_CODE_AND_LINE", array($key, implode(", ", $value)));
+ foreach ($arrayFoundDisabledCode["source"] as $key => $value) {
+ $strCodeAndLine .= (($strCodeAndLine != "")? ", " : "") . G::LoadTranslation("ID_DISABLED_CODE_CODE_AND_LINE", array($key, implode(", ", $value)));
+ }
+
+ $strFoundDisabledCode .= "
- " . $aTrigger["TRI_TITLE"] . ": " . $strCodeAndLine;
+ continue;
}
-
- $strFoundDisabledCode .= "
- " . $aTrigger["TRI_TITLE"] . ": " . $strCodeAndLine;
- continue;
}
/*----------------------------------********---------------------------------*/
+
//Execute
$bExecute = true;
@@ -6745,7 +6749,7 @@ class Cases
$rows[] = $rs->getRow();
}
- if ($PRO_UID != null) {
+ if ($PRO_UID != null) {
//Add supervisor
// Users
$oCriteria = new Criteria('workflow');
@@ -6765,10 +6769,10 @@ class Cases
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$flagSupervisors = false;
- if ($oDataset->next()) {
+ if ($oDataset->next()) {
if (!in_array($USR_UID,$row)) {
$rows[] = $oDataset->getRow();
- }
+ }
$flagSupervisors = true;
}
@@ -6908,7 +6912,7 @@ class Cases
unset($aFields['APP_STATUS']);
unset($aFields['APP_PROC_STATUS']);
unset($aFields['APP_PROC_CODE']);
- unset($aFields['APP_PIN']);
+ unset($aFields['APP_PIN']);
$this->updateCase($aFields['APP_UID'], $aFields);
return true;
}
diff --git a/workflow/engine/classes/class.dbConnections.php b/workflow/engine/classes/class.dbConnections.php
index 3e3d709a7..ec4ac1aa7 100755
--- a/workflow/engine/classes/class.dbConnections.php
+++ b/workflow/engine/classes/class.dbConnections.php
@@ -154,7 +154,7 @@ class dbConnections
$result = DbSourcePeer::doSelectRS( $c );
$result->next();
$row = $result->getRow();
-
+
while ($row = $result->getRow()) {
if ((trim( $pProUid ) == trim( $row[1] )) && ($row[2] == 'mysql')) {
$connections[] = Array ('DBS_UID' => $row[0],'DBS_NAME' => '[' . $row[3] . '] ' . $row[2] . ': ' . $row[4]
@@ -335,7 +335,12 @@ class dbConnections
);
break;
case 'oracle':
- $encodes = Array ();
+ $encodes = array (
+ array ("UTF8", "UTF8 - Unicode 3.0 UTF-8 Universal character set CESU-8 compliant"),
+ array ("UTFE", "UTFE - EBCDIC form of Unicode 3.0 UTF-8 Universal character set"),
+ array ("AL16UTF16", "AL16UTF16 - Unicode 3.1 UTF-16 Universal character set"),
+ array ("AL32UTF8", "AL32UTF8 - Unicode 3.1 UTF-8 Universal character set")
+ );
break;
}
diff --git a/workflow/engine/classes/class.licensedFeatures.php b/workflow/engine/classes/class.licensedFeatures.php
index ec32befda..1a85563cd 100644
--- a/workflow/engine/classes/class.licensedFeatures.php
+++ b/workflow/engine/classes/class.licensedFeatures.php
@@ -146,6 +146,57 @@ class PMLicensedFeatures
"type" => "features",
"url" => "",
"version" => ""
+ ),
+ 7 => array(
+ "description" => "Enables the code scanner feature.",
+ "enabled" => false,
+ "id" => "codeScanner",
+ "latest_version" => "",
+ "log" => null,
+ "name" => "codeScanner",
+ "nick" => "codeScanner",
+ "progress" => 0,
+ "publisher" => "Colosa",
+ "release_type" => "localRegistry",
+ "status" => "ready",
+ "store" => "00000000000000000000000000010007",
+ "type" => "features",
+ "url" => "",
+ "version" => ""
+ ),
+ 8 => array(
+ "description" => "Enables the multiple email configuration feature.",
+ "enabled" => false,
+ "id" => "multipleEmailServers",
+ "latest_version" => "",
+ "log" => null,
+ "name" => "multipleEmailServers",
+ "nick" => "multipleEmailServers",
+ "progress" => 0,
+ "publisher" => "Colosa",
+ "release_type" => "localRegistry",
+ "status" => "ready",
+ "store" => "00000000000000000000000000010009",
+ "type" => "features",
+ "url" => "",
+ "version" => ""
+ ),
+ 9 => array(
+ "description" => "Enables the mobile fields.",
+ "enabled" => false,
+ "id" => "mobileFields",
+ "latest_version" => "",
+ "log" => null,
+ "name" => "mobileFields",
+ "nick" => "mobileFields",
+ "progress" => 0,
+ "publisher" => "Colosa",
+ "release_type" => "localRegistry",
+ "status" => "ready",
+ "store" => "00000000000000000000000000010008",
+ "type" => "features",
+ "url" => "",
+ "version" => ""
)
);
@@ -208,7 +259,7 @@ class PMLicensedFeatures
$this->featuresDetails[$value[0]]->enabled = $enable;
return $enable;
}
-
+
public function addNewFeatures ($data)
{
$newFeaturesList = $this->newFeatures;
@@ -225,14 +276,14 @@ class PMLicensedFeatures
$rs->next();
$row = $rs->getRow();
$ids = array();
- if(sizeof($row)) {
+ if(sizeof($row)) {
while (is_array($row)) {
$ids[] = $row[0];
$rs->next();
$row = $rs->getRow();
- }
+ }
$toUpdate = array_diff($newFeaturesIds,$ids);
-
+
if(sizeof($toUpdate)){
$newFeaturesListAux = array();
foreach($toUpdate as $index => $v) {
@@ -241,10 +292,10 @@ class PMLicensedFeatures
unset($newFeaturesList);
$newFeaturesList = array_values($newFeaturesListAux);
} else {
- return $data;
+ return $data;
}
}
-
+
$i = 0;
foreach($newFeaturesList as $k => $newFeature){
$newData[] = array (
@@ -331,8 +382,8 @@ class PMLicensedFeatures
),
'action' => 1,
);
-
- $i++;
+
+ $i++;
}
return array_merge($data, $newData);
}
diff --git a/workflow/engine/classes/class.net.php b/workflow/engine/classes/class.net.php
index 4091f5ffe..d7901502a 100755
--- a/workflow/engine/classes/class.net.php
+++ b/workflow/engine/classes/class.net.php
@@ -206,7 +206,7 @@ class NET
*
* @return void
*/
- public function tryConnectServer($pDbDriver, array $arrayServerData = array())
+ public function tryConnectServer($pDbDriver, array $arrayServerData = array(), $dbsEncode = "")
{
G::LoadSystem('inputfilter');
$filter = new InputFilter();
@@ -224,8 +224,8 @@ class NET
if ($arrayServerData["connectionType"] == "TNS" || $arrayServerData["DBS_TYPEORACLE"] == "TNS") {
$flagTns=1;
}else{
- $flagTns=0;
- }
+ $flagTns=0;
+ }
}else{
$flagTns=0;
}
@@ -291,9 +291,9 @@ class NET
if ($flagTns == 0) {
$this->db_port = ($this->db_port == "" || $this->db_port == 0)? "1521" : $this->db_port;
- $cnn = @oci_connect($this->db_user, $this->db_passwd, "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP) (HOST=$this->ip) (PORT=$this->db_port) )) (CONNECT_DATA=(SERVICE_NAME=$this->db_sourcename)))");
+ $cnn = @oci_connect($this->db_user, $this->db_passwd, "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP) (HOST=$this->ip) (PORT=$this->db_port) )) (CONNECT_DATA=(SERVICE_NAME=$this->db_sourcename)))", $dbsEncode);
} else {
- $cnn = @oci_connect($this->db_user, $this->db_passwd, $arrayServerData["tns"]);
+ $cnn = @oci_connect($this->db_user, $this->db_passwd, $arrayServerData["tns"], $dbsEncode);
}
if ($cnn) {
@@ -329,7 +329,7 @@ class NET
*
* @return void
*/
- public function tryOpenDataBase($pDbDriver, array $arrayServerData = array())
+ public function tryOpenDataBase($pDbDriver, array $arrayServerData = array(), $dbsEncode = "")
{
G::LoadSystem('inputfilter');
$filter = new InputFilter();
@@ -349,8 +349,8 @@ class NET
if ($arrayServerData["connectionType"] == "TNS" || $arrayServerData["DBS_TYPEORACLE"] == "TNS") {
$flagTns=1;
}else{
- $flagTns=0;
- }
+ $flagTns=0;
+ }
}else{
$flagTns=0;
}
@@ -434,9 +434,9 @@ class NET
if ($flagTns == 0) {
$this->db_port = ($this->db_port == "" || $this->db_port == 0)? "1521" : $this->db_port;
- $cnn = @oci_connect($this->db_user, $this->db_passwd, "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP) (HOST=$this->ip) (PORT=$this->db_port) )) (CONNECT_DATA=(SERVICE_NAME=$this->db_sourcename)))");
+ $cnn = @oci_connect($this->db_user, $this->db_passwd, "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP) (HOST=$this->ip) (PORT=$this->db_port) )) (CONNECT_DATA=(SERVICE_NAME=$this->db_sourcename)))", $dbsEncode);
} else {
- $cnn = @oci_connect($this->db_user, $this->db_passwd, $arrayServerData["tns"]);
+ $cnn = @oci_connect($this->db_user, $this->db_passwd, $arrayServerData["tns"], $dbsEncode);
}
if ($cnn) {
@@ -592,4 +592,3 @@ class Stat
$this->status = false;
}
}
-
diff --git a/workflow/engine/classes/class.pmDynaform.php b/workflow/engine/classes/class.pmDynaform.php
index d53c5b749..70514d581 100644
--- a/workflow/engine/classes/class.pmDynaform.php
+++ b/workflow/engine/classes/class.pmDynaform.php
@@ -219,7 +219,7 @@ class pmDynaform
$cells = array();
foreach ($json->columns as $column) {
//data
- 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") {
+ 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" || $column->type === "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] : "")
diff --git a/workflow/engine/classes/class.pmFunctions.php b/workflow/engine/classes/class.pmFunctions.php
index 555e04870..ac2a8b223 100755
--- a/workflow/engine/classes/class.pmFunctions.php
+++ b/workflow/engine/classes/class.pmFunctions.php
@@ -242,6 +242,7 @@ function executeQuery ($SqlStatement, $DBConnectionUID = 'workflow', $aParameter
{
$con = Propel::getConnection( $DBConnectionUID );
$con->begin();
+
try {
$statement = trim( $SqlStatement );
$statement = str_replace( '(', '', $statement );
@@ -278,7 +279,13 @@ function executeQuery ($SqlStatement, $DBConnectionUID = 'workflow', $aParameter
break;
}
} else {
- $result = executeQueryOci( $SqlStatement, $con, $aParameter );
+ $dataEncode = $con->getDSN();
+
+ if (isset($dataEncode["encoding"]) && $dataEncode["encoding"] != "") {
+ $result = executeQueryOci($SqlStatement, $con, $aParameter, $dataEncode["encoding"]);
+ } else {
+ $result = executeQueryOci($SqlStatement, $con, $aParameter);
+ }
}
return $result;
diff --git a/workflow/engine/classes/class.pmScript.php b/workflow/engine/classes/class.pmScript.php
index 326f7d8d5..24da4f0aa 100644
--- a/workflow/engine/classes/class.pmScript.php
+++ b/workflow/engine/classes/class.pmScript.php
@@ -493,7 +493,7 @@ class PMScript
$sScript .= substr( $this->sScript, $iAux );
if(preg_match('/\b(or|and|xor)\b/i' , $sScript)) {
$sScript = "( ".$sScript." )";
- }
+ }
$sScript = '$bResult = ' . $sScript . ';';
// checks if the syntax is valid or if the variables in that condition has been previously defined
if ($this->validSyntax( $sScript ) && $variableIsDefined) {
@@ -695,7 +695,7 @@ function getEngineDataBaseName ($connection)
* @param type $sql
* @param type $connection
*/
-function executeQueryOci ($sql, $connection, $aParameter = array())
+function executeQueryOci ($sql, $connection, $aParameter = array(), $dbsEncode = "")
{
$aDNS = $connection->getDSN();
@@ -710,12 +710,12 @@ function executeQueryOci ($sql, $connection, $aParameter = array())
if ($flagTns == 0) {
// if not default port
- $conn = oci_connect($sUsername, $sPassword, $sHostspec . ":" . $sPort . "/" . $sDatabse);
+ $conn = oci_connect($sUsername, $sPassword, $sHostspec . ":" . $sPort . "/" . $sDatabse, $dbsEncode);
} else {
- $conn = oci_connect($sUsername, $sPassword, $sHostspec);
+ $conn = oci_connect($sUsername, $sPassword, $sHostspec, $dbsEncode);
}
} else {
- $conn = oci_connect( $sUsername, $sPassword, $sHostspec . "/" . $sDatabse );
+ $conn = oci_connect( $sUsername, $sPassword, $sHostspec . "/" . $sDatabse, $dbsEncode);
}
if (! $conn) {
@@ -786,4 +786,3 @@ function executeQueryOci ($sql, $connection, $aParameter = array())
break;
}
}
-
diff --git a/workflow/engine/classes/class.processes.php b/workflow/engine/classes/class.processes.php
index 792e124e8..3076814c7 100755
--- a/workflow/engine/classes/class.processes.php
+++ b/workflow/engine/classes/class.processes.php
@@ -5085,10 +5085,15 @@ class Processes
$arrayDisabledCode = array();
+ /*----------------------------------********---------------------------------*/
+ if (!PMLicensedFeatures::getSingleton()->verifyfeature("B0oWlBLY3hHdWY0YUNpZEtFQm5CeTJhQlIwN3IxMEkwaG4=")) {
+ //Return
+ return $arrayDisabledCode;
+ }
+
//Set variables
- /*----------------------------------********---------------------------------*/
$cs = new CodeScanner("DISABLED_CODE");
- /*----------------------------------********---------------------------------*/
+
$delimiter = DBAdapter::getStringDelimiter();
//Processes
@@ -5144,7 +5149,7 @@ class Processes
//Check disabled code
$arrayFoundDisabledCode = $cs->checkDisabledCode("SOURCE", $triggerWebbot);
- if (count($arrayFoundDisabledCode) > 0) {
+ if (!empty($arrayFoundDisabledCode)) {
if (!isset($arrayDisabledCode[$processUid])) {
$arrayDisabledCode[$processUid] = array(
"processUid" => $processUid,
@@ -5161,6 +5166,7 @@ class Processes
}
}
}
+ /*----------------------------------********---------------------------------*/
//Return
return $arrayDisabledCode;
diff --git a/workflow/engine/classes/class.wsBase.php b/workflow/engine/classes/class.wsBase.php
index ea7aa685b..3dc7a3163 100755
--- a/workflow/engine/classes/class.wsBase.php
+++ b/workflow/engine/classes/class.wsBase.php
@@ -914,28 +914,42 @@ class wsBase
$aAttachment = null,
$showMessage = true,
$delIndex = 0,
- $config = array()
+ $config = array()
) {
try {
if (!class_exists('System')) {
G::LoadClass('system');
}
- $licensedFeatures = & PMLicensedFeatures::getSingleton();
+
/*----------------------------------********---------------------------------*/
- if (!empty($config) && $licensedFeatures->verifyfeature('nKaNTNuT1MzK0RsMEtXTnYzR09ucHF2WGNuS0hRdDBBak42WXJhNVVOOG1INEVoaU1EaTllbjBBeEJNeG9wRVJ6NmxQelhyVTBvdThzPQ==')) {
- if(!is_array($config)){
- $emailServer = new EmailServer();
- $criteria = $emailServer->getSelAllColumns();
- $criteria->add(EmailServerPeer::MESS_UID, $config, CRITERIA::EQUAL);
- $criteria = EmailServerPeer::doSelectRS($criteria);
- $criteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
- while ($criteria->next()) {
- $row = $criteria->getRow();
- $config = $row;
- $config['SMTPSecure'] = $row['SMTPSECURE'];
+ if (!empty($config)) {
+ $arrayConfigAux = array();
+
+ if (is_array($config)) {
+ if (PMLicensedFeatures::getSingleton()->verifyfeature("nKaNTNuT1MzK0RsMEtXTnYzR09ucHF2WGNuS0hRdDBBak42WXJhNVVOOG1INEVoaU1EaTllbjBBeEJNeG9wRVJ6NmxQelhyVTBvdThzPQ==")) {
+ $arrayConfigAux = $config;
+ }
+ } else {
+ if (PMLicensedFeatures::getSingleton()->verifyfeature("zIKRGpDM3pjcHFsWGplNDN0dTl5bGN3UTNiOWdQU0E5Q05QTksrU1ladWQ0VT0=")) {
+ $emailServer = new \ProcessMaker\BusinessModel\EmailServer();
+
+ $criteria = $emailServer->getEmailServerCriteria();
+
+ $criteria->add(EmailServerPeer::MESS_UID, $config, Criteria::EQUAL);
+
+ $rsCriteria = EmailServerPeer::doSelectRS($criteria);
+ $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+
+ if ($rsCriteria->next()) {
+ $row = $rsCriteria->getRow();
+
+ $arrayConfigAux = $row;
+ $arrayConfigAux["SMTPSecure"] = $row["SMTPSECURE"];
+ }
}
}
- $aSetup = $config;
+
+ $aSetup = (!empty($arrayConfigAux))? $arrayConfigAux : System::getEmailConfiguration();
} else {
/*----------------------------------********---------------------------------*/
$aSetup = System::getEmailConfiguration();
diff --git a/workflow/engine/classes/class.wsTools.php b/workflow/engine/classes/class.wsTools.php
index 944ab1734..1b10c32d3 100755
--- a/workflow/engine/classes/class.wsTools.php
+++ b/workflow/engine/classes/class.wsTools.php
@@ -795,10 +795,11 @@ class workspaceTools
//Insert the first record
$arrayData = array();
- $emailSever = new \ProcessMaker\BusinessModel\EmailServer();
+ $emailSever = new \ProcessMaker\BusinessModel\EmailServer();
+
$emailConfiguration = System::getEmailConfiguration();
- if (count($emailConfiguration) > 0) {
+ if (!empty($emailConfiguration)) {
$arrayData["MESS_ENGINE"] = $emailConfiguration["MESS_ENGINE"];
switch ($emailConfiguration["MESS_ENGINE"]) {
@@ -830,18 +831,16 @@ class workspaceTools
$arrayData = $emailSever->create($arrayData);
} else {
/*----------------------------------********---------------------------------*/
- if (true) {
- //
- } else {
+ if (!PMLicensedFeatures::getSingleton()->verifyfeature("zIKRGpDM3pjcHFsWGplNDN0dTl5bGN3UTNiOWdQU0E5Q05QTksrU1ladWQ0VT0=")) {
/*----------------------------------********---------------------------------*/
- $arrayData["MESS_ENGINE"] = "MAIL";
- $arrayData["MESS_SERVER"] = "";
- $arrayData["MESS_ACCOUNT"] = "";
- $arrayData["MESS_PASSWORD"] = "";
- $arrayData["MAIL_TO"] = "";
- $arrayData["MESS_DEFAULT"] = 1;
+ $arrayData["MESS_ENGINE"] = "MAIL";
+ $arrayData["MESS_SERVER"] = "";
+ $arrayData["MESS_ACCOUNT"] = "";
+ $arrayData["MESS_PASSWORD"] = "";
+ $arrayData["MAIL_TO"] = "";
+ $arrayData["MESS_DEFAULT"] = 1;
- $arrayData = $emailSever->create2($arrayData);
+ $arrayData = $emailSever->create2($arrayData);
/*----------------------------------********---------------------------------*/
}
/*----------------------------------********---------------------------------*/
@@ -1359,7 +1358,7 @@ class workspaceTools
if ( !$flag && !is_null($flagFunction) ) {
//Replace TYPE by ENGINE
$script = file_get_contents($filename);
- $script = preg_replace('/\)TYPE\=|\)\sTYPE\=/', ')ENGINE=', $script);
+ $script = preg_replace('/\)TYPE\=InnoDB|\)\sTYPE\=InnoDB/', ')ENGINE=InnoDB DEFAULT CHARSET=utf8', $script);
file_put_contents($filename,$script);
$aHost = explode(':',$parameters['dbHost']);
$dbHost = $aHost[0];
@@ -1390,7 +1389,7 @@ class workspaceTools
$script = file_get_contents($filename);
//Replace TYPE by ENGINE
- $script = preg_replace('/\)TYPE\=|\)\sTYPE\=/', ')ENGINE=', $script);
+ $script = preg_replace('/\)TYPE\=InnoDB|\)\sTYPE\=InnoDB/', ')ENGINE=InnoDB DEFAULT CHARSET=utf8', $script);
$lines = explode("\n", $script);
$previous = null;
$insert = false;
@@ -2202,5 +2201,28 @@ class workspaceTools
return true;
}
}
+
+ /**
+ * Verify feature
+ *
+ * @param string $featureName Feature name
+ *
+ * return bool Return true if is valid the feature, false otherwise
+ */
+ public function pmLicensedFeaturesVerifyFeature($featureName)
+ {
+ try {
+ $this->initPropel(true);
+
+ $flag = PMLicensedFeatures::getSingleton()->verifyfeature($featureName);
+
+ $this->close();
+
+ //Return
+ return $flag;
+ } catch (Exception $e) {
+ throw $e;
+ }
+ }
}
diff --git a/workflow/engine/classes/model/EmailServer.php b/workflow/engine/classes/model/EmailServer.php
index 8f0a58caf..f961d4f1a 100644
--- a/workflow/engine/classes/model/EmailServer.php
+++ b/workflow/engine/classes/model/EmailServer.php
@@ -1,27 +1,5 @@
addSelectColumn( EmailServerPeer::MESS_UID);
- $criteria->addSelectColumn( EmailServerPeer::MESS_ENGINE);
- $criteria->addSelectColumn( EmailServerPeer::MESS_SERVER);
- $criteria->addSelectColumn( EmailServerPeer::MESS_PORT);
- $criteria->addSelectColumn( EmailServerPeer::MESS_RAUTH);
- $criteria->addSelectColumn( EmailServerPeer::MESS_ACCOUNT);
- $criteria->addSelectColumn( EmailServerPeer::MESS_PASSWORD);
- $criteria->addSelectColumn( EmailServerPeer::MESS_FROM_MAIL);
- $criteria->addSelectColumn( EmailServerPeer::MESS_FROM_NAME);
- $criteria->addSelectColumn( EmailServerPeer::SMTPSECURE);
- $criteria->addSelectColumn( EmailServerPeer::MESS_TRY_SEND_INMEDIATLY);
- $criteria->addSelectColumn( EmailServerPeer::MAIL_TO);
- $criteria->addSelectColumn( EmailServerPeer::MESS_DEFAULT);
- return $criteria;
- }
}
diff --git a/workflow/engine/controllers/designer.php b/workflow/engine/controllers/designer.php
index f0faf373d..d5e76e1bd 100644
--- a/workflow/engine/controllers/designer.php
+++ b/workflow/engine/controllers/designer.php
@@ -61,12 +61,18 @@ class Designer extends Controller
$consolidated = 0;
$enterprise = 0;
+ $distribution = 0;
+
/*----------------------------------********---------------------------------*/
$licensedFeatures = & PMLicensedFeatures::getSingleton();
if ($licensedFeatures->verifyfeature('7TTeDBQeWRoZTZKYjh4eFpYUlRDUUEyVERPU3FxellWank=')) {
$consolidated = 1;
}
$enterprise = 1;
+
+ if ($licensedFeatures->verifyfeature("Jb0N3dSZHVhZ1JNOEFZaElqdm15Y050Wmh5S0FEVEI0ckQ=")) {
+ $distribution = 1;
+ }
/*----------------------------------********---------------------------------*/
$this->setVar('prj_uid', $proUid);
@@ -76,7 +82,7 @@ class Designer extends Controller
$this->setVar('prj_readonly', $proReadOnly);
$this->setVar('credentials', base64_encode(json_encode($clientToken)));
$this->setVar('isDebugMode', $debug);
- $this->setVar('distribution', file_exists(PATH_METHODS . "login/licenseUpdate.php"));
+ $this->setVar("distribution", $distribution);
if ($debug) {
if (! file_exists(PATH_HTML . "lib-dev/pmUI/build.cache")) {
diff --git a/workflow/engine/methods/cases/cases_Step.php b/workflow/engine/methods/cases/cases_Step.php
index 6f436bce3..0aa3f0995 100755
--- a/workflow/engine/methods/cases/cases_Step.php
+++ b/workflow/engine/methods/cases/cases_Step.php
@@ -904,12 +904,16 @@ try {
if ($aFields['TASK'][$sKey]['NEXT_TASK']['TAS_TIMEUNIT'] == 'HOURS') {
$hoursSelected = "selected = 'selected'";
} else {
+ if ($aFields['TASK'][$sKey]['NEXT_TASK']['TAS_TIMEUNIT'] == 'MINUTES') {
+ $minSelected = "selected = 'selected'";
+ }
$daysSelected = "selected = 'selected'";
}
$sAux = '';
$aFields['TASK'][$sKey]['NEXT_TASK']['TAS_TIMEUNIT'] = $sAux;
diff --git a/workflow/engine/methods/emailServer/emailServer.php b/workflow/engine/methods/emailServer/emailServer.php
index 7f65cf1dd..237f9e136 100644
--- a/workflow/engine/methods/emailServer/emailServer.php
+++ b/workflow/engine/methods/emailServer/emailServer.php
@@ -18,5 +18,9 @@ $headPublisher->addContent("emailServer/emailServer"); //Adding a HTML file
$headPublisher->addExtJsScript("emailServer/emailServer", false); //Adding a JavaScript file
$headPublisher->assign("CONFIG", $arrayConfig);
+/*----------------------------------********---------------------------------*/
+$headPublisher->assign("EMAILSERVER_LICENSED", (PMLicensedFeatures::getSingleton()->verifyfeature("zIKRGpDM3pjcHFsWGplNDN0dTl5bGN3UTNiOWdQU0E5Q05QTksrU1ladWQ0VT0="))? 1 : 0);
+/*----------------------------------********---------------------------------*/
+
G::RenderPage("publish", "extJs");
diff --git a/workflow/engine/methods/processes/processes_Import_Ajax.php b/workflow/engine/methods/processes/processes_Import_Ajax.php
index a9c75b6e6..e25d0f3b3 100644
--- a/workflow/engine/methods/processes/processes_Import_Ajax.php
+++ b/workflow/engine/methods/processes/processes_Import_Ajax.php
@@ -26,33 +26,58 @@ use \ProcessMaker\Importer\XmlImporter;
ini_set("max_execution_time", 0);
-if (isset($_FILES["PROCESS_FILENAME"]) &&
- pathinfo($_FILES["PROCESS_FILENAME"]["name"], PATHINFO_EXTENSION) == "pm" &&
- $_FILES["PROCESS_FILENAME"]["error"] == 0
+/*----------------------------------********---------------------------------*/
+if (PMLicensedFeatures::getSingleton()->verifyfeature("B0oWlBLY3hHdWY0YUNpZEtFQm5CeTJhQlIwN3IxMEkwaG4=") &&
+ isset($_FILES["PROCESS_FILENAME"]) &&
+ $_FILES["PROCESS_FILENAME"]["error"] == 0 &&
+ preg_match("/^(?:pm|pmx)$/", pathinfo($_FILES["PROCESS_FILENAME"]["name"], PATHINFO_EXTENSION))
) {
//Check disabled code
$response = array();
try {
- $fh = fopen($_FILES["PROCESS_FILENAME"]["tmp_name"], "rb");
- $content = fread($fh, (int)(fread($fh, 9)));
- $data = unserialize($content);
- fclose($fh);
+ $arrayTrigger = array();
+ $projectTitle = "";
- if (is_object($data) && isset($data->triggers) && is_array($data->triggers) && count($data->triggers) > 0) {
- /*----------------------------------********---------------------------------*/
+ switch (pathinfo($_FILES["PROCESS_FILENAME"]["name"], PATHINFO_EXTENSION)) {
+ case "pm":
+ $fh = fopen($_FILES["PROCESS_FILENAME"]["tmp_name"], "rb");
+ $content = fread($fh, (int)(fread($fh, 9)));
+ $data = unserialize($content);
+ fclose($fh);
+
+ if (is_object($data) && isset($data->triggers) && is_array($data->triggers) && !empty($data->triggers)) {
+ $arrayTrigger = $data->triggers;
+ $projectTitle = $data->process["PRO_TITLE"];
+ }
+ break;
+ case "pmx":
+ $importer = new XmlImporter();
+
+ $data = $importer->load($_FILES["PROCESS_FILENAME"]["tmp_name"]);
+
+ if (isset($data["tables"]["workflow"]["triggers"]) && is_array($data["tables"]["workflow"]["triggers"]) && !empty($data["tables"]["workflow"]["triggers"])) {
+ $arrayTrigger = $data["tables"]["workflow"]["triggers"];
+ $projectTitle = $data["tables"]["bpmn"]["project"][0]["prj_name"];
+ }
+ break;
+ }
+
+ if (!empty($arrayTrigger)) {
G::LoadClass("codeScanner");
$arraySystemConfiguration = System::getSystemConfiguration(PATH_CONFIG . "env.ini");
+
$cs = new CodeScanner((isset($arraySystemConfiguration["enable_blacklist"]) && (int)($arraySystemConfiguration["enable_blacklist"]) == 1)? "DISABLED_CODE" : "");
+
$strFoundDisabledCode = "";
- foreach ($data->triggers as $value) {
+ foreach ($arrayTrigger as $value) {
$arrayTriggerData = $value;
$arrayFoundDisabledCode = $cs->checkDisabledCode("SOURCE", $arrayTriggerData["TRI_WEBBOT"]);
- if (count($arrayFoundDisabledCode) > 0) {
+ if (!empty($arrayFoundDisabledCode)) {
$strCodeAndLine = "";
foreach ($arrayFoundDisabledCode["source"] as $key2 => $value2) {
@@ -66,12 +91,11 @@ if (isset($_FILES["PROCESS_FILENAME"]) &&
if ($strFoundDisabledCode != "") {
$response["status"] = "DISABLED-CODE";
$response["success"] = true;
- $response["message"] = G::LoadTranslation("ID_DISABLED_CODE_PROCESS", array($data->process["PRO_TITLE"], "\n" . $strFoundDisabledCode));
+ $response["message"] = G::LoadTranslation("ID_DISABLED_CODE_PROCESS", array($projectTitle, "\n" . $strFoundDisabledCode));
echo G::json_encode($response);
exit(0);
}
- /*----------------------------------********---------------------------------*/
}
} catch (Exception $e) {
$response["status"] = "ERROR";
@@ -82,6 +106,7 @@ if (isset($_FILES["PROCESS_FILENAME"]) &&
exit(0);
}
}
+/*----------------------------------********---------------------------------*/
if (isset($_FILES["PROCESS_FILENAME"]) &&
pathinfo($_FILES["PROCESS_FILENAME"]["name"], PATHINFO_EXTENSION) == "pmx"
@@ -225,7 +250,7 @@ if ($action == "uploadFileNewProcess") {
//1 -exist process
$result->ExistGroupsInDatabase = ""; //"" -Default
//0 -Dont exist process
- //1 -exist process
+ //1 -exist process
$optionGroupExistInDatabase = isset( $_REQUEST["optionGroupExistInDatabase"] ) ? $_REQUEST["optionGroupExistInDatabase"] : null;
//!Upload file
@@ -254,8 +279,8 @@ if ($action == "uploadFileNewProcess") {
//if file is a .pm file continues normally the importing
if ($processFileType == "pm") {
$oData = $oProcess->getProcessData( $path . $filename );
- }
-
+ }
+
$importer->throwExceptionIfExistsReservedWordsSql($oData);
//!Upload file
@@ -441,5 +466,5 @@ if ($action == "uploadFileNewProcessExist") {
}
echo G::json_encode( $result );
-exit();
+exit(0);
diff --git a/workflow/engine/methods/setup/pluginsChange.php b/workflow/engine/methods/setup/pluginsChange.php
index 1ba948ccb..ce87b591d 100755
--- a/workflow/engine/methods/setup/pluginsChange.php
+++ b/workflow/engine/methods/setup/pluginsChange.php
@@ -52,25 +52,27 @@ if ($handle = opendir( PATH_PLUGINS )) {
if (is_file(PATH_PLUGINS . $pluginName . ".php") && is_dir(PATH_PLUGINS . $pluginName)) {
/*----------------------------------********---------------------------------*/
- //Check disabled code
- G::LoadClass("codeScanner");
- /*----------------------------------********---------------------------------*/
+ if (PMLicensedFeatures::getSingleton()->verifyfeature("B0oWlBLY3hHdWY0YUNpZEtFQm5CeTJhQlIwN3IxMEkwaG4=")) {
+ //Check disabled code
+ G::LoadClass("codeScanner");
- $arraySystemConfiguration = System::getSystemConfiguration(PATH_CONFIG . "env.ini");
- /*----------------------------------********---------------------------------*/
- $cs = new CodeScanner((isset($arraySystemConfiguration["enable_blacklist"]) && (int)($arraySystemConfiguration["enable_blacklist"]) == 1)? "DISABLED_CODE" : "");
-
- $arrayFoundDisabledCode = array_merge($cs->checkDisabledCode("FILE", PATH_PLUGINS . $pluginName . ".php"), $cs->checkDisabledCode("PATH", PATH_PLUGINS . $pluginName));
+ $arraySystemConfiguration = System::getSystemConfiguration(PATH_CONFIG . "env.ini");
- if (count($arrayFoundDisabledCode) > 0) {
- $response = array();
- $response["status"] = "DISABLED-CODE";
- $response["message"] = G::LoadTranslation("ID_DISABLED_CODE_PLUGIN");
+ $cs = new CodeScanner((isset($arraySystemConfiguration["enable_blacklist"]) && (int)($arraySystemConfiguration["enable_blacklist"]) == 1)? "DISABLED_CODE" : "");
- echo G::json_encode($response);
- exit(0);
+ $arrayFoundDisabledCode = array_merge($cs->checkDisabledCode("FILE", PATH_PLUGINS . $pluginName . ".php"), $cs->checkDisabledCode("PATH", PATH_PLUGINS . $pluginName));
+
+ if (!empty($arrayFoundDisabledCode)) {
+ $response = array();
+ $response["status"] = "DISABLED-CODE";
+ $response["message"] = G::LoadTranslation("ID_DISABLED_CODE_PLUGIN");
+
+ echo G::json_encode($response);
+ exit(0);
+ }
}
/*----------------------------------********---------------------------------*/
+
//print "change to ENABLED";
require_once($path);
$details = $oPluginRegistry->getPluginDetails($pluginFile);
diff --git a/workflow/engine/methods/setup/pluginsImportFile.php b/workflow/engine/methods/setup/pluginsImportFile.php
index e5745908d..e391a2358 100755
--- a/workflow/engine/methods/setup/pluginsImportFile.php
+++ b/workflow/engine/methods/setup/pluginsImportFile.php
@@ -238,20 +238,24 @@ try {
unset( $oClass );
}
$res = $tar->extract( $path );
+
/*----------------------------------********---------------------------------*/
- //Check disabled code
- G::LoadClass("codeScanner");
-
- $arraySystemConfiguration = System::getSystemConfiguration(PATH_CONFIG . "env.ini");
- $cs = new CodeScanner((isset($arraySystemConfiguration["enable_blacklist"]) && (int)($arraySystemConfiguration["enable_blacklist"]) == 1)? "DISABLED_CODE" : "");
+ if (PMLicensedFeatures::getSingleton()->verifyfeature("B0oWlBLY3hHdWY0YUNpZEtFQm5CeTJhQlIwN3IxMEkwaG4=")) {
+ //Check disabled code
+ G::LoadClass("codeScanner");
- $arrayFoundDisabledCode = array_merge($cs->checkDisabledCode("FILE", $path . $pluginFile), $cs->checkDisabledCode("PATH", $path . $sClassName));
+ $arraySystemConfiguration = System::getSystemConfiguration(PATH_CONFIG . "env.ini");
- if (count($arrayFoundDisabledCode) > 0) {
- throw new Exception(G::LoadTranslation("ID_DISABLED_CODE_PLUGIN"));
+ $cs = new CodeScanner((isset($arraySystemConfiguration["enable_blacklist"]) && (int)($arraySystemConfiguration["enable_blacklist"]) == 1)? "DISABLED_CODE" : "");
+
+ $arrayFoundDisabledCode = array_merge($cs->checkDisabledCode("FILE", $path . $pluginFile), $cs->checkDisabledCode("PATH", $path . $sClassName));
+
+ if (!empty($arrayFoundDisabledCode)) {
+ throw new Exception(G::LoadTranslation("ID_DISABLED_CODE_PLUGIN"));
+ }
}
/*----------------------------------********---------------------------------*/
-
+
//Check if is enterprise plugin
$sContent = file_get_contents( $path . $pluginFile );
$chain = preg_quote( 'extends enterprisePlugin' );
diff --git a/workflow/engine/methods/triggers/triggers_Save.php b/workflow/engine/methods/triggers/triggers_Save.php
index b7abc6627..7f84e9a8a 100755
--- a/workflow/engine/methods/triggers/triggers_Save.php
+++ b/workflow/engine/methods/triggers/triggers_Save.php
@@ -67,9 +67,7 @@ if (isset( $sfunction ) && $sfunction == 'lookforNameTrigger') {
echo $flag;
} else {
G::LoadClass("processMap");
- /*----------------------------------********---------------------------------*/
- G::LoadClass("codeScanner");
- /*----------------------------------********---------------------------------*/
+
$response = array();
try {
@@ -82,15 +80,20 @@ if (isset( $sfunction ) && $sfunction == 'lookforNameTrigger') {
$value = $_POST;
}
- if (isset($value["TRI_WEBBOT"])) {
- /*----------------------------------********---------------------------------*/
+ /*----------------------------------********---------------------------------*/
+ if (PMLicensedFeatures::getSingleton()->verifyfeature("B0oWlBLY3hHdWY0YUNpZEtFQm5CeTJhQlIwN3IxMEkwaG4=") &&
+ isset($value["TRI_WEBBOT"])
+ ) {
//Check disabled code
+ G::LoadClass("codeScanner");
+
$arraySystemConfiguration = System::getSystemConfiguration(PATH_CONFIG . "env.ini");
+
$cs = new CodeScanner((isset($arraySystemConfiguration["enable_blacklist"]) && (int)($arraySystemConfiguration["enable_blacklist"]) == 1)? "DISABLED_CODE" : "");
$arrayFoundDisabledCode = $cs->checkDisabledCode("SOURCE", $value["TRI_WEBBOT"]);
- if (count($arrayFoundDisabledCode) > 0) {
+ if (!empty($arrayFoundDisabledCode)) {
$strCodeAndLine = "";
foreach ($arrayFoundDisabledCode["source"] as $key => $value) {
@@ -99,8 +102,9 @@ if (isset( $sfunction ) && $sfunction == 'lookforNameTrigger') {
throw new Exception(G::LoadTranslation("ID_DISABLED_CODE_TRIGGER", array($strCodeAndLine)));
}
- /*----------------------------------********---------------------------------*/
}
+ /*----------------------------------********---------------------------------*/
+
$swCreate = true;
if ($value['TRI_UID'] != '') {
$oTrigger->load( $value['TRI_UID'] );
@@ -108,7 +112,7 @@ if (isset( $sfunction ) && $sfunction == 'lookforNameTrigger') {
$oTrigger->create( $value );
$value['TRI_UID'] = $oTrigger->getTriUid();
$swCreate = false;
- }
+ }
$oTrigger->update( $value );
if($swCreate){
//Add Audit Log
diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/CaseScheduler.php b/workflow/engine/src/ProcessMaker/BusinessModel/CaseScheduler.php
index d4a04ac6a..193e4cf33 100644
--- a/workflow/engine/src/ProcessMaker/BusinessModel/CaseScheduler.php
+++ b/workflow/engine/src/ProcessMaker/BusinessModel/CaseScheduler.php
@@ -1010,7 +1010,7 @@ class CaseScheduler
case "UPD":
$arrayDataAux = $caseScheduler->load($caseSchedulerUid);
- $arrayCaseSchedulerData["SCH_END_DATE"] = $arrayData["SCH_END_DATE"];
+ $arrayCaseSchedulerData["SCH_END_DATE"] = ($arrayData["SCH_END_DATE"] != "")? $arrayData["SCH_END_DATE"] : null;
//If the start date has changed then recalculate the next run time
$recalculateDate = ($arrayData["SCH_START_DATE"] == $arrayData["PREV_SCH_START_DATE"])? false : true;
diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Task.php b/workflow/engine/src/ProcessMaker/BusinessModel/Task.php
index d2ac8fba8..1ab9fa4f6 100644
--- a/workflow/engine/src/ProcessMaker/BusinessModel/Task.php
+++ b/workflow/engine/src/ProcessMaker/BusinessModel/Task.php
@@ -155,7 +155,8 @@ class Task
"TAS_SELFSERVICE_TIMEOUT" => $arrayDataAux["TAS_SELFSERVICE_TIMEOUT"],
"TAS_SELFSERVICE_TIME" => $arrayDataAux["TAS_SELFSERVICE_TIME"],
"TAS_SELFSERVICE_TIME_UNIT" => $arrayDataAux["TAS_SELFSERVICE_TIME_UNIT"],
- "TAS_SELFSERVICE_TRIGGER_UID" => $arrayDataAux["TAS_SELFSERVICE_TRIGGER_UID"]
+ "TAS_SELFSERVICE_TRIGGER_UID" => $arrayDataAux["TAS_SELFSERVICE_TRIGGER_UID"],
+ "TAS_SELFSERVICE_EXECUTION" => $arrayDataAux["TAS_SELFSERVICE_EXECUTION"]
),
$keyCase
);
@@ -277,6 +278,7 @@ class Task
$this->unsetVar($arrayProperty, "TAS_SELFSERVICE_TIME");
$this->unsetVar($arrayProperty, "TAS_SELFSERVICE_TIME_UNIT");
$this->unsetVar($arrayProperty, "TAS_SELFSERVICE_TRIGGER_UID");
+ $this->unsetVar($arrayProperty, "TAS_SELFSERVICE_EXECUTION");
break;
case 'EVALUATE':
if (empty($arrayProperty["TAS_ASSIGN_VARIABLE"])) {
@@ -287,6 +289,7 @@ class Task
$this->unsetVar($arrayProperty, "TAS_SELFSERVICE_TIME");
$this->unsetVar($arrayProperty, "TAS_SELFSERVICE_TIME_UNIT");
$this->unsetVar($arrayProperty, "TAS_SELFSERVICE_TRIGGER_UID");
+ $this->unsetVar($arrayProperty, "TAS_SELFSERVICE_EXECUTION");
break;
case 'SELF_SERVICE':
case 'SELF_SERVICE_EVALUATE':
@@ -312,10 +315,14 @@ class Task
if (empty($arrayProperty["TAS_SELFSERVICE_TRIGGER_UID"])) {
throw (new \Exception("Invalid value specified for 'tas_selfservice_trigger_uid'"));
}
+ if (empty($arrayProperty["TAS_SELFSERVICE_EXECUTION"])) {
+ throw (new \Exception("Invalid value specified for 'tas_selfservice_execution'"));
+ }
} else {
$this->unsetVar($arrayProperty, "TAS_SELFSERVICE_TIME");
$this->unsetVar($arrayProperty, "TAS_SELFSERVICE_TIME_UNIT");
$this->unsetVar($arrayProperty, "TAS_SELFSERVICE_TRIGGER_UID");
+ $this->unsetVar($arrayProperty, "TAS_SELFSERVICE_EXECUTION");
}
break;
}
@@ -325,7 +332,7 @@ class Task
if (!isset($arrayProperty["TAS_DURATION"])) {
throw (new \Exception("Invalid value specified for 'tas_duration'"));
}
- $valuesTimeUnit = array('DAYS','HOURS');
+ $valuesTimeUnit = array('DAYS','HOURS','MINUTES');
if ((!isset($arrayProperty["TAS_TIMEUNIT"])) ||
(!in_array($arrayProperty["TAS_TIMEUNIT"], $valuesTimeUnit))) {
throw (new \Exception("Invalid value specified for 'tas_timeunit'"));
diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Trigger.php b/workflow/engine/src/ProcessMaker/BusinessModel/Trigger.php
index 1ee096271..d940fe144 100644
--- a/workflow/engine/src/ProcessMaker/BusinessModel/Trigger.php
+++ b/workflow/engine/src/ProcessMaker/BusinessModel/Trigger.php
@@ -181,6 +181,31 @@ class Trigger
}
}
+ /*----------------------------------********---------------------------------*/
+ if (\PMLicensedFeatures::getSingleton()->verifyfeature("B0oWlBLY3hHdWY0YUNpZEtFQm5CeTJhQlIwN3IxMEkwaG4=") &&
+ isset($dataTrigger["TRI_WEBBOT"])
+ ) {
+ //Check disabled code
+ \G::LoadClass("codeScanner");
+
+ $arraySystemConfiguration = \System::getSystemConfiguration(PATH_CONFIG . "env.ini");
+
+ $cs = new \CodeScanner((isset($arraySystemConfiguration["enable_blacklist"]) && (int)($arraySystemConfiguration["enable_blacklist"]) == 1)? "DISABLED_CODE" : "");
+
+ $arrayFoundDisabledCode = $cs->checkDisabledCode("SOURCE", $dataTrigger["TRI_WEBBOT"]);
+
+ if (!empty($arrayFoundDisabledCode)) {
+ $strCodeAndLine = "";
+
+ foreach ($arrayFoundDisabledCode["source"] as $key => $value) {
+ $strCodeAndLine .= (($strCodeAndLine != "")? ", " : "") . \G::LoadTranslation("ID_DISABLED_CODE_CODE_AND_LINE", array($key, implode(", ", $value)));
+ }
+
+ throw new \Exception(\G::LoadTranslation("ID_DISABLED_CODE_TRIGGER", array($strCodeAndLine)));
+ }
+ }
+ /*----------------------------------********---------------------------------*/
+
$dataTrigger['PRO_UID'] = $sProcessUID;
$oTrigger = new \Triggers();
if ($create) {
diff --git a/workflow/engine/src/ProcessMaker/Importer/Importer.php b/workflow/engine/src/ProcessMaker/Importer/Importer.php
index acfd02087..f45772876 100755
--- a/workflow/engine/src/ProcessMaker/Importer/Importer.php
+++ b/workflow/engine/src/ProcessMaker/Importer/Importer.php
@@ -27,7 +27,7 @@ abstract class Importer
const IMPORT_STAT_INVALID_SOURCE_FILE = 102; //Error, Invalid file type or the file have corrupt data.
const IMPORT_STAT_GROUP_ALREADY_EXISTS = 105; //Error, Group already exists.
- public abstract function load();
+ public abstract function load($filename = null);
/**
* Verify if exists reserved words SQL
diff --git a/workflow/engine/src/ProcessMaker/Importer/XmlImporter.php b/workflow/engine/src/ProcessMaker/Importer/XmlImporter.php
index a3b2eff4b..61fa0a1a9 100644
--- a/workflow/engine/src/ProcessMaker/Importer/XmlImporter.php
+++ b/workflow/engine/src/ProcessMaker/Importer/XmlImporter.php
@@ -24,9 +24,13 @@ class XmlImporter extends Importer
* )
* @throws \Exception
*/
- public function load()
+ public function load($filename = null)
{
- $this->dom->load($this->filename);
+ if (!is_null($filename) && !file_exists($filename)) {
+ throw new \Exception(\G::LoadTranslation("ID_INVALID_FILE"));
+ }
+
+ $this->dom->load((is_null($filename))? $this->filename : $filename);
$this->root = $this->dom->documentElement;
// validate version
diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Project/Activity.php b/workflow/engine/src/ProcessMaker/Services/Api/Project/Activity.php
index 34d05b7d9..a01bd3066 100644
--- a/workflow/engine/src/ProcessMaker/Services/Api/Project/Activity.php
+++ b/workflow/engine/src/ProcessMaker/Services/Api/Project/Activity.php
@@ -258,7 +258,7 @@ class ActivityPropertiesStructure
public $tas_selfservice_timeout;
/**
- * @var string {@from body} {@choice DAYS,,HOURS}
+ * @var string {@from body} {@choice DAYS,,HOURS,MINUTES}
*/
public $tas_selfservice_time_unit;
@@ -267,6 +267,11 @@ class ActivityPropertiesStructure
*/
public $tas_selfservice_trigger_uid;
+ /**
+ * @var string {@from body} {@choice EVERY_TIME,ONCE}
+ */
+ public $tas_selfservice_execution;
+
/**
* @var string {@from body} {@choice TRUE,FALSE}
*/
diff --git a/workflow/engine/templates/designer/index.html b/workflow/engine/templates/designer/index.html
index ff2360939..cc0ba21ec 100644
--- a/workflow/engine/templates/designer/index.html
+++ b/workflow/engine/templates/designer/index.html
@@ -151,12 +151,16 @@
-
-
+
+
-
-
+
+
+
+
+
+
@@ -167,5 +171,5 @@
-
+