diff --git a/gulliver/system/class.bootstrap.php b/gulliver/system/class.bootstrap.php
index bbf34e800..485af62d3 100644
--- a/gulliver/system/class.bootstrap.php
+++ b/gulliver/system/class.bootstrap.php
@@ -2949,6 +2949,7 @@ class Bootstrap
$registerLogger = &MonologProvider::getSingleton($channel, $fileLog);
$registerLogger->addLog($level, $message, $context);
}
+
/**
* Get the default information from the context
*
@@ -2979,7 +2980,7 @@ class Bootstrap
}
/**
- * Record the action of executing a php file or attempting to upload a php
+ * Record the action of executing a php file or attempting to upload a php
* file in server.
* @param type $channel
* @param type $level
@@ -2999,5 +3000,26 @@ class Bootstrap
\Bootstrap::registerMonolog($channel, $level, $message, $context, $sysSys, 'processmaker.log');
}
+ /*
+ * Set the constant to related the Workspaces
+ *
+ * @param string $workspace
+ *
+ * @return void
+ */
+ public static function setConstantsRelatedWs($wsName = null) {
+ if (!defined('SYS_SYS') && !is_null($wsName)) {
+ //If SYS_SYS exists, is not update with $wsName
+ define('SYS_SYS', $wsName);
+ }
+ if (defined('SYS_SYS') && !defined('PATH_DATA_SITE')) {
+ define('PATH_DATA_SITE', PATH_DATA . 'sites' . PATH_SEP . SYS_SYS . PATH_SEP);
+ }
+ if (defined('PATH_DATA_SITE') && !defined('PATH_WORKSPACE')) {
+ define('PATH_WORKSPACE', PATH_DATA_SITE);
+ }
+ set_include_path(get_include_path() . PATH_SEPARATOR . PATH_DATA_SITE);
+ }
+
}
diff --git a/workflow/engine/bin/tasks/cliWorkspaces.php b/workflow/engine/bin/tasks/cliWorkspaces.php
index bd7890d23..d151e23b0 100644
--- a/workflow/engine/bin/tasks/cliWorkspaces.php
+++ b/workflow/engine/bin/tasks/cliWorkspaces.php
@@ -860,21 +860,21 @@ function run_check_workspace_disabled_code($args, $opts)
}
function migrate_new_cases_lists($command, $args, $opts) {
- G::LoadSystem('inputfilter');
- $filter = new InputFilter();
- $opts = $filter->xssFilterHard($opts);
- $args = $filter->xssFilterHard($args);
- $lang = array_key_exists("lang", $opts) ? $opts['lang'] : 'en';
- $workspaces = get_workspaces_from_args($args);
- foreach ($workspaces as $workspace) {
- print_r("Upgrading database in " . pakeColor::colorize($workspace->name, "INFO") . "\n");
- try {
- $workspace->migrateList($workspace->name, true, $lang);
- echo "> List tables are done\n";
- } catch (Exception $e) {
- G::outRes( "> Error: ".CLI::error($e->getMessage()) . "\n" );
+ G::LoadSystem('inputfilter');
+ $filter = new InputFilter();
+ $opts = $filter->xssFilterHard($opts);
+ $args = $filter->xssFilterHard($args);
+ $lang = array_key_exists("lang", $opts) ? $opts['lang'] : 'en';
+ $workspaces = get_workspaces_from_args($args);
+ foreach ($workspaces as $workspace) {
+ print_r("Upgrading database in " . pakeColor::colorize($workspace->name, "INFO") . "\n");
+ try {
+ $workspace->migrateList($workspace->name, true, $lang);
+ echo "> List tables are done\n";
+ } catch (Exception $e) {
+ G::outRes( "> Error: ".CLI::error($e->getMessage()) . "\n" );
+ }
}
- }
}
function migrate_counters($command, $args) {
diff --git a/workflow/engine/classes/class.pmScript.php b/workflow/engine/classes/class.pmScript.php
index 9463a1016..72ffa7bc7 100644
--- a/workflow/engine/classes/class.pmScript.php
+++ b/workflow/engine/classes/class.pmScript.php
@@ -52,10 +52,8 @@ function __autoload ($sClassName)
}
}
-if (!defined('PATH_WORKSPACE')) {
- define('PATH_WORKSPACE', PATH_DATA_SITE);
-
- set_include_path(get_include_path() . PATH_SEPARATOR . PATH_WORKSPACE);
+if (defined('SYS_SYS') && (!defined('PATH_DATA_SITE') || !defined('PATH_WORKSPACE'))) {
+ Bootstrap::setConstantsRelatedWs(SYS_SYS);
}
//Start - Custom functions
diff --git a/workflow/engine/classes/class.processMap.php b/workflow/engine/classes/class.processMap.php
index 53ca45d81..e25409106 100644
--- a/workflow/engine/classes/class.processMap.php
+++ b/workflow/engine/classes/class.processMap.php
@@ -877,7 +877,7 @@ class processMap
public function getStepTriggersCriteria($sStepUID = '', $sTaskUID = '', $sType = '')
{
- $imgEx = "

";
+ $imgEx = '
';
$imgNoEx = '';
$oCriteria = new Criteria('workflow');
$oCriteria->addAsColumn('CON_VALUE', TriggersPeer::TRI_TITLE);
@@ -886,7 +886,7 @@ class processMap
$oCriteria->addAsColumn('TRI_LOCATE_WEBBOT_PARAM', '(SELECT LOCATE(MD5(' . TriggersPeer::TRI_WEBBOT . '),' . TriggersPeer::TRI_PARAM . ') FROM ' . TriggersPeer::TABLE_NAME . ' WHERE ' . TriggersPeer::TRI_UID . '=' . StepTriggerPeer::TRI_UID . ' )');
$oCriteria->addSelectColumn(StepTriggerPeer::ST_TYPE);
/*----------------------------------********---------------------------------*/
- $oCriteria->addSelectColumn('IF ('.StepTriggerPeer::ST_CONDITION.' = "", "'.$imgNoEx.'", "'.$imgEx.'") AS CONDITION_SET');
+ $oCriteria->addSelectColumn('IF (' . StepTriggerPeer::ST_CONDITION . ' = \'\', \'' . $imgNoEx . '\', \'' . $imgEx . '\') AS CONDITION_SET');
/*----------------------------------********---------------------------------*/
$oCriteria->addSelectColumn(StepTriggerPeer::ST_POSITION);
$oCriteria->addSelectColumn(TriggersPeer::TRI_TITLE);
diff --git a/workflow/engine/classes/class.processes.php b/workflow/engine/classes/class.processes.php
index dde6e8566..2deceda1e 100644
--- a/workflow/engine/classes/class.processes.php
+++ b/workflow/engine/classes/class.processes.php
@@ -2203,7 +2203,7 @@ class Processes
foreach (array("PRO_TRI_DELETED", "PRO_TRI_CANCELED", "PRO_TRI_PAUSED", "PRO_TRI_REASSIGNED") as $value) {
$key = $value;
- if (isset($map[$oData->process[$key]])) {
+ if (isset($oData->process[$key]) && isset($map[$oData->process[$key]])) {
$oData->process[$key] = $map[$oData->process[$key]];
}
}
@@ -5073,9 +5073,22 @@ class Processes
$fileContent = fread($fp, $fsContent); //reading string $XmlContent
$newFileName = $pathMailTem . $sFileName;
$bytesSaved = @file_put_contents($newFileName, $fileContent);
- if ($bytesSaved != $fsContent) {
+ if($bytesSaved === false){
throw (new Exception('Error writing MailTemplate file in directory : ' . $pathMailTem));
}
+ if ($bytesSaved != $fsContent) {
+ $channel = "writingMailTemplate";
+ $context = \Bootstrap::getDefaultContextLog();
+ $context['action'] = $channel;
+ if (defined("SYS_CURRENT_URI") && defined("SYS_CURRENT_PARMS")) {
+ $context['url'] = SYS_CURRENT_URI . '?' . SYS_CURRENT_PARMS;
+ }
+ $context['usrUid'] = isset($_SESSION['USER_LOGGED']) ? $_SESSION['USER_LOGGED'] : '';
+ $sysSys = defined("SYS_SYS") ? SYS_SYS : "Undefined";
+ $message = 'The imported template has a number of byes different than the original template, please verify if the file \'' . $newFileName . '\' is correct.';
+ $level = 400;
+ Bootstrap::registerMonolog($channel, $level, $message, $context, $sysSys, 'processmaker.log');
+ }
}
}
}
diff --git a/workflow/engine/classes/class.wsTools.php b/workflow/engine/classes/class.wsTools.php
index 95267e925..7b5047092 100644
--- a/workflow/engine/classes/class.wsTools.php
+++ b/workflow/engine/classes/class.wsTools.php
@@ -277,6 +277,9 @@ class workspaceTools
$this->resetDBDiff['DB_USER'] = $dbName;
$value = $dbName;
}
+ if (array_search($key, array('DB_PASS', 'DB_RBAC_PASS', 'DB_REPORT_PASS')) !== false && !empty($this->dbGrantUserPassword)) {
+ $value = $this->dbGrantUserPassword;
+ }
return $matches[1] . $value . $matches[4];
}
@@ -305,6 +308,7 @@ class workspaceTools
$this->unify = $unify;
if ($resetDBNames) {
$this->dbGrantUser = uniqid('wf_');
+ $this->dbGrantUserPassword = G::generate_password(12, "luns", ".");
}
@@ -946,7 +950,7 @@ class workspaceTools
}
}
}
-
+ $workspaceSchema = $this->getSchema($rbac);
$changes = System::compareSchema($workspaceSchema, $schema);
$changed = (count($changes['tablesToAdd']) > 0 || count($changes['tablesToAlter']) > 0 || count($changes['tablesWithNewIndex']) > 0 || count($changes['tablesToAlterIndex']) > 0);
@@ -1349,16 +1353,12 @@ class workspaceTools
throw new Exception("Unable to retrieve users: " . mysql_error());
}
$users = mysql_num_rows($result);
- if ($users != 0) {
- $result = mysql_query("DROP USER '$username'@'$hostname'");
- if ($result === false) {
- throw new Exception("Unable to drop user: " . mysql_error());
- }
- }
+ if ($users === 0) {
CLI::logging("Creating user $username for $hostname\n");
- $result = mysql_query("CREATE USER '$username'@'$hostname' IDENTIFIED BY '$password'");
- if ($result === false) {
- throw new Exception("Unable to create user $username: " . mysql_error());
+ $result = mysql_query("CREATE USER '$username'@'$hostname' IDENTIFIED BY '$password'");
+ if ($result === false) {
+ throw new Exception("Unable to create user $username: " . mysql_error());
+ }
}
$result = mysql_query("GRANT ALL ON $database.* TO '$username'@'$hostname'");
if ($result === false) {
@@ -1752,8 +1752,8 @@ class workspaceTools
CLI::logging("+> Restoring database {$db->name} to $dbName\n");
$versionBackupEngine = (isset($metadata->backupEngineVersion)) ? $metadata->backupEngineVersion : 1;
$workspace->executeSQLScript($dbName, "$tempDirectory/{$db->name}.sql", $aParameters, $versionBackupEngine);
- $workspace->createDBUser($dbUser, $db->pass, "localhost", $dbName);
- $workspace->createDBUser($dbUser, $db->pass, "%", $dbName);
+ $workspace->createDBUser($dbUser, ($workspace->dbGrantUserPassword != '' ? $workspace->dbGrantUserPassword : $db->pass), "localhost", $dbName);
+ $workspace->createDBUser($dbUser, ($workspace->dbGrantUserPassword != '' ? $workspace->dbGrantUserPassword : $db->pass), "%", $dbName);
}
}
@@ -2524,6 +2524,7 @@ class workspaceTools
$delaycriteria->addSelectColumn(AppDelayPeer::APP_UID);
$delaycriteria->addSelectColumn(AppDelayPeer::PRO_UID);
$delaycriteria->addSelectColumn(AppDelayPeer::APP_DEL_INDEX);
+ $delaycriteria->addSelectColumn(AppDelayPeer::APP_DISABLE_ACTION_DATE);
$delaycriteria->addSelectColumn(AppCacheViewPeer::APP_NUMBER);
$delaycriteria->addSelectColumn(AppCacheViewPeer::USR_UID);
$delaycriteria->addSelectColumn(AppCacheViewPeer::APP_STATUS);
@@ -2539,6 +2540,7 @@ class workspaceTools
$row = $rsCriteria->getRow();
$data = $row;
$data["DEL_INDEX"] = $row["APP_DEL_INDEX"];
+ $data["APP_RESTART_DATE"] = $row["APP_DISABLE_ACTION_DATE"];
$listPaused = new ListPaused();
$listPaused ->remove($row["APP_UID"],$row["APP_DEL_INDEX"],$data);
$listPaused->setDeleted(false);
diff --git a/workflow/engine/methods/processes/processes_Import_Ajax.php b/workflow/engine/methods/processes/processes_Import_Ajax.php
index 64386742a..f5b4aae9f 100644
--- a/workflow/engine/methods/processes/processes_Import_Ajax.php
+++ b/workflow/engine/methods/processes/processes_Import_Ajax.php
@@ -498,7 +498,7 @@ if ($action == "uploadFileNewProcess") {
$affectedGroups = implode(', ', $affectedGroups);
}
}
- $result->affectedGroups = $affectedGroups;
+ $result->affectedGroups = empty($affectedGroups) ? "" : $affectedGroups;
//Add Audit Log
$process = new Process();
@@ -641,7 +641,7 @@ if ($action == "uploadFileNewProcessExist") {
$affectedGroups = implode(', ', $affectedGroups);
}
}
- $result->affectedGroups = $affectedGroups;
+ $result->affectedGroups = empty($affectedGroups) ? "" : $affectedGroups;
//!data ouput
} catch (Exception $e) {
diff --git a/workflow/engine/templates/processes/main.js b/workflow/engine/templates/processes/main.js
index 66765f905..d5630ec97 100644
--- a/workflow/engine/templates/processes/main.js
+++ b/workflow/engine/templates/processes/main.js
@@ -1636,7 +1636,9 @@ importProcessExistGroup = function()
} else {
Ext.getCmp('objectsToImport').setValue("");
Ext.getCmp('importProcessExistGroupWindow').close();
- Ext.getCmp('importProcessExistProcessWindow').close();
+ if (Ext.getCmp('importProcessExistProcessWindow')) {
+ Ext.getCmp('importProcessExistProcessWindow').close();
+ }
Ext.getCmp('importProcessWindow').close();
Ext.MessageBox.show({
title: _('ID_ERROR'),