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/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/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.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.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.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..27131d0a0 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);
/*----------------------------------********---------------------------------*/
}
/*----------------------------------********---------------------------------*/
@@ -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/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/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/templates/emailServer/emailServer.js b/workflow/engine/templates/emailServer/emailServer.js
index 540afe30b..91bed9ee9 100644
--- a/workflow/engine/templates/emailServer/emailServer.js
+++ b/workflow/engine/templates/emailServer/emailServer.js
@@ -40,19 +40,18 @@ emailServer.application = {
/*----------------------------------********---------------------------------*/
if (Ext.getCmp("chkEmailServerDefault").checked) {
- /*----------------------------------********---------------------------------*/
+ /*----------------------------------********---------------------------------*/
var emailDefault = 1;
- /*----------------------------------********---------------------------------*/
+ /*----------------------------------********---------------------------------*/
} else {
var emailDefault = 0;
}
/*----------------------------------********---------------------------------*/
switch (option) {
-
case "INS":
var typeEmailEngine = Ext.getCmp("cboEmailEngine").getValue();
-
+
if (typeEmailEngine == "PHPMAILER") {
var rdoGrpOption = Ext.getCmp("rdoGrpSmtpSecure").getValue();
@@ -301,7 +300,7 @@ emailServer.application = {
emailServerSetMailTo(Ext.getCmp("chkSendTestMail").checked);
Ext.getCmp("txtMailTo").setValue(record.get("MAIL_TO"));
-
+
/*----------------------------------********---------------------------------*/
if (parseInt(record.get("MESS_DEFAULT")) == 1) {
/*----------------------------------********---------------------------------*/
@@ -311,7 +310,7 @@ emailServer.application = {
Ext.getCmp("chkEmailServerDefault").setValue(false);
}
/*----------------------------------********---------------------------------*/
-
+
winData.setTitle(_("ID_EMAIL_SERVER_EDIT"));
winData.setDisabled(false);
winData.show();
@@ -610,7 +609,7 @@ emailServer.application = {
}
});
-
+
var txtAccountFrom = new Ext.form.TextField({
id: "txtAccountFrom",
name: "txtAccountFrom",
@@ -619,7 +618,7 @@ emailServer.application = {
vtype: "emailUrlValidation"
});
-
+
var txtPassword = new Ext.form.TextField({
id: "txtPassword",
name: "txtPassword",
@@ -682,14 +681,14 @@ emailServer.application = {
hidden: true
});
-
+
var chkEmailServerDefault = new Ext.form.Checkbox({
id: "chkEmailServerDefault",
name: "chkEmailServerDefault",
boxLabel: _("ID_EMAIL_SERVER_THIS_CONFIGURATION_IS_DEFAULT")
});
-
+
var btnTest = new Ext.Action({
id: "btnTest",
text: _("ID_TEST"),
@@ -1049,10 +1048,14 @@ emailServer.application = {
var arrayAux1 = [];
/*----------------------------------********---------------------------------*/
- arrayAux1.push(btnNew);
- arrayAux1.push("-");
+ if (EMAILSERVER_LICENSED) {
+ arrayAux1.push(btnNew);
+ arrayAux1.push("-");
+ }
/*----------------------------------********---------------------------------*/
+
arrayAux1.push(btnEdit);
+
/*----------------------------------********---------------------------------*/
arrayAux1.push(btnDelete);
arrayAux1.push("->");
@@ -1102,6 +1105,7 @@ emailServer.application = {
var arrayAux2 = [];
arrayAux2.push(btnEdit);
+
/*----------------------------------********---------------------------------*/
arrayAux2.push(btnDelete);
/*----------------------------------********---------------------------------*/
diff --git a/workflow/engine/templates/enterprise/addonsStore.js b/workflow/engine/templates/enterprise/addonsStore.js
index c181c1422..15b0bedef 100644
--- a/workflow/engine/templates/enterprise/addonsStore.js
+++ b/workflow/engine/templates/enterprise/addonsStore.js
@@ -1154,7 +1154,7 @@ Ext.onReady(function() {
store: addonsStore,
defaultType: "displayfield",
padding: 5,
- autoHeight : true,
+ height: 335,
disabled: !licensed,
columns: [
expander,
@@ -1605,4 +1605,3 @@ Ext.onReady(function() {
addonsFeaturesStore.load();
}
});
-
diff --git a/workflow/public_html/images/logopm3.png b/workflow/public_html/images/logopm3.png
index df5f03fe0..0bf3671d1 100644
Binary files a/workflow/public_html/images/logopm3.png and b/workflow/public_html/images/logopm3.png differ
diff --git a/workflow/public_html/images/processmaker.logo.jpg b/workflow/public_html/images/processmaker.logo.jpg
index 9d028cf3e..755739faf 100755
Binary files a/workflow/public_html/images/processmaker.logo.jpg and b/workflow/public_html/images/processmaker.logo.jpg differ